Better args types part2 (#1051)

* remove helper methods finally

* state becomes the total truth now

* state becomes the total truth now

* state becomes the total truth now

* state becomes the total truth now

* add ini file
This commit is contained in:
Henry Ruhs authored and henryruhs committed 2026-05-11 16:35:16 +02:00
1 parent 401118106a
commit 5ca5e1c2af
5 files changed
+27 -48

No files matched your search

Whitespace-only changes.
+6 -6
View File
@@ -2,13 +2,13 @@ from starlette.requests import Request
from starlette.responses import JSONResponse from starlette.responses import JSONResponse
from starlette.status import HTTP_200_OK, HTTP_404_NOT_FOUND from starlette.status import HTTP_200_OK, HTTP_404_NOT_FOUND
from facefusion import capability_store, session_manager, state_manager, translator from facefusion import args_helper, capability_store, session_manager, state_manager, translator
from facefusion.apis import asset_store from facefusion.apis import asset_store
from facefusion.apis.endpoints.session import extract_access_token from facefusion.apis.endpoints.session import extract_access_token
async def get_state(request : Request) -> JSONResponse: async def get_state(request : Request) -> JSONResponse:
api_args = capability_store.filter_api_args(state_manager.get_state()) #type:ignore[arg-type] api_args = args_helper.extract_api_args(state_manager.get_state()) #type:ignore[arg-type]
return JSONResponse(state_manager.collect_state(api_args), status_code = HTTP_200_OK) return JSONResponse(state_manager.collect_state(api_args), status_code = HTTP_200_OK)
@@ -29,8 +29,8 @@ async def set_state(request : Request) -> JSONResponse:
if key in api_args: if key in api_args:
state_manager.set_item(key, value) state_manager.set_item(key, value)
__api_args__ = capability_store.filter_api_args(state_manager.get_state()) #type:ignore[arg-type] __api_args__ = args_helper.extract_api_args(state_manager.get_state()) #type:ignore[arg-type]
return JSONResponse(state_manager.collect_state(__api_args__), status_code = HTTP_200_OK) #type:ignore[arg-type] return JSONResponse(state_manager.collect_state(__api_args__), status_code = HTTP_200_OK)
async def select_source(request : Request) -> JSONResponse: async def select_source(request : Request) -> JSONResponse:
@@ -50,7 +50,7 @@ async def select_source(request : Request) -> JSONResponse:
state_manager.set_item('source_paths', source_paths) state_manager.set_item('source_paths', source_paths)
__api_args__ = capability_store.filter_api_args(state_manager.get_state()) #type:ignore[arg-type] __api_args__ = args_helper.extract_api_args(state_manager.get_state()) #type:ignore[arg-type]
return JSONResponse(state_manager.collect_state(__api_args__), status_code = HTTP_200_OK) return JSONResponse(state_manager.collect_state(__api_args__), status_code = HTTP_200_OK)
return JSONResponse( return JSONResponse(
@@ -71,7 +71,7 @@ async def select_target(request : Request) -> JSONResponse:
if asset: if asset:
state_manager.set_item('target_path', asset.get('path')) state_manager.set_item('target_path', asset.get('path'))
__api_args__ = capability_store.filter_api_args(state_manager.get_state()) #type:ignore[arg-type] __api_args__ = args_helper.extract_api_args(state_manager.get_state()) #type:ignore[arg-type]
return JSONResponse(state_manager.collect_state(__api_args__), status_code = HTTP_200_OK) return JSONResponse(state_manager.collect_state(__api_args__), status_code = HTTP_200_OK)
return JSONResponse( return JSONResponse(
+15 -4
View File
@@ -1,7 +1,10 @@
from typing import Union
from facefusion.capability_store import get_api_arguments, get_cli_arguments, get_sys_arguments from facefusion.capability_store import get_api_arguments, get_cli_arguments, get_sys_arguments
from facefusion.filesystem import get_file_name, is_video, resolve_file_paths from facefusion.filesystem import get_file_name, is_video, resolve_file_paths
from facefusion.normalizer import normalize_fps, normalize_space from facefusion.normalizer import normalize_fps, normalize_space
from facefusion.processors.core import get_processors_modules from facefusion.processors.core import get_processors_modules
from facefusion.processors.types import ProcessorState
from facefusion.types import ApplyStateItem, Args, State from facefusion.types import ApplyStateItem, Args, State
from facefusion.vision import detect_video_fps from facefusion.vision import detect_video_fps
@@ -82,7 +85,7 @@ def apply_args(args : Args, apply_state_item : ApplyStateItem) -> None:
apply_state_item('step_index', args.get('step_index')) apply_state_item('step_index', args.get('step_index'))
def extract_api_args(state : State) -> Args: def extract_api_args(state : Union[State, ProcessorState]) -> Args:
api_args =\ api_args =\
{ {
key: state.get(key) for key in state if key in get_api_arguments() key: state.get(key) for key in state if key in get_api_arguments()
@@ -90,7 +93,7 @@ def extract_api_args(state : State) -> Args:
return api_args return api_args
def extract_cli_args(state : State) -> Args: def extract_cli_args(state : Union[State, ProcessorState]) -> Args:
cli_args =\ cli_args =\
{ {
key: state.get(key) for key in state if key in get_cli_arguments() key: state.get(key) for key in state if key in get_cli_arguments()
@@ -98,7 +101,7 @@ def extract_cli_args(state : State) -> Args:
return cli_args return cli_args
def extract_sys_args(state : State) -> Args: def extract_sys_args(state : Union[State, ProcessorState]) -> Args:
sys_args =\ sys_args =\
{ {
key: state.get(key) for key in state if key in get_sys_arguments() key: state.get(key) for key in state if key in get_sys_arguments()
@@ -106,9 +109,17 @@ def extract_sys_args(state : State) -> Args:
return sys_args return sys_args
def extract_step_args(state : State) -> Args: def extract_step_args(state : Union[State, ProcessorState]) -> Args:
step_args =\ step_args =\
{ {
key: state.get(key) for key in state if key in get_cli_arguments() and key not in get_sys_arguments() key: state.get(key) for key in state if key in get_cli_arguments() and key not in get_sys_arguments()
} }
return step_args return step_args
def filter_step_args(args : Args) -> Args:
step_args =\
{
key: args.get(key) for key in args if key in get_cli_arguments() and key not in get_sys_arguments()
}
return step_args
+1 -33
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 Args, CapabilitySet, CapabilityStore, Scope, State from facefusion.types import CapabilitySet, CapabilityStore, Scope
CAPABILITY_STORE : CapabilityStore =\ CAPABILITY_STORE : CapabilityStore =\
{ {
@@ -52,35 +52,3 @@ def register_capability_set(actions : List[Action], scopes : List[Scope]) -> Non
CAPABILITY_STORE['cli'][action.dest] = value CAPABILITY_STORE['cli'][action.dest] = value
if scope == 'sys': if scope == 'sys':
CAPABILITY_STORE['sys'][action.dest] = value CAPABILITY_STORE['sys'][action.dest] = value
def filter_api_args(state : State) -> Args:
api_args =\
{
key: state.get(key) for key in state if key in get_api_arguments()
}
return api_args
def filter_cli_args(state : State) -> Args:
cli_args =\
{
key: state.get(key) for key in state if key in get_cli_arguments()
}
return cli_args
def filter_step_args(args : Args) -> Args:
step_args =\
{
key: args.get(key) for key in args if key in get_cli_arguments() and key not in get_sys_arguments()
}
return step_args
def filter_sys_args(state : State) -> Args:
sys_args =\
{
key: state.get(key) for key in state if key in get_sys_arguments()
}
return sys_args
+5 -5
View File
@@ -198,7 +198,7 @@ def route_job_manager(args : Args) -> ErrorCode:
return 1 return 1
if state_manager.get_item('command') == 'job-add-step': if state_manager.get_item('command') == 'job-add-step':
step_args = args_helper.extract_step_args(args) # type:ignore[arg-type] step_args = args_helper.filter_step_args(args)
if job_manager.add_step(state_manager.get_item('job_id'), step_args): if job_manager.add_step(state_manager.get_item('job_id'), step_args):
logger.info(translator.get('job_step_added').format(job_id = state_manager.get_item('job_id')), __name__) logger.info(translator.get('job_step_added').format(job_id = state_manager.get_item('job_id')), __name__)
@@ -207,7 +207,7 @@ def route_job_manager(args : Args) -> ErrorCode:
return 1 return 1
if state_manager.get_item('command') == 'job-remix-step': if state_manager.get_item('command') == 'job-remix-step':
step_args = args_helper.extract_step_args(args) # type:ignore[arg-type] step_args = args_helper.filter_step_args(args)
if job_manager.remix_step(state_manager.get_item('job_id'), state_manager.get_item('step_index'), step_args): if job_manager.remix_step(state_manager.get_item('job_id'), state_manager.get_item('step_index'), step_args):
logger.info(translator.get('job_remix_step_added').format(job_id = state_manager.get_item('job_id'), step_index = state_manager.get_item('step_index')), __name__) logger.info(translator.get('job_remix_step_added').format(job_id = state_manager.get_item('job_id'), step_index = state_manager.get_item('step_index')), __name__)
@@ -216,7 +216,7 @@ def route_job_manager(args : Args) -> ErrorCode:
return 1 return 1
if state_manager.get_item('command') == 'job-insert-step': if state_manager.get_item('command') == 'job-insert-step':
step_args = args_helper.extract_step_args(args) # type:ignore[arg-type] step_args = args_helper.filter_step_args(args)
if job_manager.insert_step(state_manager.get_item('job_id'), state_manager.get_item('step_index'), step_args): if job_manager.insert_step(state_manager.get_item('job_id'), state_manager.get_item('step_index'), step_args):
logger.info(translator.get('job_step_inserted').format(job_id = state_manager.get_item('job_id'), step_index = state_manager.get_item('step_index')), __name__) logger.info(translator.get('job_step_inserted').format(job_id = state_manager.get_item('job_id'), step_index = state_manager.get_item('step_index')), __name__)
@@ -270,7 +270,7 @@ def route_job_runner() -> ErrorCode:
def process_headless(args : Args) -> ErrorCode: def process_headless(args : Args) -> ErrorCode:
job_id = job_helper.suggest_job_id('headless') job_id = job_helper.suggest_job_id('headless')
step_args = args_helper.extract_step_args(args) # type:ignore[arg-type] step_args = args_helper.filter_step_args(args)
if job_manager.create_job(job_id) and job_manager.add_step(job_id, step_args) and job_manager.submit_job(job_id) and job_runner.run_job(job_id, process_step): if job_manager.create_job(job_id) and job_manager.add_step(job_id, step_args) and job_manager.submit_job(job_id) and job_runner.run_job(job_id, process_step):
return 0 return 0
@@ -279,7 +279,7 @@ def process_headless(args : Args) -> ErrorCode:
def process_batch(args : Args) -> ErrorCode: def process_batch(args : Args) -> ErrorCode:
job_id = job_helper.suggest_job_id('batch') job_id = job_helper.suggest_job_id('batch')
step_args = args_helper.extract_step_args(args) # type:ignore[arg-type] step_args = args_helper.filter_step_args(args)
source_paths = resolve_file_pattern(step_args.get('source_pattern')) source_paths = resolve_file_pattern(step_args.get('source_pattern'))
target_paths = resolve_file_pattern(step_args.get('target_pattern')) target_paths = resolve_file_pattern(step_args.get('target_pattern'))