Compare commits

...
Author SHA1 Message Date
henryruhs b6a1adb7a5 add groups to capabilities 2026-07-02 20:39:09 +02:00
17 changed files with 175 additions and 84 deletions
+1 -1
View File
@@ -15,6 +15,6 @@ async def get_capabilities(request : Request) -> JSONResponse:
'image': facefusion.choices.image_formats, 'image': facefusion.choices.image_formats,
'video': facefusion.choices.video_formats 'video': facefusion.choices.video_formats
}, },
'arguments': capability_store.get_api_capability_set() 'arguments': capability_store.get_api_capability_group()
} }
return JSONResponse(capabilities, status_code = HTTP_200_OK) return JSONResponse(capabilities, status_code = HTTP_200_OK)
+14 -3
View File
@@ -1,7 +1,7 @@
from argparse import Action from argparse import Action
from typing import Dict, List from typing import Dict, List
from facefusion.types import CapabilitySet, CapabilityStore, Scope from facefusion.types import CapabilityGroup, CapabilitySet, CapabilityStore, Group, Scope
CAPABILITY_STORE : CapabilityStore =\ CAPABILITY_STORE : CapabilityStore =\
{ {
@@ -11,6 +11,16 @@ CAPABILITY_STORE : CapabilityStore =\
} }
def get_api_capability_group() -> CapabilityGroup:
capability_group : CapabilityGroup = {}
for name, value in CAPABILITY_STORE.get('api').items():
for group in value.get('groups'):
capability_group.setdefault(group, {})[name] = value
return capability_group
def get_api_capability_set() -> Dict[str, CapabilitySet]: def get_api_capability_set() -> Dict[str, CapabilitySet]:
return CAPABILITY_STORE.get('api') return CAPABILITY_STORE.get('api')
@@ -35,11 +45,12 @@ def get_sys_arguments() -> List[str]:
return list(get_sys_capability_set().keys()) return list(get_sys_capability_set().keys())
def register_capability_set(actions : List[Action], scopes : List[Scope]) -> None: def register_capability_set(actions : List[Action], scopes : List[Scope], groups : List[Group]) -> None:
for action in actions: for action in actions:
value : CapabilitySet =\ value : CapabilitySet =\
{ {
'default': action.default 'default': action.default,
'groups': groups
} }
if action.choices: if action.choices:
@@ -142,7 +142,8 @@ def register_args(program : ArgumentParser) -> None:
metavar = create_int_metavar(age_modifier_choices.age_modifier_direction_range) metavar = create_int_metavar(age_modifier_choices.age_modifier_direction_range)
) )
], ],
scopes = [ 'api', 'cli' ] scopes = [ 'api', 'cli' ],
groups = [ 'age_modifier' ]
) )
@@ -519,7 +519,8 @@ def register_args(program : ArgumentParser) -> None:
nargs = '+' nargs = '+'
) )
], ],
scopes = [ 'api', 'cli' ] scopes = [ 'api', 'cli' ],
groups = [ 'background_remover' ]
) )
@@ -294,7 +294,8 @@ def register_args(program : ArgumentParser) -> None:
metavar = create_int_metavar(deep_swapper_choices.deep_swapper_morph_range) metavar = create_int_metavar(deep_swapper_choices.deep_swapper_morph_range)
) )
], ],
scopes = [ 'api', 'cli' ] scopes = [ 'api', 'cli' ],
groups = [ 'deep_swapper' ]
) )
@@ -125,7 +125,8 @@ def register_args(program : ArgumentParser) -> None:
metavar = 'EXPRESSION_RESTORER_AREAS' metavar = 'EXPRESSION_RESTORER_AREAS'
) )
], ],
scopes = [ 'api', 'cli' ] scopes = [ 'api', 'cli' ],
groups = [ 'expression_restorer' ]
) )
@@ -44,7 +44,8 @@ def register_args(program : ArgumentParser) -> None:
metavar = 'FACE_DEBUGGER_ITEMS' metavar = 'FACE_DEBUGGER_ITEMS'
) )
], ],
scopes = [ 'api', 'cli' ] scopes = [ 'api', 'cli' ],
groups = [ 'face_debugger' ]
) )
@@ -251,7 +251,8 @@ def register_args(program : ArgumentParser) -> None:
metavar = create_float_metavar(face_editor_choices.face_editor_head_roll_range) metavar = create_float_metavar(face_editor_choices.face_editor_head_roll_range)
) )
], ],
scopes = [ 'api', 'cli' ] scopes = [ 'api', 'cli' ],
groups = [ 'face_editor' ]
) )
@@ -319,7 +319,8 @@ def register_args(program : ArgumentParser) -> None:
metavar = create_float_metavar(face_enhancer_choices.face_enhancer_weight_range) metavar = create_float_metavar(face_enhancer_choices.face_enhancer_weight_range)
) )
], ],
scopes = [ 'api', 'cli' ] scopes = [ 'api', 'cli' ],
groups = [ 'face_enhancer' ]
) )
@@ -537,7 +537,8 @@ def register_args(program : ArgumentParser) -> None:
choices = face_swapper_choices.face_swapper_models choices = face_swapper_choices.face_swapper_models
) )
], ],
scopes = [ 'api', 'cli' ] scopes = [ 'api', 'cli' ],
groups = [ 'face_swapper' ]
) )
known_args, _ = program.parse_known_args() known_args, _ = program.parse_known_args()
face_swapper_pixel_boost_choices = face_swapper_choices.face_swapper_set.get(known_args.face_swapper_model) face_swapper_pixel_boost_choices = face_swapper_choices.face_swapper_set.get(known_args.face_swapper_model)
@@ -557,7 +558,8 @@ def register_args(program : ArgumentParser) -> None:
choices = face_swapper_choices.face_swapper_weight_range choices = face_swapper_choices.face_swapper_weight_range
) )
], ],
scopes = [ 'api', 'cli' ] scopes = [ 'api', 'cli' ],
groups = [ 'face_swapper' ]
) )
@@ -211,7 +211,8 @@ def register_args(program : ArgumentParser) -> None:
metavar = create_int_metavar(frame_colorizer_choices.frame_colorizer_blend_range) metavar = create_int_metavar(frame_colorizer_choices.frame_colorizer_blend_range)
) )
], ],
scopes = [ 'api', 'cli' ] scopes = [ 'api', 'cli' ],
groups = [ 'frame_colorizer' ]
) )
@@ -599,7 +599,8 @@ def register_args(program : ArgumentParser) -> None:
metavar = create_int_metavar(frame_enhancer_choices.frame_enhancer_blend_range) metavar = create_int_metavar(frame_enhancer_choices.frame_enhancer_blend_range)
) )
], ],
scopes = [ 'api', 'cli' ] scopes = [ 'api', 'cli' ],
groups = [ 'frame_enhancer' ]
) )
@@ -151,7 +151,8 @@ def register_args(program : ArgumentParser) -> None:
metavar = create_float_metavar(lip_syncer_choices.lip_syncer_weight_range) metavar = create_float_metavar(lip_syncer_choices.lip_syncer_weight_range)
) )
], ],
scopes = [ 'api', 'cli' ] scopes = [ 'api', 'cli' ],
groups = [ 'lip_syncer' ]
) )
+120 -60
View File
@@ -32,7 +32,8 @@ def create_config_path_program() -> ArgumentParser:
default = 'facefusion.ini' default = 'facefusion.ini'
) )
], ],
scopes = [ 'cli' ] scopes = [ 'cli' ],
groups = [ 'paths' ]
) )
apply_config_path(program) apply_config_path(program)
@@ -52,7 +53,8 @@ def create_workflow_program() -> ArgumentParser:
choices = facefusion.choices.workflows choices = facefusion.choices.workflows
) )
], ],
scopes = [ 'api', 'cli' ] scopes = [ 'api', 'cli' ],
groups = [ 'paths' ]
) )
return program return program
@@ -70,7 +72,8 @@ def create_temp_path_program() -> ArgumentParser:
default = config.get_str_value('paths', 'temp_path', tempfile.gettempdir()) default = config.get_str_value('paths', 'temp_path', tempfile.gettempdir())
) )
], ],
scopes = [ 'cli' ] scopes = [ 'cli' ],
groups = [ 'paths' ]
) )
return program return program
@@ -88,7 +91,8 @@ def create_jobs_path_program() -> ArgumentParser:
default = config.get_str_value('paths', 'jobs_path', '.jobs') default = config.get_str_value('paths', 'jobs_path', '.jobs')
) )
], ],
scopes = [ 'cli' ] scopes = [ 'cli' ],
groups = [ 'paths' ]
) )
return program return program
@@ -107,7 +111,8 @@ def create_source_paths_program() -> ArgumentParser:
nargs = '+' nargs = '+'
) )
], ],
scopes = [ 'cli' ] scopes = [ 'cli' ],
groups = [ 'paths' ]
) )
return program return program
@@ -125,7 +130,8 @@ def create_target_path_program() -> ArgumentParser:
default = config.get_str_value('paths', 'target_path') default = config.get_str_value('paths', 'target_path')
) )
], ],
scopes = [ 'cli' ] scopes = [ 'cli' ],
groups = [ 'paths' ]
) )
return program return program
@@ -143,7 +149,8 @@ def create_output_path_program() -> ArgumentParser:
default = config.get_str_value('paths', 'output_path') default = config.get_str_value('paths', 'output_path')
) )
], ],
scopes = [ 'cli' ] scopes = [ 'cli' ],
groups = [ 'paths' ]
) )
return program return program
@@ -161,7 +168,8 @@ def create_source_pattern_program() -> ArgumentParser:
default = config.get_str_value('patterns', 'source_pattern') default = config.get_str_value('patterns', 'source_pattern')
) )
], ],
scopes = [ 'cli' ] scopes = [ 'cli' ],
groups = [ 'patterns' ]
) )
return program return program
@@ -179,7 +187,8 @@ def create_target_pattern_program() -> ArgumentParser:
default = config.get_str_value('patterns', 'target_pattern') default = config.get_str_value('patterns', 'target_pattern')
) )
], ],
scopes = [ 'cli' ] scopes = [ 'cli' ],
groups = [ 'patterns' ]
) )
return program return program
@@ -197,7 +206,8 @@ def create_output_pattern_program() -> ArgumentParser:
default = config.get_str_value('patterns', 'output_pattern') default = config.get_str_value('patterns', 'output_pattern')
) )
], ],
scopes = [ 'cli' ] scopes = [ 'cli' ],
groups = [ 'patterns' ]
) )
return program return program
@@ -216,7 +226,8 @@ def create_face_detector_program() -> ArgumentParser:
choices = facefusion.choices.face_detector_models choices = facefusion.choices.face_detector_models
) )
], ],
scopes = [ 'api', 'cli' ] scopes = [ 'api', 'cli' ],
groups = [ 'face_detector' ]
) )
known_args, _ = program.parse_known_args() known_args, _ = program.parse_known_args()
@@ -231,7 +242,8 @@ def create_face_detector_program() -> ArgumentParser:
choices = face_detector_size_choices choices = face_detector_size_choices
) )
], ],
scopes = [ 'api', 'cli' ] scopes = [ 'api', 'cli' ],
groups = [ 'face_detector' ]
) )
capability_store.register_capability_set( capability_store.register_capability_set(
[ [
@@ -243,7 +255,8 @@ def create_face_detector_program() -> ArgumentParser:
nargs = '+' nargs = '+'
) )
], ],
scopes = [ 'api', 'cli' ] scopes = [ 'api', 'cli' ],
groups = [ 'face_detector' ]
) )
capability_store.register_capability_set( capability_store.register_capability_set(
[ [
@@ -257,7 +270,8 @@ def create_face_detector_program() -> ArgumentParser:
metavar = 'FACE_DETECTOR_ANGLES' metavar = 'FACE_DETECTOR_ANGLES'
) )
], ],
scopes = [ 'api', 'cli' ] scopes = [ 'api', 'cli' ],
groups = [ 'face_detector' ]
) )
capability_store.register_capability_set( capability_store.register_capability_set(
[ [
@@ -270,7 +284,8 @@ def create_face_detector_program() -> ArgumentParser:
metavar = create_float_metavar(facefusion.choices.face_detector_score_range) metavar = create_float_metavar(facefusion.choices.face_detector_score_range)
) )
], ],
scopes = [ 'api', 'cli' ] scopes = [ 'api', 'cli' ],
groups = [ 'face_detector' ]
) )
return program return program
@@ -289,7 +304,8 @@ def create_face_landmarker_program() -> ArgumentParser:
choices = facefusion.choices.face_landmarker_models choices = facefusion.choices.face_landmarker_models
) )
], ],
scopes = [ 'api', 'cli' ] scopes = [ 'api', 'cli' ],
groups = [ 'face_landmarker' ]
) )
capability_store.register_capability_set( capability_store.register_capability_set(
[ [
@@ -302,7 +318,8 @@ def create_face_landmarker_program() -> ArgumentParser:
metavar = create_float_metavar(facefusion.choices.face_landmarker_score_range) metavar = create_float_metavar(facefusion.choices.face_landmarker_score_range)
) )
], ],
scopes = [ 'api', 'cli' ] scopes = [ 'api', 'cli' ],
groups = [ 'face_landmarker' ]
) )
return program return program
@@ -321,7 +338,8 @@ def create_face_selector_program() -> ArgumentParser:
choices = facefusion.choices.face_selector_modes choices = facefusion.choices.face_selector_modes
) )
], ],
scopes = [ 'api', 'cli' ] scopes = [ 'api', 'cli' ],
groups = [ 'face_selector' ]
) )
capability_store.register_capability_set( capability_store.register_capability_set(
[ [
@@ -332,7 +350,8 @@ def create_face_selector_program() -> ArgumentParser:
choices = facefusion.choices.face_selector_orders choices = facefusion.choices.face_selector_orders
) )
], ],
scopes = [ 'api', 'cli' ] scopes = [ 'api', 'cli' ],
groups = [ 'face_selector' ]
) )
capability_store.register_capability_set( capability_store.register_capability_set(
[ [
@@ -345,7 +364,8 @@ def create_face_selector_program() -> ArgumentParser:
metavar = create_int_metavar(facefusion.choices.face_selector_age_range) metavar = create_int_metavar(facefusion.choices.face_selector_age_range)
) )
], ],
scopes = [ 'api', 'cli' ] scopes = [ 'api', 'cli' ],
groups = [ 'face_selector' ]
) )
capability_store.register_capability_set( capability_store.register_capability_set(
[ [
@@ -358,7 +378,8 @@ def create_face_selector_program() -> ArgumentParser:
metavar = create_int_metavar(facefusion.choices.face_selector_age_range) metavar = create_int_metavar(facefusion.choices.face_selector_age_range)
) )
], ],
scopes = [ 'api', 'cli' ] scopes = [ 'api', 'cli' ],
groups = [ 'face_selector' ]
) )
capability_store.register_capability_set( capability_store.register_capability_set(
[ [
@@ -369,7 +390,8 @@ def create_face_selector_program() -> ArgumentParser:
choices = facefusion.choices.face_selector_genders choices = facefusion.choices.face_selector_genders
) )
], ],
scopes = [ 'api', 'cli' ] scopes = [ 'api', 'cli' ],
groups = [ 'face_selector' ]
) )
capability_store.register_capability_set( capability_store.register_capability_set(
[ [
@@ -380,7 +402,8 @@ def create_face_selector_program() -> ArgumentParser:
choices = facefusion.choices.face_selector_races choices = facefusion.choices.face_selector_races
) )
], ],
scopes = [ 'api', 'cli' ] scopes = [ 'api', 'cli' ],
groups = [ 'face_selector' ]
) )
capability_store.register_capability_set( capability_store.register_capability_set(
[ [
@@ -391,7 +414,8 @@ def create_face_selector_program() -> ArgumentParser:
default = config.get_int_value('face_selector', 'reference_face_position', '0') default = config.get_int_value('face_selector', 'reference_face_position', '0')
) )
], ],
scopes = [ 'api', 'cli' ] scopes = [ 'api', 'cli' ],
groups = [ 'face_selector' ]
) )
capability_store.register_capability_set( capability_store.register_capability_set(
[ [
@@ -404,7 +428,8 @@ def create_face_selector_program() -> ArgumentParser:
metavar = create_float_metavar(facefusion.choices.reference_face_distance_range) metavar = create_float_metavar(facefusion.choices.reference_face_distance_range)
) )
], ],
scopes = [ 'api', 'cli' ] scopes = [ 'api', 'cli' ],
groups = [ 'face_selector' ]
) )
capability_store.register_capability_set( capability_store.register_capability_set(
[ [
@@ -415,7 +440,8 @@ def create_face_selector_program() -> ArgumentParser:
default = config.get_int_value('face_selector', 'reference_frame_number', '0') default = config.get_int_value('face_selector', 'reference_frame_number', '0')
) )
], ],
scopes = [ 'api', 'cli' ] scopes = [ 'api', 'cli' ],
groups = [ 'face_selector' ]
) )
return program return program
@@ -436,7 +462,8 @@ def create_face_tracker_program() -> ArgumentParser:
metavar = create_float_metavar(facefusion.choices.face_tracker_score_range) metavar = create_float_metavar(facefusion.choices.face_tracker_score_range)
) )
], ],
scopes = [ 'api', 'cli' ] scopes = [ 'api', 'cli' ],
groups = [ 'face_tracker' ]
) )
return program return program
@@ -455,7 +482,8 @@ def create_face_masker_program() -> ArgumentParser:
choices = facefusion.choices.face_occluder_models choices = facefusion.choices.face_occluder_models
) )
], ],
scopes = [ 'api', 'cli' ] scopes = [ 'api', 'cli' ],
groups = [ 'face_masker' ]
) )
capability_store.register_capability_set( capability_store.register_capability_set(
[ [
@@ -466,7 +494,8 @@ def create_face_masker_program() -> ArgumentParser:
choices = facefusion.choices.face_parser_models choices = facefusion.choices.face_parser_models
) )
], ],
scopes = [ 'api', 'cli' ] scopes = [ 'api', 'cli' ],
groups = [ 'face_masker' ]
) )
capability_store.register_capability_set( capability_store.register_capability_set(
[ [
@@ -479,7 +508,8 @@ def create_face_masker_program() -> ArgumentParser:
metavar = 'FACE_MASK_TYPES' metavar = 'FACE_MASK_TYPES'
) )
], ],
scopes = [ 'api', 'cli' ] scopes = [ 'api', 'cli' ],
groups = [ 'face_masker' ]
) )
capability_store.register_capability_set( capability_store.register_capability_set(
[ [
@@ -492,7 +522,8 @@ def create_face_masker_program() -> ArgumentParser:
metavar = 'FACE_MASK_AREAS' metavar = 'FACE_MASK_AREAS'
) )
], ],
scopes = [ 'api', 'cli' ] scopes = [ 'api', 'cli' ],
groups = [ 'face_masker' ]
) )
capability_store.register_capability_set( capability_store.register_capability_set(
[ [
@@ -505,7 +536,8 @@ def create_face_masker_program() -> ArgumentParser:
metavar = 'FACE_MASK_REGIONS' metavar = 'FACE_MASK_REGIONS'
) )
], ],
scopes = [ 'api', 'cli' ] scopes = [ 'api', 'cli' ],
groups = [ 'face_masker' ]
) )
capability_store.register_capability_set( capability_store.register_capability_set(
[ [
@@ -518,7 +550,8 @@ def create_face_masker_program() -> ArgumentParser:
metavar = create_float_metavar(facefusion.choices.face_mask_blur_range) metavar = create_float_metavar(facefusion.choices.face_mask_blur_range)
) )
], ],
scopes = [ 'api', 'cli' ] scopes = [ 'api', 'cli' ],
groups = [ 'face_masker' ]
) )
capability_store.register_capability_set( capability_store.register_capability_set(
[ [
@@ -530,7 +563,8 @@ def create_face_masker_program() -> ArgumentParser:
nargs = '+' nargs = '+'
) )
], ],
scopes = [ 'api', 'cli' ] scopes = [ 'api', 'cli' ],
groups = [ 'face_masker' ]
) )
return program return program
@@ -549,7 +583,8 @@ def create_voice_extractor_program() -> ArgumentParser:
choices = facefusion.choices.voice_extractor_models choices = facefusion.choices.voice_extractor_models
) )
], ],
scopes = [ 'api', 'cli' ] scopes = [ 'api', 'cli' ],
groups = [ 'voice_extractor' ]
) )
return program return program
@@ -568,7 +603,8 @@ def create_frame_extraction_program() -> ArgumentParser:
default = facefusion.config.get_int_value('frame_extraction', 'trim_frame_start') default = facefusion.config.get_int_value('frame_extraction', 'trim_frame_start')
) )
], ],
scopes = [ 'api', 'cli' ] scopes = [ 'api', 'cli' ],
groups = [ 'frame_extraction' ]
) )
capability_store.register_capability_set( capability_store.register_capability_set(
[ [
@@ -579,7 +615,8 @@ def create_frame_extraction_program() -> ArgumentParser:
default = facefusion.config.get_int_value('frame_extraction', 'trim_frame_end') default = facefusion.config.get_int_value('frame_extraction', 'trim_frame_end')
) )
], ],
scopes = [ 'api', 'cli' ] scopes = [ 'api', 'cli' ],
groups = [ 'frame_extraction' ]
) )
capability_store.register_capability_set( capability_store.register_capability_set(
[ [
@@ -590,7 +627,8 @@ def create_frame_extraction_program() -> ArgumentParser:
choices = facefusion.choices.temp_frame_formats choices = facefusion.choices.temp_frame_formats
) )
], ],
scopes = [ 'api', 'cli' ] scopes = [ 'api', 'cli' ],
groups = [ 'frame_extraction' ]
) )
return program return program
@@ -611,7 +649,8 @@ def create_frame_distribution_program() -> ArgumentParser:
metavar = create_int_metavar(facefusion.choices.target_frame_amount_range) metavar = create_int_metavar(facefusion.choices.target_frame_amount_range)
) )
], ],
scopes = [ 'api', 'cli' ] scopes = [ 'api', 'cli' ],
groups = [ 'frame_distribution' ]
) )
return program return program
@@ -633,7 +672,8 @@ def create_output_creation_program() -> ArgumentParser:
metavar = create_int_metavar(facefusion.choices.output_image_quality_range) metavar = create_int_metavar(facefusion.choices.output_image_quality_range)
) )
], ],
scopes = [ 'api', 'cli' ] scopes = [ 'api', 'cli' ],
groups = [ 'output_creation' ]
) )
capability_store.register_capability_set( capability_store.register_capability_set(
[ [
@@ -645,7 +685,8 @@ def create_output_creation_program() -> ArgumentParser:
choices = facefusion.choices.output_image_scale_range choices = facefusion.choices.output_image_scale_range
) )
], ],
scopes = [ 'api', 'cli' ] scopes = [ 'api', 'cli' ],
groups = [ 'output_creation' ]
) )
capability_store.register_capability_set( capability_store.register_capability_set(
[ [
@@ -656,7 +697,8 @@ def create_output_creation_program() -> ArgumentParser:
choices = available_encoder_set.get('audio') choices = available_encoder_set.get('audio')
) )
], ],
scopes = [ 'api', 'cli' ] scopes = [ 'api', 'cli' ],
groups = [ 'output_creation' ]
) )
capability_store.register_capability_set( capability_store.register_capability_set(
[ [
@@ -669,7 +711,8 @@ def create_output_creation_program() -> ArgumentParser:
metavar = create_int_metavar(facefusion.choices.output_audio_quality_range) metavar = create_int_metavar(facefusion.choices.output_audio_quality_range)
) )
], ],
scopes = [ 'api', 'cli' ] scopes = [ 'api', 'cli' ],
groups = [ 'output_creation' ]
) )
capability_store.register_capability_set( capability_store.register_capability_set(
[ [
@@ -682,7 +725,8 @@ def create_output_creation_program() -> ArgumentParser:
metavar = create_int_metavar(facefusion.choices.output_audio_volume_range) metavar = create_int_metavar(facefusion.choices.output_audio_volume_range)
) )
], ],
scopes = [ 'api', 'cli' ] scopes = [ 'api', 'cli' ],
groups = [ 'output_creation' ]
) )
capability_store.register_capability_set( capability_store.register_capability_set(
[ [
@@ -693,7 +737,8 @@ def create_output_creation_program() -> ArgumentParser:
choices = available_encoder_set.get('video') choices = available_encoder_set.get('video')
) )
], ],
scopes = [ 'api', 'cli' ] scopes = [ 'api', 'cli' ],
groups = [ 'output_creation' ]
) )
capability_store.register_capability_set( capability_store.register_capability_set(
[ [
@@ -704,7 +749,8 @@ def create_output_creation_program() -> ArgumentParser:
choices = facefusion.choices.video_presets choices = facefusion.choices.video_presets
) )
], ],
scopes = [ 'api', 'cli' ] scopes = [ 'api', 'cli' ],
groups = [ 'output_creation' ]
) )
capability_store.register_capability_set( capability_store.register_capability_set(
[ [
@@ -717,7 +763,8 @@ def create_output_creation_program() -> ArgumentParser:
metavar = create_int_metavar(facefusion.choices.output_video_quality_range) metavar = create_int_metavar(facefusion.choices.output_video_quality_range)
) )
], ],
scopes = [ 'api', 'cli' ] scopes = [ 'api', 'cli' ],
groups = [ 'output_creation' ]
) )
capability_store.register_capability_set( capability_store.register_capability_set(
[ [
@@ -729,7 +776,8 @@ def create_output_creation_program() -> ArgumentParser:
choices = facefusion.choices.output_video_scale_range choices = facefusion.choices.output_video_scale_range
) )
], ],
scopes = [ 'api', 'cli' ] scopes = [ 'api', 'cli' ],
groups = [ 'output_creation' ]
) )
capability_store.register_capability_set( capability_store.register_capability_set(
[ [
@@ -740,7 +788,8 @@ def create_output_creation_program() -> ArgumentParser:
default = config.get_float_value('output_creation', 'output_video_fps') default = config.get_float_value('output_creation', 'output_video_fps')
) )
], ],
scopes = [ 'api', 'cli' ] scopes = [ 'api', 'cli' ],
groups = [ 'output_creation' ]
) )
capability_store.register_capability_set( capability_store.register_capability_set(
[ [
@@ -751,7 +800,8 @@ def create_output_creation_program() -> ArgumentParser:
default = config.get_float_value('output_creation', 'output_audio_fps', '25.0') default = config.get_float_value('output_creation', 'output_audio_fps', '25.0')
) )
], ],
scopes = [ 'api', 'cli' ] scopes = [ 'api', 'cli' ],
groups = [ 'output_creation' ]
) )
return program return program
@@ -772,7 +822,8 @@ def create_processors_program() -> ArgumentParser:
nargs = '+' nargs = '+'
) )
], ],
scopes = [ 'api', 'cli' ] scopes = [ 'api', 'cli' ],
groups = [ 'processors' ]
) )
for processor_module in get_processors_modules(available_processors): for processor_module in get_processors_modules(available_processors):
@@ -796,7 +847,8 @@ def create_download_providers_program() -> ArgumentParser:
metavar = 'DOWNLOAD_PROVIDERS' metavar = 'DOWNLOAD_PROVIDERS'
) )
], ],
scopes = [ 'cli', 'sys' ] scopes = [ 'cli', 'sys' ],
groups = [ 'download' ]
) )
return program return program
@@ -815,7 +867,8 @@ def create_download_scope_program() -> ArgumentParser:
choices = facefusion.choices.download_scopes choices = facefusion.choices.download_scopes
) )
], ],
scopes = [ 'cli', 'sys' ] scopes = [ 'cli', 'sys' ],
groups = [ 'download' ]
) )
return program return program
@@ -873,7 +926,8 @@ def create_api_program() -> ArgumentParser:
choices = facefusion.choices.api_security_strategies choices = facefusion.choices.api_security_strategies
) )
], ],
scopes = [ 'api' ] scopes = [ 'api' ],
groups = [ 'api' ]
) )
return program return program
@@ -895,7 +949,8 @@ def create_execution_program() -> ArgumentParser:
metavar = 'EXECUTION_DEVICE_IDS' metavar = 'EXECUTION_DEVICE_IDS'
) )
], ],
scopes = [ 'cli', 'sys' ] scopes = [ 'cli', 'sys' ],
groups = [ 'execution' ]
) )
capability_store.register_capability_set( capability_store.register_capability_set(
[ [
@@ -908,7 +963,8 @@ def create_execution_program() -> ArgumentParser:
metavar = 'EXECUTION_PROVIDERS' metavar = 'EXECUTION_PROVIDERS'
) )
], ],
scopes = [ 'cli', 'sys' ] scopes = [ 'cli', 'sys' ],
groups = [ 'execution' ]
) )
capability_store.register_capability_set( capability_store.register_capability_set(
[ [
@@ -921,7 +977,8 @@ def create_execution_program() -> ArgumentParser:
metavar = create_int_metavar(facefusion.choices.execution_thread_count_range) metavar = create_int_metavar(facefusion.choices.execution_thread_count_range)
) )
], ],
scopes = [ 'cli', 'sys' ] scopes = [ 'cli', 'sys' ],
groups = [ 'execution' ]
) )
return program return program
@@ -940,7 +997,8 @@ def create_memory_program() -> ArgumentParser:
choices = facefusion.choices.video_memory_strategies choices = facefusion.choices.video_memory_strategies
) )
], ],
scopes = [ 'cli', 'sys' ] scopes = [ 'cli', 'sys' ],
groups = [ 'memory' ]
) )
return program return program
@@ -959,7 +1017,8 @@ def create_log_level_program() -> ArgumentParser:
choices = facefusion.choices.log_levels choices = facefusion.choices.log_levels
) )
], ],
scopes = [ 'cli' ] scopes = [ 'cli' ],
groups = [ 'misc' ]
) )
return program return program
@@ -978,7 +1037,8 @@ def create_halt_on_error_program() -> ArgumentParser:
default = config.get_bool_value('misc', 'halt_on_error') default = config.get_bool_value('misc', 'halt_on_error')
) )
], ],
scopes = [ 'cli' ] scopes = [ 'cli' ],
groups = [ 'misc' ]
) )
return program return program
+4 -1
View File
@@ -135,11 +135,13 @@ Args : TypeAlias = Dict[str, Any]
Choice : TypeAlias = Union[int | str] Choice : TypeAlias = Union[int | str]
Scope : TypeAlias = Literal['api', 'cli', 'sys'] Scope : TypeAlias = Literal['api', 'cli', 'sys']
Group : TypeAlias = str
CapabilitySet = TypedDict('CapabilitySet', CapabilitySet = TypedDict('CapabilitySet',
{ {
'default' : Any, 'default' : Any,
'choices' : NotRequired[List[Choice]] 'choices' : NotRequired[List[Choice]],
'groups' : NotRequired[List[Group]]
}) })
CapabilityStore = TypedDict('CapabilityStore', CapabilityStore = TypedDict('CapabilityStore',
{ {
@@ -147,6 +149,7 @@ CapabilityStore = TypedDict('CapabilityStore',
'cli' : Dict[str, CapabilitySet], 'cli' : Dict[str, CapabilitySet],
'sys' : Dict[str, CapabilitySet] 'sys' : Dict[str, CapabilitySet]
}) })
CapabilityGroup : TypeAlias = Dict[Group, Dict[str, CapabilitySet]]
ProcessState = Literal['checking', 'processing', 'stopping', 'pending'] ProcessState = Literal['checking', 'processing', 'stopping', 'pending']
UpdateProgress : TypeAlias = Callable[[int], None] UpdateProgress : TypeAlias = Callable[[int], None]
+6 -4
View File
@@ -18,7 +18,8 @@ def before_all() -> None:
nargs = '+' nargs = '+'
) )
], ],
scopes = [ 'api' ] scopes = [ 'api' ],
groups = [ 'paths' ]
) )
capability_store.register_capability_set( capability_store.register_capability_set(
[ [
@@ -28,7 +29,8 @@ def before_all() -> None:
choices = [ 'mp4', 'mkv', 'webm' ] choices = [ 'mp4', 'mkv', 'webm' ]
) )
], ],
scopes = [ 'api' ] scopes = [ 'api' ],
groups = [ 'paths' ]
) )
@@ -55,5 +57,5 @@ def test_get_capabilities(test_client : TestClient) -> None:
assert 'mp4' in capabilities_body.get('formats').get('video') assert 'mp4' in capabilities_body.get('formats').get('video')
assert capabilities_body.get('arguments').get('source_paths').get('default') is None assert capabilities_body.get('arguments').get('paths').get('source_paths').get('default') is None
assert capabilities_body.get('arguments').get('output_format').get('choices') == [ 'mp4', 'mkv', 'webm' ] assert capabilities_body.get('arguments').get('paths').get('output_format').get('choices') == [ 'mp4', 'mkv', 'webm' ]
+6 -3
View File
@@ -22,7 +22,8 @@ def before_all() -> None:
nargs = '+' nargs = '+'
) )
], ],
scopes = [ 'api' ] scopes = [ 'api' ],
groups = [ 'paths' ]
) )
capability_store.register_capability_set( capability_store.register_capability_set(
[ [
@@ -30,7 +31,8 @@ def before_all() -> None:
'--target-path' '--target-path'
) )
], ],
scopes = [ 'api' ] scopes = [ 'api' ],
groups = [ 'paths' ]
) )
capability_store.register_capability_set( capability_store.register_capability_set(
[ [
@@ -39,7 +41,8 @@ def before_all() -> None:
nargs = '+' nargs = '+'
) )
], ],
scopes = [ 'api' ] scopes = [ 'api' ],
groups = [ 'paths' ]
) )
state_manager.init_item('execution_providers', [ 'cpu' ]) state_manager.init_item('execution_providers', [ 'cpu' ])