refactor state manager (#1237)

* refactor state manager

* refactor state manager

* refactor state manager

* refactor state manager
This commit is contained in:
Henry Ruhs
2026-09-12 11:02:14 +02:00
committed by GitHub
parent 864038b8f7
commit fb21d1d1b5
60 changed files with 285 additions and 80 deletions
+2
View File
@@ -14,6 +14,8 @@ from .assert_helper import get_test_example_file, get_test_examples_directory
@pytest.fixture(scope = 'module', autouse = True)
def before_all() -> None:
state_manager.init()
process_manager.start()
conditional_download(get_test_examples_directory(),
[
+2
View File
@@ -16,6 +16,8 @@ from .assert_helper import get_test_example_file, get_test_examples_directory, g
@pytest.fixture(scope = 'module', autouse = True)
def before_all() -> None:
state_manager.init()
create_program()
conditional_download(get_test_examples_directory(),
+2
View File
@@ -17,6 +17,8 @@ from .assert_helper import get_test_example_file, get_test_examples_directory
@pytest.fixture(scope = 'module', autouse = True)
def before_all() -> None:
state_manager.init()
process_manager.start()
conditional_download(get_test_examples_directory(),
[
+2
View File
@@ -13,6 +13,8 @@ from .assert_helper import get_test_example_file, get_test_examples_directory
@pytest.fixture(scope = 'module', autouse = True)
def before_all() -> None:
state_manager.init()
process_manager.start()
program = ArgumentParser()
capability_store.register_capability_set(
+1
View File
@@ -17,6 +17,7 @@ from .assert_helper import get_test_example_file, get_test_examples_directory
@pytest.fixture(scope = 'module', autouse = True)
def before_all() -> None:
state_manager.init()
state_manager.init_item('execution_device_ids', [ 0 ])
state_manager.init_item('execution_providers', [ 'cpu' ])
state_manager.init_item('download_providers', [ 'github', 'huggingface' ])
+1
View File
@@ -20,6 +20,7 @@ from .assert_helper import get_test_example_file, get_test_examples_directory
@pytest.fixture(scope = 'module', autouse = True)
def before_all() -> None:
state_manager.init()
state_manager.init_item('download_providers', [ 'github', 'huggingface' ])
state_manager.init_item('processors', [])
+17 -6
View File
@@ -1,22 +1,25 @@
import ctypes
import threading
from contextvars import copy_context
from typing import Iterator
from unittest.mock import AsyncMock, patch
import pytest
from facefusion import rtc, rtc_store, state_manager
from facefusion import rtc, rtc_store, state_manager, store_creator
from facefusion.apis.stream_manager import destroy_stream, process_image, process_video, receive_vision_frames, run_peer_loop
from facefusion.common_helper import is_linux, is_windows
from facefusion.download import conditional_download
from facefusion.hash_helper import create_hash
from facefusion.libraries import datachannel as datachannel_module
from facefusion.session_context import set_session_id
from facefusion.session_context import resolve_local_id, set_session_id
from facefusion.types import RtcPeer, SessionId, VideoCodec
from .assert_helper import get_test_example_file, get_test_examples_directory
@pytest.fixture(scope = 'module', autouse = True)
def before_all() -> None:
state_manager.init()
state_manager.init_item('download_providers', [ 'github', 'huggingface' ])
state_manager.init_item('execution_thread_count', 8)
state_manager.init_item('processors', [])
@@ -30,9 +33,15 @@ def before_all() -> None:
@pytest.fixture(scope = 'function', autouse = True)
def before_each() -> None:
def before_each() -> Iterator[None]:
local_id = resolve_local_id()
rtc_store.clear()
yield
set_session_id(local_id)
@pytest.mark.anyio
async def test_process_image() -> None:
@@ -148,17 +157,19 @@ def test_run_peer_loop(video_codec : VideoCodec, payload_type : int, session_id
}
rtc_store.set_peer(session_id, rtc_peer)
store_creator.set_content(state_manager.STATE_SET, session_id, state_manager.get_state())
set_session_id(session_id)
assert rtc_store.has_peer(session_id) is True
with patch('facefusion.apis.stream_manager.ThreadPoolExecutor') as thread_pool_executor_mock:
with patch('facefusion.thread_helper.ThreadPoolExecutor') as thread_pool_executor_mock:
with patch('facefusion.apis.stream_manager.receive_video_frames'):
with patch('facefusion.apis.stream_manager.run_video_encode_loop'):
thread = threading.Thread(target = run_peer_loop, args = (session_id, rtc_peer), daemon = True)
thread = threading.Thread(target = copy_context().run, args = (run_peer_loop, session_id, rtc_peer), daemon = True)
thread.start()
thread.join(timeout = 5.0)
thread_pool_executor_mock.assert_called_once_with(max_workers = 8, initializer = set_session_id, initargs = (session_id,))
thread_pool_executor_mock.assert_called_once_with(max_workers = 8, initializer = set_session_id, initargs = tuple([ session_id ]))
assert rtc_store.has_peer(session_id) is False
+1
View File
@@ -24,6 +24,7 @@ from .assert_helper import get_test_example_file, get_test_examples_directory
@pytest.fixture(scope = 'module', autouse = True)
def before_all() -> None:
state_manager.init()
state_manager.init_item('download_providers', [ 'github', 'huggingface' ])
state_manager.init_item('execution_thread_count', 8)
state_manager.init_item('processors', [])
+3 -1
View File
@@ -2,7 +2,7 @@
import pytest
from pytest import approx
from facefusion import ffmpeg, ffmpeg_builder, process_manager
from facefusion import ffmpeg, ffmpeg_builder, process_manager, state_manager
from facefusion.audio import detect_audio_duration, get_audio_frame, read_static_audio, restrict_trim_audio_frame
from facefusion.download import conditional_download
from .assert_helper import get_test_example_file, get_test_examples_directory
@@ -10,6 +10,8 @@ from .assert_helper import get_test_example_file, get_test_examples_directory
@pytest.fixture(scope = 'module', autouse = True)
def before_all() -> None:
state_manager.init()
process_manager.start()
conditional_download(get_test_examples_directory(),
[
+3 -1
View File
@@ -4,7 +4,7 @@ import sys
import pytest
import facefusion.choices
from facefusion import ffmpeg, ffmpeg_builder, process_manager
from facefusion import ffmpeg, ffmpeg_builder, process_manager, state_manager
from facefusion.download import conditional_download
from facefusion.jobs.job_manager import clear_jobs, init_jobs
from facefusion.types import WorkflowStrategy
@@ -13,6 +13,8 @@ from .assert_helper import get_test_example_file, get_test_examples_directory, g
@pytest.fixture(scope = 'module', autouse = True)
def before_all() -> None:
state_manager.init()
process_manager.start()
conditional_download(get_test_examples_directory(),
[
+3 -1
View File
@@ -4,7 +4,7 @@ import sys
import pytest
import facefusion.choices
from facefusion import ffmpeg, ffmpeg_builder, process_manager
from facefusion import ffmpeg, ffmpeg_builder, process_manager, state_manager
from facefusion.download import conditional_download
from facefusion.jobs.job_manager import clear_jobs, init_jobs
from facefusion.types import WorkflowStrategy
@@ -13,6 +13,8 @@ from .assert_helper import get_test_example_file, get_test_examples_directory, g
@pytest.fixture(scope = 'module', autouse = True)
def before_all() -> None:
state_manager.init()
process_manager.start()
conditional_download(get_test_examples_directory(),
[
+3 -1
View File
@@ -3,7 +3,7 @@ import sys
import pytest
from facefusion import ffmpeg, ffmpeg_builder, process_manager
from facefusion import ffmpeg, ffmpeg_builder, process_manager, state_manager
from facefusion.download import conditional_download
from facefusion.jobs.job_manager import clear_jobs, init_jobs
from .assert_helper import get_test_example_file, get_test_examples_directory, get_test_jobs_directory, get_test_output_path, is_test_output_file, prepare_test_output_directory
@@ -11,6 +11,8 @@ from .assert_helper import get_test_example_file, get_test_examples_directory, g
@pytest.fixture(scope = 'module', autouse = True)
def before_all() -> None:
state_manager.init()
process_manager.start()
conditional_download(get_test_examples_directory(),
[
+3 -1
View File
@@ -4,7 +4,7 @@ import sys
import pytest
import facefusion.choices
from facefusion import ffmpeg, ffmpeg_builder, process_manager
from facefusion import ffmpeg, ffmpeg_builder, process_manager, state_manager
from facefusion.download import conditional_download
from facefusion.jobs.job_manager import clear_jobs, init_jobs
from facefusion.types import WorkflowStrategy
@@ -13,6 +13,8 @@ from .assert_helper import get_test_example_file, get_test_examples_directory, g
@pytest.fixture(scope = 'module', autouse = True)
def before_all() -> None:
state_manager.init()
process_manager.start()
conditional_download(get_test_examples_directory(),
[
+3 -1
View File
@@ -4,7 +4,7 @@ import sys
import pytest
import facefusion.choices
from facefusion import ffmpeg, ffmpeg_builder, process_manager
from facefusion import ffmpeg, ffmpeg_builder, process_manager, state_manager
from facefusion.download import conditional_download
from facefusion.jobs.job_manager import clear_jobs, init_jobs
from facefusion.types import WorkflowStrategy
@@ -13,6 +13,8 @@ from .assert_helper import get_test_example_file, get_test_examples_directory, g
@pytest.fixture(scope = 'module', autouse = True)
def before_all() -> None:
state_manager.init()
process_manager.start()
conditional_download(get_test_examples_directory(),
[
+3 -1
View File
@@ -4,7 +4,7 @@ import sys
import pytest
import facefusion.choices
from facefusion import ffmpeg, ffmpeg_builder, process_manager
from facefusion import ffmpeg, ffmpeg_builder, process_manager, state_manager
from facefusion.download import conditional_download
from facefusion.jobs.job_manager import clear_jobs, init_jobs
from facefusion.types import WorkflowStrategy
@@ -13,6 +13,8 @@ from .assert_helper import get_test_example_file, get_test_examples_directory, g
@pytest.fixture(scope = 'module', autouse = True)
def before_all() -> None:
state_manager.init()
process_manager.start()
conditional_download(get_test_examples_directory(),
[
+3 -1
View File
@@ -4,7 +4,7 @@ import sys
import pytest
import facefusion.choices
from facefusion import ffmpeg, ffmpeg_builder, process_manager
from facefusion import ffmpeg, ffmpeg_builder, process_manager, state_manager
from facefusion.download import conditional_download
from facefusion.jobs.job_manager import clear_jobs, init_jobs
from facefusion.types import WorkflowStrategy
@@ -13,6 +13,8 @@ from .assert_helper import get_test_example_file, get_test_examples_directory, g
@pytest.fixture(scope = 'module', autouse = True)
def before_all() -> None:
state_manager.init()
process_manager.start()
conditional_download(get_test_examples_directory(),
[
+3 -1
View File
@@ -4,7 +4,7 @@ import sys
import pytest
import facefusion.choices
from facefusion import ffmpeg, ffmpeg_builder, process_manager
from facefusion import ffmpeg, ffmpeg_builder, process_manager, state_manager
from facefusion.download import conditional_download
from facefusion.jobs.job_manager import clear_jobs, init_jobs
from facefusion.types import WorkflowStrategy
@@ -13,6 +13,8 @@ from .assert_helper import get_test_example_file, get_test_examples_directory, g
@pytest.fixture(scope = 'module', autouse = True)
def before_all() -> None:
state_manager.init()
process_manager.start()
conditional_download(get_test_examples_directory(),
[
+3 -1
View File
@@ -4,7 +4,7 @@ import sys
import pytest
import facefusion.choices
from facefusion import ffmpeg, ffmpeg_builder, process_manager
from facefusion import ffmpeg, ffmpeg_builder, process_manager, state_manager
from facefusion.download import conditional_download
from facefusion.jobs.job_manager import clear_jobs, init_jobs
from facefusion.types import WorkflowStrategy
@@ -13,6 +13,8 @@ from .assert_helper import get_test_example_file, get_test_examples_directory, g
@pytest.fixture(scope = 'module', autouse = True)
def before_all() -> None:
state_manager.init()
process_manager.start()
conditional_download(get_test_examples_directory(),
[
+3 -1
View File
@@ -4,7 +4,7 @@ import sys
import pytest
import facefusion.choices
from facefusion import ffmpeg, ffmpeg_builder, process_manager
from facefusion import ffmpeg, ffmpeg_builder, process_manager, state_manager
from facefusion.download import conditional_download
from facefusion.jobs.job_manager import clear_jobs, init_jobs
from facefusion.types import WorkflowStrategy
@@ -13,6 +13,8 @@ from .assert_helper import get_test_example_file, get_test_examples_directory, g
@pytest.fixture(scope = 'module', autouse = True)
def before_all() -> None:
state_manager.init()
process_manager.start()
conditional_download(get_test_examples_directory(),
[
+3 -1
View File
@@ -4,7 +4,7 @@ import sys
import pytest
from facefusion import ffmpeg, ffmpeg_builder, process_manager
from facefusion import ffmpeg, ffmpeg_builder, process_manager, state_manager
from facefusion.download import conditional_download
from facefusion.jobs.job_manager import clear_jobs, count_step_total, init_jobs
from facefusion.session_context import resolve_local_id
@@ -13,6 +13,8 @@ from .assert_helper import get_test_example_file, get_test_examples_directory, g
@pytest.fixture(scope = 'module', autouse = True)
def before_all() -> None:
state_manager.init()
process_manager.start()
conditional_download(get_test_examples_directory(),
[
+3 -1
View File
@@ -4,7 +4,7 @@ import sys
import pytest
from facefusion import ffmpeg, ffmpeg_builder, process_manager
from facefusion import ffmpeg, ffmpeg_builder, process_manager, state_manager
from facefusion.download import conditional_download
from facefusion.jobs.job_manager import clear_jobs, init_jobs, move_job_file, set_steps_status
from facefusion.session_context import resolve_local_id
@@ -13,6 +13,8 @@ from .assert_helper import get_test_example_file, get_test_examples_directory, g
@pytest.fixture(scope = 'module', autouse = True)
def before_all() -> None:
state_manager.init()
process_manager.start()
conditional_download(get_test_examples_directory(),
[
+3 -1
View File
@@ -4,7 +4,7 @@ import sys
import pytest
import facefusion.choices
from facefusion import ffmpeg, ffmpeg_builder, process_manager
from facefusion import ffmpeg, ffmpeg_builder, process_manager, state_manager
from facefusion.download import conditional_download
from facefusion.jobs.job_manager import clear_jobs, init_jobs
from facefusion.types import WorkflowStrategy
@@ -13,6 +13,8 @@ from .assert_helper import get_test_example_file, get_test_examples_directory, g
@pytest.fixture(scope = 'module', autouse = True)
def before_all() -> None:
state_manager.init()
process_manager.start()
conditional_download(get_test_examples_directory(),
[
+3 -1
View File
@@ -4,7 +4,7 @@ import sys
import numpy
import pytest
from facefusion import ffmpeg, ffmpeg_builder, process_manager
from facefusion import ffmpeg, ffmpeg_builder, process_manager, state_manager
from facefusion.download import conditional_download
from facefusion.jobs.job_manager import clear_jobs, init_jobs
from facefusion.types import Fps, WorkflowStrategy
@@ -14,6 +14,8 @@ from .assert_helper import get_test_example_file, get_test_examples_directory, g
@pytest.fixture(scope = 'module', autouse = True)
def before_all() -> None:
state_manager.init()
process_manager.start()
conditional_download(get_test_examples_directory(),
[
+3 -1
View File
@@ -3,7 +3,7 @@ import sys
import pytest
from facefusion import ffmpeg, ffmpeg_builder, process_manager
from facefusion import ffmpeg, ffmpeg_builder, process_manager, state_manager
from facefusion.download import conditional_download
from facefusion.jobs.job_manager import clear_jobs, init_jobs
from facefusion.types import Resolution, Scale
@@ -13,6 +13,8 @@ from .assert_helper import get_test_example_file, get_test_examples_directory, g
@pytest.fixture(scope = 'module', autouse = True)
def before_all() -> None:
state_manager.init()
process_manager.start()
conditional_download(get_test_examples_directory(),
[
+1
View File
@@ -16,6 +16,7 @@ from facefusion.vision import read_video_frame
@pytest.fixture(scope = 'module', autouse = True)
def before_all() -> None:
state_manager.init()
state_manager.init_item('download_providers', [ 'github', 'huggingface' ])
conditional_download(get_test_examples_directory(), [ 'https://github.com/facefusion/facefusion-assets/releases/download/examples-3.0.0/target-240p.mp4' ])
+1
View File
@@ -15,6 +15,7 @@ from facefusion.vision import read_video_frame
@pytest.fixture(scope = 'module', autouse = True)
def before_all() -> None:
state_manager.init()
state_manager.init_item('download_providers', [ 'github', 'huggingface' ])
conditional_download(get_test_examples_directory(), [ 'https://github.com/facefusion/facefusion-assets/releases/download/examples-3.0.0/target-240p.mp4' ])
+1
View File
@@ -16,6 +16,7 @@ from facefusion.libraries import opus as opus_module
@pytest.fixture(scope = 'module', autouse = True)
def before_all() -> None:
state_manager.init()
state_manager.init_item('download_providers', [ 'github', 'huggingface' ])
conditional_download(get_test_examples_directory(), [ 'https://github.com/facefusion/facefusion-assets/releases/download/examples-3.0.0/source.mp3' ])
+1
View File
@@ -15,6 +15,7 @@ from facefusion.libraries import opus as opus_module
@pytest.fixture(scope = 'module', autouse = True)
def before_all() -> None:
state_manager.init()
state_manager.init_item('download_providers', [ 'github', 'huggingface' ])
conditional_download(get_test_examples_directory(), [ 'https://github.com/facefusion/facefusion-assets/releases/download/examples-3.0.0/source.mp3' ])
+1
View File
@@ -17,6 +17,7 @@ from facefusion.vision import read_video_frame
@pytest.fixture(scope = 'module', autouse = True)
def before_all() -> None:
state_manager.init()
state_manager.init_item('download_providers', [ 'github', 'huggingface' ])
conditional_download(get_test_examples_directory(), [ 'https://github.com/facefusion/facefusion-assets/releases/download/examples-3.0.0/target-240p.mp4' ])
+1
View File
@@ -16,6 +16,7 @@ from facefusion.vision import read_video_frame
@pytest.fixture(scope = 'module', autouse = True)
def before_all() -> None:
state_manager.init()
state_manager.init_item('download_providers', [ 'github', 'huggingface' ])
conditional_download(get_test_examples_directory(), [ 'https://github.com/facefusion/facefusion-assets/releases/download/examples-3.0.0/target-240p.mp4' ])
+1
View File
@@ -5,6 +5,7 @@ from facefusion import config, state_manager
@pytest.fixture(scope = 'module', autouse = True)
def before_all() -> None:
state_manager.init()
state_manager.init_item('config_path', 'facefusion.ini')
config_parser = config.get_static_config_parser()
config_parser.read_dict(
+2
View File
@@ -12,6 +12,8 @@ from .assert_helper import get_test_example_file, get_test_examples_directory
@pytest.fixture(scope = 'module', autouse = True)
def before_all() -> None:
state_manager.init()
process_manager.start()
conditional_download(get_test_examples_directory(),
[
+2
View File
@@ -11,6 +11,8 @@ from .assert_helper import get_test_example_file, get_test_examples_directory
@pytest.fixture(scope = 'module', autouse = True)
def before_all() -> None:
state_manager.init()
process_manager.start()
conditional_download(get_test_examples_directory(),
[
+2
View File
@@ -13,6 +13,8 @@ from .assert_helper import get_test_example_file, get_test_examples_directory
@pytest.fixture(scope = 'module', autouse = True)
def before_all() -> None:
state_manager.init()
conditional_download(get_test_examples_directory(),
[
'https://github.com/facefusion/facefusion-assets/releases/download/examples-3.0.0/target-240p.mp4'
+2
View File
@@ -17,6 +17,8 @@ from .assert_helper import get_test_example_file, get_test_examples_directory, g
@pytest.fixture(scope = 'module', autouse = True)
def before_all() -> None:
state_manager.init()
process_manager.start()
state_manager.init_item('temp_path', tempfile.gettempdir())
state_manager.init_item('temp_frame_format', 'png')
+3 -1
View File
@@ -1,7 +1,7 @@
import pytest
from facefusion import ffmpeg, ffmpeg_builder, process_manager
from facefusion import ffmpeg, ffmpeg_builder, process_manager, state_manager
from facefusion.download import conditional_download
from facefusion.ffprobe import extract_audio_metadata, extract_video_metadata
from .assert_helper import get_test_example_file, get_test_examples_directory
@@ -9,6 +9,8 @@ from .assert_helper import get_test_example_file, get_test_examples_directory
@pytest.fixture(scope = 'module', autouse = True)
def before_all() -> None:
state_manager.init()
process_manager.start()
conditional_download(get_test_examples_directory(),
+1
View File
@@ -11,6 +11,7 @@ from facefusion.inference_manager import get_inference_pool, resolve_static_infe
@pytest.fixture(scope = 'module', autouse = True)
def before_all() -> None:
state_manager.init()
state_manager.init_item('execution_device_ids', [ 0 ])
state_manager.init_item('execution_providers', [ 'cpu' ])
state_manager.init_item('download_providers', [ 'github' ])
+3 -1
View File
@@ -2,7 +2,7 @@ import os
import pytest
from facefusion import ffmpeg, ffmpeg_builder, process_manager
from facefusion import ffmpeg, ffmpeg_builder, process_manager, state_manager
from facefusion.download import conditional_download
from facefusion.filesystem import copy_file, create_directory, get_file_extension
from facefusion.jobs.job_manager import add_step, clear_jobs, create_job, init_jobs, move_job_file, submit_job, submit_jobs
@@ -13,6 +13,8 @@ from .assert_helper import get_test_example_file, get_test_examples_directory, g
@pytest.fixture(scope = 'module', autouse = True)
def before_all() -> None:
state_manager.init()
process_manager.start()
conditional_download(get_test_examples_directory(),
[
+1
View File
@@ -8,6 +8,7 @@ from facefusion.libraries import aom as aom_module
@pytest.fixture(scope = 'module', autouse = True)
def before_all() -> None:
state_manager.init()
state_manager.init_item('download_providers', [ 'github', 'huggingface' ])
aom_module.pre_check()
+1
View File
@@ -8,6 +8,7 @@ from facefusion.libraries import datachannel as datachannel_module
@pytest.fixture(scope = 'module', autouse = True)
def before_all() -> None:
state_manager.init()
state_manager.init_item('download_providers', [ 'github', 'huggingface' ])
datachannel_module.pre_check()
+1
View File
@@ -8,6 +8,7 @@ from facefusion.libraries import opus as opus_module
@pytest.fixture(scope = 'module', autouse = True)
def before_all() -> None:
state_manager.init()
state_manager.init_item('download_providers', [ 'github', 'huggingface' ])
opus_module.pre_check()
+1
View File
@@ -8,6 +8,7 @@ from facefusion.libraries import vpx as vpx_module
@pytest.fixture(scope = 'module', autouse = True)
def before_all() -> None:
state_manager.init()
state_manager.init_item('download_providers', [ 'github', 'huggingface' ])
vpx_module.pre_check()
+9 -1
View File
@@ -1,3 +1,5 @@
from typing import Iterator
import pytest
from facefusion import session_context
@@ -5,13 +7,19 @@ from facefusion.process_manager import clear, end, get_state, init, is_pending,
@pytest.fixture(scope = 'function', autouse = True)
def before_each() -> None:
def before_each() -> Iterator[None]:
local_id = session_context.resolve_local_id()
session_context.set_session_id('session-a')
clear()
session_context.set_session_id('session-b')
clear()
session_context.set_session_id('session-a')
yield
session_context.set_session_id(local_id)
def test_init() -> None:
set_state('processing')
+1
View File
@@ -10,6 +10,7 @@ from facefusion.types import RtcPeer, VideoCodec
@pytest.fixture(scope = 'module', autouse = True)
def before_all() -> None:
state_manager.init()
state_manager.init_item('download_providers', [ 'github', 'huggingface' ])
datachannel_module.pre_check()
+14 -3
View File
@@ -1,16 +1,25 @@
from typing import Iterator
import pytest
from facefusion.session_context import get_session_id, resolve_local_id, set_session_id
@pytest.fixture(scope = 'function', autouse = True)
def before_each() -> None:
def before_each() -> Iterator[None]:
local_id = resolve_local_id()
set_session_id(local_id)
yield
set_session_id(local_id)
def test_get_session_id() -> None:
assert get_session_id() == resolve_local_id()
local_id = resolve_local_id()
assert get_session_id() == local_id
set_session_id('session-a')
@@ -18,4 +27,6 @@ def test_get_session_id() -> None:
def test_resolve_local_id() -> None:
assert resolve_local_id() == resolve_local_id()
local_id = resolve_local_id()
assert resolve_local_id() == local_id
+50 -18
View File
@@ -1,35 +1,67 @@
from typing import Union
from typing import Iterator
import pytest
from facefusion.processors.types import ProcessorState
from facefusion.state_manager import STATE_SET, get_item, init_item, set_item
from facefusion.types import AppContext, State
def get_state(app_context : AppContext) -> Union[State, ProcessorState]:
return STATE_SET.get(app_context)
def clear_state(app_context : AppContext) -> None:
STATE_SET[app_context] = {} #type:ignore[typeddict-item]
from facefusion import store_creator
from facefusion.session_context import resolve_local_id, set_session_id
from facefusion.state_manager import STATE_SET, clear, get_item, get_state, init, init_item, set_item, set_state
@pytest.fixture(scope = 'function', autouse = True)
def before_each() -> None:
clear_state('cli')
clear_state('api')
def before_each() -> Iterator[None]:
local_id = resolve_local_id()
set_session_id(local_id)
clear()
store_creator.delete_content(STATE_SET, 'session-a')
yield
set_session_id(local_id)
def test_init() -> None:
init_item('video_memory_strategy', 'tolerant')
set_session_id('session-a')
assert get_state() is None
init()
set_item('video_memory_strategy', 'strict')
assert get_state() == { 'video_memory_strategy': 'strict' }
set_session_id(resolve_local_id())
assert get_state() == { 'video_memory_strategy': 'tolerant' }
def test_get_state() -> None:
init_item('video_memory_strategy', 'tolerant')
assert get_state() == { 'video_memory_strategy': 'tolerant' }
def test_set_state() -> None:
set_state({ 'video_memory_strategy': 'strict' })
assert get_state() == { 'video_memory_strategy': 'strict' }
def test_clear() -> None:
init_item('video_memory_strategy', 'tolerant')
clear()
assert get_state() == {}
def test_init_item() -> None:
init_item('video_memory_strategy', 'tolerant')
assert get_state('cli').get('video_memory_strategy') == 'tolerant'
assert get_state('api').get('video_memory_strategy') == 'tolerant'
assert get_state().get('video_memory_strategy') == 'tolerant'
def test_get_item_and_set_item() -> None:
set_item('video_memory_strategy', 'tolerant')
assert get_item('video_memory_strategy') == 'tolerant'
assert get_state('api').get('video_memory_strategy') is None
+1
View File
@@ -11,6 +11,7 @@ from .assert_helper import get_test_example_file, get_test_examples_directory
@pytest.fixture(scope = 'module', autouse = True)
def before_all() -> None:
state_manager.init()
state_manager.init_item('temp_path', tempfile.gettempdir())
state_manager.init_item('temp_frame_format', 'png')
+22
View File
@@ -0,0 +1,22 @@
from typing import Iterator
import pytest
from facefusion.session_context import get_session_id, resolve_local_id, set_session_id
from facefusion.thread_helper import create_executor
@pytest.fixture(scope = 'function', autouse = True)
def before_each() -> Iterator[None]:
local_id = resolve_local_id()
set_session_id('session-a')
yield
set_session_id(local_id)
def test_create_executor() -> None:
with create_executor(1) as executor:
assert executor.submit(get_session_id).result() == 'session-a'
+2
View File
@@ -15,6 +15,8 @@ from .assert_helper import get_test_example_file, get_test_examples_directory
@pytest.fixture(scope = 'module', autouse = True)
def before_all() -> None:
state_manager.init()
process_manager.start()
conditional_download(get_test_examples_directory(),
[
+3 -1
View File
@@ -2,7 +2,7 @@
import numpy
import pytest
from facefusion import ffmpeg, ffmpeg_builder, process_manager
from facefusion import ffmpeg, ffmpeg_builder, process_manager, state_manager
from facefusion.download import conditional_download
from facefusion.vision import calculate_histogram_difference, count_video_frame_total, detect_image_resolution, detect_video_duration, detect_video_fps, detect_video_resolution, match_frame_color, normalize_resolution, pack_resolution, predict_video_frame_total, read_image, read_video_frame, resolve_extract_frame_index, resolve_target_frame_index, restrict_image_resolution, restrict_trim_video_frame, restrict_video_fps, restrict_video_resolution, scale_resolution, select_video_frames, unpack_resolution, write_image
from .assert_helper import get_test_example_file, get_test_examples_directory, get_test_output_path, prepare_test_output_directory
@@ -10,6 +10,8 @@ from .assert_helper import get_test_example_file, get_test_examples_directory, g
@pytest.fixture(scope = 'module', autouse = True)
def before_all() -> None:
state_manager.init()
process_manager.start()
conditional_download(get_test_examples_directory(),
[
+2
View File
@@ -8,6 +8,8 @@ from .assert_helper import get_test_example_file, get_test_examples_directory
@pytest.fixture(scope = 'module', autouse = True)
def before_all() -> None:
state_manager.init()
conditional_download(get_test_examples_directory(),
[
'https://github.com/facefusion/facefusion-assets/releases/download/examples-3.0.0/source.jpg',