mirror of
https://github.com/facefusion/facefusion.git
synced 2026-04-22 17:36:16 +02:00
better args types (#1049)
* fix lint and remove unused types, restructure helpers * fix lint * fix lint * fix lint
This commit is contained in:
@@ -24,13 +24,13 @@ async def upload_asset(request : Request) -> Response:
|
||||
|
||||
form = await request.form()
|
||||
upload_files = form.getlist('file')
|
||||
asset_paths = await save_asset_files(upload_files) # type: ignore[arg-type]
|
||||
asset_paths = await save_asset_files(upload_files) #type:ignore[arg-type]
|
||||
|
||||
if asset_paths:
|
||||
asset_ids : List[str] = []
|
||||
|
||||
for asset_path in asset_paths:
|
||||
asset = asset_store.create_asset(session_id, asset_type, asset_path) # type: ignore[arg-type]
|
||||
asset = asset_store.create_asset(session_id, asset_type, asset_path) #type:ignore[arg-type]
|
||||
|
||||
if asset:
|
||||
asset_id = asset.get('id')
|
||||
|
||||
+38
-20
@@ -1,35 +1,29 @@
|
||||
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.normalizer import normalize_fps, normalize_space
|
||||
from facefusion.processors.core import get_processors_modules
|
||||
from facefusion.types import ApplyStateItem, Args
|
||||
from facefusion.types import ApplyStateItem, Args, State
|
||||
from facefusion.vision import detect_video_fps
|
||||
|
||||
|
||||
def apply_args(args : Args, apply_state_item : ApplyStateItem) -> None:
|
||||
# general
|
||||
apply_state_item('command', args.get('command'))
|
||||
# workflow
|
||||
apply_state_item('workflow', args.get('workflow'))
|
||||
# paths
|
||||
apply_state_item('temp_path', args.get('temp_path'))
|
||||
apply_state_item('jobs_path', args.get('jobs_path'))
|
||||
apply_state_item('source_paths', args.get('source_paths'))
|
||||
apply_state_item('target_path', args.get('target_path'))
|
||||
apply_state_item('output_path', args.get('output_path'))
|
||||
# patterns
|
||||
apply_state_item('source_pattern', args.get('source_pattern'))
|
||||
apply_state_item('target_pattern', args.get('target_pattern'))
|
||||
apply_state_item('output_pattern', args.get('output_pattern'))
|
||||
# face detector
|
||||
apply_state_item('face_detector_model', args.get('face_detector_model'))
|
||||
apply_state_item('face_detector_size', args.get('face_detector_size'))
|
||||
apply_state_item('face_detector_margin', normalize_space(args.get('face_detector_margin')))
|
||||
apply_state_item('face_detector_angles', args.get('face_detector_angles'))
|
||||
apply_state_item('face_detector_score', args.get('face_detector_score'))
|
||||
# face landmarker
|
||||
apply_state_item('face_landmarker_model', args.get('face_landmarker_model'))
|
||||
apply_state_item('face_landmarker_score', args.get('face_landmarker_score'))
|
||||
# face selector
|
||||
apply_state_item('face_selector_mode', args.get('face_selector_mode'))
|
||||
apply_state_item('face_selector_order', args.get('face_selector_order'))
|
||||
apply_state_item('face_selector_age_start', args.get('face_selector_age_start'))
|
||||
@@ -39,7 +33,6 @@ def apply_args(args : Args, apply_state_item : ApplyStateItem) -> None:
|
||||
apply_state_item('reference_face_position', args.get('reference_face_position'))
|
||||
apply_state_item('reference_face_distance', args.get('reference_face_distance'))
|
||||
apply_state_item('reference_frame_number', args.get('reference_frame_number'))
|
||||
# face masker
|
||||
apply_state_item('face_occluder_model', args.get('face_occluder_model'))
|
||||
apply_state_item('face_parser_model', args.get('face_parser_model'))
|
||||
apply_state_item('face_mask_types', args.get('face_mask_types'))
|
||||
@@ -47,13 +40,10 @@ def apply_args(args : Args, apply_state_item : ApplyStateItem) -> None:
|
||||
apply_state_item('face_mask_regions', args.get('face_mask_regions'))
|
||||
apply_state_item('face_mask_blur', args.get('face_mask_blur'))
|
||||
apply_state_item('face_mask_padding', normalize_space(args.get('face_mask_padding')))
|
||||
# voice extractor
|
||||
apply_state_item('voice_extractor_model', args.get('voice_extractor_model'))
|
||||
# frame extraction
|
||||
apply_state_item('trim_frame_start', args.get('trim_frame_start'))
|
||||
apply_state_item('trim_frame_end', args.get('trim_frame_end'))
|
||||
apply_state_item('temp_frame_format', args.get('temp_frame_format'))
|
||||
# output creation
|
||||
apply_state_item('output_image_quality', args.get('output_image_quality'))
|
||||
apply_state_item('output_image_scale', args.get('output_image_scale'))
|
||||
apply_state_item('output_audio_encoder', args.get('output_audio_encoder'))
|
||||
@@ -63,34 +53,62 @@ def apply_args(args : Args, apply_state_item : ApplyStateItem) -> None:
|
||||
apply_state_item('output_video_preset', args.get('output_video_preset'))
|
||||
apply_state_item('output_video_quality', args.get('output_video_quality'))
|
||||
apply_state_item('output_video_scale', args.get('output_video_scale'))
|
||||
|
||||
if args.get('output_video_fps') or is_video(args.get('target_path')):
|
||||
output_video_fps = normalize_fps(args.get('output_video_fps')) or detect_video_fps(args.get('target_path'))
|
||||
apply_state_item('output_video_fps', output_video_fps)
|
||||
# processors
|
||||
|
||||
available_processors = [ get_file_name(file_path) for file_path in resolve_file_paths('facefusion/processors/modules') ]
|
||||
apply_state_item('processors', args.get('processors'))
|
||||
|
||||
for processor_module in get_processors_modules(available_processors):
|
||||
processor_module.apply_args(args, apply_state_item)
|
||||
# execution
|
||||
|
||||
apply_state_item('execution_device_ids', args.get('execution_device_ids'))
|
||||
apply_state_item('execution_providers', args.get('execution_providers'))
|
||||
apply_state_item('execution_thread_count', args.get('execution_thread_count'))
|
||||
# download
|
||||
apply_state_item('download_providers', args.get('download_providers'))
|
||||
apply_state_item('download_scope', args.get('download_scope'))
|
||||
# benchmark
|
||||
apply_state_item('benchmark_mode', args.get('benchmark_mode'))
|
||||
apply_state_item('benchmark_resolutions', args.get('benchmark_resolutions'))
|
||||
apply_state_item('benchmark_cycle_count', args.get('benchmark_cycle_count'))
|
||||
# api
|
||||
apply_state_item('api_host', args.get('api_host'))
|
||||
apply_state_item('api_port', args.get('api_port'))
|
||||
# memory
|
||||
apply_state_item('video_memory_strategy', args.get('video_memory_strategy'))
|
||||
# misc
|
||||
apply_state_item('log_level', args.get('log_level'))
|
||||
apply_state_item('halt_on_error', args.get('halt_on_error'))
|
||||
# jobs
|
||||
apply_state_item('job_id', args.get('job_id'))
|
||||
apply_state_item('job_status', args.get('job_status'))
|
||||
apply_state_item('step_index', args.get('step_index'))
|
||||
|
||||
|
||||
def extract_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 extract_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 extract_sys_args(state : State) -> Args:
|
||||
sys_args =\
|
||||
{
|
||||
key: state.get(key) for key in state if key in get_sys_arguments()
|
||||
}
|
||||
return sys_args
|
||||
|
||||
|
||||
def extract_step_args(state : State) -> Args:
|
||||
step_args =\
|
||||
{
|
||||
key: state.get(key) for key in state if key in get_cli_arguments() and key not in get_sys_arguments()
|
||||
}
|
||||
return step_args
|
||||
|
||||
+7
-7
@@ -7,7 +7,7 @@ from time import time
|
||||
|
||||
import uvicorn
|
||||
|
||||
from facefusion import benchmarker, capability_store, cli_helper, content_analyser, face_classifier, face_detector, face_landmarker, face_masker, face_recognizer, hash_helper, logger, state_manager, translator, voice_extractor
|
||||
from facefusion import args_helper, benchmarker, cli_helper, content_analyser, face_classifier, face_detector, face_landmarker, face_masker, face_recognizer, hash_helper, logger, state_manager, translator, voice_extractor
|
||||
from facefusion.apis.core import create_api
|
||||
from facefusion.args_helper import apply_args
|
||||
from facefusion.download import conditional_download_hashes, conditional_download_sources
|
||||
@@ -198,7 +198,7 @@ def route_job_manager(args : Args) -> ErrorCode:
|
||||
return 1
|
||||
|
||||
if state_manager.get_item('command') == 'job-add-step':
|
||||
step_args = capability_store.filter_step_args(args)
|
||||
step_args = args_helper.extract_step_args(args) # type:ignore[arg-type]
|
||||
|
||||
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__)
|
||||
@@ -207,7 +207,7 @@ def route_job_manager(args : Args) -> ErrorCode:
|
||||
return 1
|
||||
|
||||
if state_manager.get_item('command') == 'job-remix-step':
|
||||
step_args = capability_store.filter_step_args(args)
|
||||
step_args = args_helper.extract_step_args(args) # type:ignore[arg-type]
|
||||
|
||||
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__)
|
||||
@@ -216,7 +216,7 @@ def route_job_manager(args : Args) -> ErrorCode:
|
||||
return 1
|
||||
|
||||
if state_manager.get_item('command') == 'job-insert-step':
|
||||
step_args = capability_store.filter_step_args(args)
|
||||
step_args = args_helper.extract_step_args(args) # type:ignore[arg-type]
|
||||
|
||||
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__)
|
||||
@@ -270,7 +270,7 @@ def route_job_runner() -> ErrorCode:
|
||||
|
||||
def process_headless(args : Args) -> ErrorCode:
|
||||
job_id = job_helper.suggest_job_id('headless')
|
||||
step_args = capability_store.filter_step_args(args)
|
||||
step_args = args_helper.extract_step_args(args) # type:ignore[arg-type]
|
||||
|
||||
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
|
||||
@@ -279,7 +279,7 @@ def process_headless(args : Args) -> ErrorCode:
|
||||
|
||||
def process_batch(args : Args) -> ErrorCode:
|
||||
job_id = job_helper.suggest_job_id('batch')
|
||||
step_args = capability_store.filter_step_args(args)
|
||||
step_args = args_helper.extract_step_args(args) # type:ignore[arg-type]
|
||||
source_paths = resolve_file_pattern(step_args.get('source_pattern'))
|
||||
target_paths = resolve_file_pattern(step_args.get('target_pattern'))
|
||||
|
||||
@@ -317,7 +317,7 @@ def process_batch(args : Args) -> ErrorCode:
|
||||
|
||||
def process_step(job_id : str, step_index : int, step_args : Args) -> bool:
|
||||
step_total = job_manager.count_step_total(job_id)
|
||||
cli_args = capability_store.filter_cli_args(state_manager.get_state()) #type:ignore[arg-type]
|
||||
cli_args = args_helper.extract_cli_args(state_manager.get_state()) #type:ignore[arg-type]
|
||||
args = cli_args.copy()
|
||||
args.update(step_args)
|
||||
apply_args(args, state_manager.set_item)
|
||||
|
||||
@@ -18,10 +18,10 @@ from facefusion.face_selector import select_faces
|
||||
from facefusion.filesystem import in_directory, is_image, is_video, resolve_relative_path
|
||||
from facefusion.processors.modules.age_modifier import choices as age_modifier_choices
|
||||
from facefusion.processors.modules.age_modifier.types import AgeModifierDirection, AgeModifierInputs
|
||||
from facefusion.processors.types import ProcessorOutputs
|
||||
from facefusion.processors.types import ApplyStateItem, ProcessorOutputs
|
||||
from facefusion.program_helper import find_argument_group
|
||||
from facefusion.thread_helper import thread_semaphore
|
||||
from facefusion.types import ApplyStateItem, Args, DownloadScope, Face, InferencePool, ModelOptions, ModelSet, ProcessMode, VisionFrame
|
||||
from facefusion.types import Args, DownloadScope, Face, InferencePool, ModelOptions, ModelSet, ProcessMode, VisionFrame
|
||||
from facefusion.vision import match_frame_color, read_static_image, read_static_video_frame
|
||||
|
||||
|
||||
|
||||
@@ -15,11 +15,11 @@ from facefusion.filesystem import in_directory, is_image, is_video, resolve_rela
|
||||
from facefusion.normalizer import normalize_color
|
||||
from facefusion.processors.modules.background_remover import choices as background_remover_choices
|
||||
from facefusion.processors.modules.background_remover.types import BackgroundRemoverInputs
|
||||
from facefusion.processors.types import ProcessorOutputs
|
||||
from facefusion.processors.types import ApplyStateItem, ProcessorOutputs
|
||||
from facefusion.program_helper import find_argument_group
|
||||
from facefusion.sanitizer import sanitize_int_range
|
||||
from facefusion.thread_helper import thread_semaphore
|
||||
from facefusion.types import ApplyStateItem, Args, DownloadScope, ExecutionProvider, InferencePool, Mask, ModelOptions, ModelSet, ProcessMode, VisionFrame
|
||||
from facefusion.types import Args, DownloadScope, ExecutionProvider, InferencePool, Mask, ModelOptions, ModelSet, ProcessMode, VisionFrame
|
||||
from facefusion.vision import read_static_image, read_static_video_frame
|
||||
|
||||
|
||||
|
||||
@@ -18,10 +18,10 @@ from facefusion.face_selector import select_faces
|
||||
from facefusion.filesystem import get_file_name, in_directory, is_image, is_video, resolve_file_paths, resolve_relative_path
|
||||
from facefusion.processors.modules.deep_swapper import choices as deep_swapper_choices
|
||||
from facefusion.processors.modules.deep_swapper.types import DeepSwapperInputs, DeepSwapperMorph
|
||||
from facefusion.processors.types import ProcessorOutputs
|
||||
from facefusion.processors.types import ApplyStateItem, ProcessorOutputs
|
||||
from facefusion.program_helper import find_argument_group
|
||||
from facefusion.thread_helper import thread_semaphore
|
||||
from facefusion.types import ApplyStateItem, Args, DownloadScope, Face, InferencePool, Mask, ModelOptions, ModelSet, ProcessMode, VisionFrame
|
||||
from facefusion.types import Args, DownloadScope, Face, InferencePool, Mask, ModelOptions, ModelSet, ProcessMode, VisionFrame
|
||||
from facefusion.vision import conditional_match_frame_color, read_static_image, read_static_video_frame
|
||||
|
||||
|
||||
|
||||
@@ -18,10 +18,10 @@ from facefusion.filesystem import in_directory, is_image, is_video, resolve_rela
|
||||
from facefusion.processors.live_portrait import create_rotation, limit_expression
|
||||
from facefusion.processors.modules.expression_restorer import choices as expression_restorer_choices
|
||||
from facefusion.processors.modules.expression_restorer.types import ExpressionRestorerInputs
|
||||
from facefusion.processors.types import LivePortraitExpression, LivePortraitFeatureVolume, LivePortraitMotionPoints, LivePortraitPitch, LivePortraitRoll, LivePortraitScale, LivePortraitTranslation, LivePortraitYaw, ProcessorOutputs
|
||||
from facefusion.processors.types import ApplyStateItem, LivePortraitExpression, LivePortraitFeatureVolume, LivePortraitMotionPoints, LivePortraitPitch, LivePortraitRoll, LivePortraitScale, LivePortraitTranslation, LivePortraitYaw, ProcessorOutputs
|
||||
from facefusion.program_helper import find_argument_group
|
||||
from facefusion.thread_helper import conditional_thread_semaphore, thread_semaphore
|
||||
from facefusion.types import ApplyStateItem, Args, DownloadScope, Face, InferencePool, ModelOptions, ModelSet, ProcessMode, VisionFrame
|
||||
from facefusion.types import Args, DownloadScope, Face, InferencePool, ModelOptions, ModelSet, ProcessMode, VisionFrame
|
||||
from facefusion.vision import read_static_image, read_static_video_frame
|
||||
|
||||
|
||||
|
||||
@@ -13,9 +13,9 @@ from facefusion.face_selector import select_faces
|
||||
from facefusion.filesystem import in_directory, is_image, is_video
|
||||
from facefusion.processors.modules.face_debugger import choices as face_debugger_choices
|
||||
from facefusion.processors.modules.face_debugger.types import FaceDebuggerInputs
|
||||
from facefusion.processors.types import ProcessorOutputs
|
||||
from facefusion.processors.types import ApplyStateItem, ProcessorOutputs
|
||||
from facefusion.program_helper import find_argument_group
|
||||
from facefusion.types import ApplyStateItem, Args, Face, InferencePool, ProcessMode, VisionFrame
|
||||
from facefusion.types import Args, Face, InferencePool, ProcessMode, VisionFrame
|
||||
from facefusion.vision import read_static_image, read_static_video_frame
|
||||
|
||||
|
||||
|
||||
@@ -18,10 +18,10 @@ from facefusion.filesystem import in_directory, is_image, is_video, resolve_rela
|
||||
from facefusion.processors.live_portrait import create_rotation, limit_angle, limit_expression
|
||||
from facefusion.processors.modules.face_editor import choices as face_editor_choices
|
||||
from facefusion.processors.modules.face_editor.types import FaceEditorInputs
|
||||
from facefusion.processors.types import LivePortraitExpression, LivePortraitFeatureVolume, LivePortraitMotionPoints, LivePortraitPitch, LivePortraitRoll, LivePortraitRotation, LivePortraitScale, LivePortraitTranslation, LivePortraitYaw, ProcessorOutputs
|
||||
from facefusion.processors.types import ApplyStateItem, LivePortraitExpression, LivePortraitFeatureVolume, LivePortraitMotionPoints, LivePortraitPitch, LivePortraitRoll, LivePortraitRotation, LivePortraitScale, LivePortraitTranslation, LivePortraitYaw, ProcessorOutputs
|
||||
from facefusion.program_helper import find_argument_group
|
||||
from facefusion.thread_helper import conditional_thread_semaphore, thread_semaphore
|
||||
from facefusion.types import ApplyStateItem, Args, DownloadScope, Face, FaceLandmark68, InferencePool, ModelOptions, ModelSet, ProcessMode, VisionFrame
|
||||
from facefusion.types import Args, DownloadScope, Face, FaceLandmark68, InferencePool, ModelOptions, ModelSet, ProcessMode, VisionFrame
|
||||
from facefusion.vision import read_static_image, read_static_video_frame
|
||||
|
||||
|
||||
|
||||
@@ -15,10 +15,10 @@ from facefusion.face_selector import select_faces
|
||||
from facefusion.filesystem import in_directory, is_image, is_video, resolve_relative_path
|
||||
from facefusion.processors.modules.face_enhancer import choices as face_enhancer_choices
|
||||
from facefusion.processors.modules.face_enhancer.types import FaceEnhancerInputs, FaceEnhancerWeight
|
||||
from facefusion.processors.types import ProcessorOutputs
|
||||
from facefusion.processors.types import ApplyStateItem, ProcessorOutputs
|
||||
from facefusion.program_helper import find_argument_group
|
||||
from facefusion.thread_helper import thread_semaphore
|
||||
from facefusion.types import ApplyStateItem, Args, DownloadScope, Face, InferencePool, ModelOptions, ModelSet, ProcessMode, VisionFrame
|
||||
from facefusion.types import Args, DownloadScope, Face, InferencePool, ModelOptions, ModelSet, ProcessMode, VisionFrame
|
||||
from facefusion.vision import blend_frame, read_static_image, read_static_video_frame
|
||||
|
||||
|
||||
|
||||
@@ -21,10 +21,10 @@ from facefusion.model_helper import get_static_model_initializer
|
||||
from facefusion.processors.modules.face_swapper import choices as face_swapper_choices
|
||||
from facefusion.processors.modules.face_swapper.types import FaceSwapperInputs
|
||||
from facefusion.processors.pixel_boost import explode_pixel_boost, implode_pixel_boost
|
||||
from facefusion.processors.types import ProcessorOutputs
|
||||
from facefusion.processors.types import ApplyStateItem, ProcessorOutputs
|
||||
from facefusion.program_helper import find_argument_group
|
||||
from facefusion.thread_helper import conditional_thread_semaphore
|
||||
from facefusion.types import ApplyStateItem, Args, DownloadScope, Embedding, Face, InferencePool, ModelOptions, ModelSet, ProcessMode, VisionFrame
|
||||
from facefusion.types import Args, DownloadScope, Embedding, Face, InferencePool, ModelOptions, ModelSet, ProcessMode, VisionFrame
|
||||
from facefusion.vision import read_static_image, read_static_images, read_static_video_frame, unpack_resolution
|
||||
|
||||
|
||||
|
||||
@@ -14,10 +14,10 @@ from facefusion.execution import has_execution_provider
|
||||
from facefusion.filesystem import in_directory, is_image, is_video, resolve_relative_path
|
||||
from facefusion.processors.modules.frame_colorizer import choices as frame_colorizer_choices
|
||||
from facefusion.processors.modules.frame_colorizer.types import FrameColorizerInputs
|
||||
from facefusion.processors.types import ProcessorOutputs
|
||||
from facefusion.processors.types import ApplyStateItem, ProcessorOutputs
|
||||
from facefusion.program_helper import find_argument_group
|
||||
from facefusion.thread_helper import thread_semaphore
|
||||
from facefusion.types import ApplyStateItem, Args, DownloadScope, ExecutionProvider, InferencePool, ModelOptions, ModelSet, ProcessMode, VisionFrame
|
||||
from facefusion.types import Args, DownloadScope, ExecutionProvider, InferencePool, ModelOptions, ModelSet, ProcessMode, VisionFrame
|
||||
from facefusion.vision import blend_frame, read_static_image, read_static_video_frame, unpack_resolution
|
||||
|
||||
|
||||
|
||||
@@ -13,10 +13,10 @@ from facefusion.execution import has_execution_provider
|
||||
from facefusion.filesystem import in_directory, is_image, is_video, resolve_relative_path
|
||||
from facefusion.processors.modules.frame_enhancer import choices as frame_enhancer_choices
|
||||
from facefusion.processors.modules.frame_enhancer.types import FrameEnhancerInputs
|
||||
from facefusion.processors.types import ProcessorOutputs
|
||||
from facefusion.processors.types import ApplyStateItem, ProcessorOutputs
|
||||
from facefusion.program_helper import find_argument_group
|
||||
from facefusion.thread_helper import conditional_thread_semaphore
|
||||
from facefusion.types import ApplyStateItem, Args, DownloadScope, InferencePool, ModelOptions, ModelSet, ProcessMode, VisionFrame
|
||||
from facefusion.types import Args, DownloadScope, InferencePool, ModelOptions, ModelSet, ProcessMode, VisionFrame
|
||||
from facefusion.vision import blend_frame, create_tile_frames, merge_tile_frames, read_static_image, read_static_video_frame
|
||||
|
||||
|
||||
|
||||
@@ -17,10 +17,10 @@ from facefusion.face_selector import select_faces
|
||||
from facefusion.filesystem import has_audio, resolve_relative_path
|
||||
from facefusion.processors.modules.lip_syncer import choices as lip_syncer_choices
|
||||
from facefusion.processors.modules.lip_syncer.types import LipSyncerInputs, LipSyncerWeight
|
||||
from facefusion.processors.types import ProcessorOutputs
|
||||
from facefusion.processors.types import ApplyStateItem, ProcessorOutputs
|
||||
from facefusion.program_helper import find_argument_group
|
||||
from facefusion.thread_helper import conditional_thread_semaphore
|
||||
from facefusion.types import ApplyStateItem, Args, AudioFrame, DownloadScope, Face, InferencePool, ModelOptions, ModelSet, ProcessMode, VisionFrame
|
||||
from facefusion.types import Args, AudioFrame, DownloadScope, Face, InferencePool, ModelOptions, ModelSet, ProcessMode, VisionFrame
|
||||
from facefusion.vision import read_static_image, read_static_video_frame
|
||||
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from typing import Any, Dict, Tuple, TypeAlias
|
||||
from typing import Any, Callable, Dict, Tuple, TypeAlias
|
||||
|
||||
from numpy.typing import NDArray
|
||||
|
||||
@@ -14,7 +14,11 @@ LivePortraitRotation : TypeAlias = NDArray[Any]
|
||||
LivePortraitScale : TypeAlias = NDArray[Any]
|
||||
LivePortraitTranslation : TypeAlias = NDArray[Any]
|
||||
|
||||
ProcessorStateKey = str
|
||||
ProcessorState : TypeAlias = Dict[ProcessorStateKey, Any]
|
||||
ProcessorStateValue : TypeAlias = Any
|
||||
ProcessorStateKey : TypeAlias = str
|
||||
ProcessorState : TypeAlias = Dict[ProcessorStateKey, ProcessorStateValue]
|
||||
ProcessorStateSet : TypeAlias = Dict[AppContext, ProcessorState]
|
||||
|
||||
ApplyStateItem : TypeAlias = Callable[[ProcessorStateKey, ProcessorStateValue], None]
|
||||
|
||||
ProcessorOutputs : TypeAlias = Tuple[VisionFrame, Mask]
|
||||
|
||||
@@ -998,7 +998,6 @@ def create_program() -> ArgumentParser:
|
||||
)
|
||||
|
||||
sub_program = program.add_subparsers(dest = 'command')
|
||||
# general
|
||||
sub_program.add_parser(
|
||||
'run',
|
||||
help = translator.get('help.run'),
|
||||
@@ -1068,7 +1067,6 @@ def create_program() -> ArgumentParser:
|
||||
],
|
||||
formatter_class = create_help_formatter_large
|
||||
)
|
||||
# job manager
|
||||
sub_program.add_parser(
|
||||
'job-list',
|
||||
help = translator.get('help.job_list'),
|
||||
@@ -1199,7 +1197,6 @@ def create_program() -> ArgumentParser:
|
||||
],
|
||||
formatter_class = create_help_formatter_large
|
||||
)
|
||||
# job runner
|
||||
sub_program.add_parser(
|
||||
'job-run',
|
||||
help = translator.get('help.job_run'),
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import os
|
||||
from typing import Any, Union
|
||||
from typing import Union
|
||||
|
||||
from facefusion.app_context import detect_app_context
|
||||
from facefusion.processors.types import ProcessorState, ProcessorStateKey, ProcessorStateSet
|
||||
from facefusion.session_context import get_session_id
|
||||
from facefusion.types import Args, State, StateKey, StateSet
|
||||
from facefusion.types import Args, State, StateKey, StateSet, StateValue
|
||||
|
||||
STATE_SET : Union[StateSet, ProcessorStateSet] =\
|
||||
{
|
||||
@@ -15,27 +15,27 @@ STATE_SET : Union[StateSet, ProcessorStateSet] =\
|
||||
|
||||
def get_state() -> Union[State, ProcessorState]:
|
||||
app_context = detect_app_context()
|
||||
return STATE_SET.get(app_context) #type:ignore[return-value]
|
||||
return STATE_SET.get(app_context)
|
||||
|
||||
|
||||
def collect_state(args : Args) -> Union[State, ProcessorState]:
|
||||
state =\
|
||||
{
|
||||
key: get_item(key) for key in args #type:ignore[arg-type]
|
||||
key: get_item(key) for key in args
|
||||
}
|
||||
return state #type:ignore[return-value]
|
||||
return state
|
||||
|
||||
|
||||
def init_item(key : Union[StateKey, ProcessorStateKey], value : Any) -> None:
|
||||
def init_item(key : Union[StateKey, ProcessorStateKey], value : StateValue) -> None:
|
||||
STATE_SET['api'][key] = value #type:ignore[literal-required]
|
||||
STATE_SET['cli'][key] = value #type:ignore[literal-required]
|
||||
|
||||
|
||||
def get_item(key : Union[StateKey, ProcessorStateKey]) -> Any:
|
||||
return get_state().get(key) #type:ignore[literal-required]
|
||||
def get_item(key : Union[StateKey, ProcessorStateKey]) -> StateValue:
|
||||
return get_state().get(key)
|
||||
|
||||
|
||||
def set_item(key : Union[StateKey, ProcessorStateKey], value : Any) -> None:
|
||||
def set_item(key : Union[StateKey, ProcessorStateKey], value : StateValue) -> None:
|
||||
app_context = detect_app_context()
|
||||
STATE_SET[app_context][key] = value #type:ignore[literal-required]
|
||||
|
||||
|
||||
+11
-1
@@ -375,9 +375,11 @@ Job = TypedDict('Job',
|
||||
})
|
||||
JobSet : TypeAlias = Dict[str, Job]
|
||||
|
||||
StateValue : TypeAlias = Any
|
||||
StateKey = Literal\
|
||||
[
|
||||
'command',
|
||||
'workflow',
|
||||
'config_path',
|
||||
'temp_path',
|
||||
'jobs_path',
|
||||
@@ -437,6 +439,9 @@ StateKey = Literal\
|
||||
'video_memory_strategy',
|
||||
'log_level',
|
||||
'halt_on_error',
|
||||
'api_host',
|
||||
'api_port',
|
||||
'api_key',
|
||||
'job_id',
|
||||
'job_status',
|
||||
'step_index'
|
||||
@@ -444,6 +449,7 @@ StateKey = Literal\
|
||||
State = TypedDict('State',
|
||||
{
|
||||
'command' : str,
|
||||
'workflow' : WorkFlow,
|
||||
'config_path' : str,
|
||||
'temp_path' : str,
|
||||
'jobs_path' : str,
|
||||
@@ -503,9 +509,13 @@ State = TypedDict('State',
|
||||
'video_memory_strategy' : VideoMemoryStrategy,
|
||||
'log_level' : LogLevel,
|
||||
'halt_on_error' : bool,
|
||||
'api_host' : str,
|
||||
'api_port' : int,
|
||||
'api_key' : str,
|
||||
'job_id' : str,
|
||||
'job_status' : JobStatus,
|
||||
'step_index' : int
|
||||
})
|
||||
ApplyStateItem : TypeAlias = Callable[[Any, Any], None]
|
||||
StateSet : TypeAlias = Dict[AppContext, State]
|
||||
|
||||
ApplyStateItem : TypeAlias = Callable[[StateKey, StateValue], None]
|
||||
|
||||
@@ -24,7 +24,7 @@ def process(start_time : float) -> ErrorCode:
|
||||
process_manager.start()
|
||||
|
||||
for task in tasks:
|
||||
error_code = task() # type:ignore[operator]
|
||||
error_code = task() #type:ignore[operator]
|
||||
|
||||
if error_code > 0:
|
||||
process_manager.end()
|
||||
|
||||
Reference in New Issue
Block a user