





import inspect
import os
import unittest
from pathlib import Path

import torch

import accelerate
from accelerate.test_utils import execute_subprocess_async
from accelerate.test_utils.testing import run_command




class 			__UpperCamelCase    (							unittest.TestCase    ):
     __A	:  List[Any]							  =   inspect.getfile(accelerate.test_utils    )
     __A	:  Optional[Any]							  =   os.path.sep.join(mod_file.split(os.path.sep    )[:-1] + ["""scripts""", """test_cli.py"""]    )

     __A	:  Optional[int]							  =   ["""accelerate""", """launch"""]
     __A	:  Any							  =   Path.home() / """.cache/huggingface/accelerate"""
     __A	:  Any							  =   """default_config.yaml"""
     __A	:  Union[str, Any]							  =   config_folder / config_file
     __A	:  List[Any]							  =   config_folder / """_default_config.yaml"""

     __A	:  Union[str, Any]							  =   Path("""tests/test_configs"""    )





     @classmethod
     def 		UpperCamelCase(     cls					):
        if cls.config_path.is_file():
           cls.config_path.rename(cls.changed_path					)





     @classmethod
     def 		UpperCamelCase(     cls					):
        if cls.changed_path.is_file():
           cls.changed_path.rename(cls.config_path					)





     def 		UpperCamelCase(     self					):
        _UpperCAmelCase           =   self.base_cmd
        if torch.cuda.is_available() and (torch.cuda.device_count() > 1):
           cmd += ["--multi_gpu"]
        execute_subprocess_async(cmd + [self.test_file_path]				,							env=os.environ.copy()					)





     def 		UpperCamelCase(     self					):
        for config in sorted(self.test_config_path.glob('''**/*.yaml'''					)					):
           with self.subTest(config_file=_UpperCamelCase					):
              execute_subprocess_async(
                  self.base_cmd + ['''--config_file''', str(_UpperCamelCase					), self.test_file_path]				,							env=os.environ.copy()					)





     def 		UpperCamelCase(     self					):
        execute_subprocess_async(['''accelerate''', '''test''']				,							env=os.environ.copy()					)




class 			__UpperCamelCase    (							unittest.TestCase    ):
     __A	:  Dict							  =   """test-tpu"""
     __A	:  Optional[Any]							  =   """us-central1-a"""
     __A	:  int							  =   """ls"""
     __A	:  Tuple							  =   ["""accelerate""", """tpu-config"""]
     __A	:  Union[str, Any]							  =   """cd /usr/share"""
     __A	:  Optional[Any]							  =   """tests/test_samples/test_command_file.sh"""
     __A	:  Any							  =   """Running gcloud compute tpus tpu-vm ssh"""





     def 		UpperCamelCase(     self					):
        _UpperCAmelCase           =   run_command(
            self.cmd
            + ['''--command''', self.command, '''--tpu_zone''', self.tpu_zone, '''--tpu_name''', self.tpu_name, '''--debug''']				,							return_stdout=_UpperCamelCase				,							)
        self.assertIn(
            f'''{self.gcloud} test-tpu --zone us-central1-a --command {self.base_output}; ls --worker all'''				,							_UpperCamelCase				,							)





     def 		UpperCamelCase(     self					):
        _UpperCAmelCase           =   run_command(
            self.cmd
            + [
                '''--config_file''',
                '''tests/test_configs/0_12_0.yaml''',
                '''--command''',
                self.command,
                '''--tpu_zone''',
                self.tpu_zone,
                '''--tpu_name''',
                self.tpu_name,
                '''--debug''',
            ]				,							return_stdout=_UpperCamelCase				,							)
        self.assertIn(
            f'''{self.gcloud} test-tpu --zone us-central1-a --command {self.base_output}; ls --worker all'''				,							_UpperCamelCase				,							)





     def 		UpperCamelCase(     self					):
        _UpperCAmelCase           =   run_command(
            self.cmd + ['''--config_file''', '''tests/test_configs/latest.yaml''', '''--debug''']				,							return_stdout=_UpperCamelCase					)
        self.assertIn(
            f'''{self.gcloud} test-tpu --zone us-central1-a --command {self.base_output}; echo "hello world"; echo "this is a second command" --worker all'''				,							_UpperCamelCase				,							)





     def 		UpperCamelCase(     self					):
        _UpperCAmelCase           =   run_command(
            self.cmd + ['''--config_file''', '''tests/test_configs/latest.yaml''', '''--command''', self.command, '''--debug''']				,							return_stdout=_UpperCamelCase				,							)
        self.assertIn(
            f'''{self.gcloud} test-tpu --zone us-central1-a --command {self.base_output}; ls --worker all'''				,							_UpperCamelCase				,							)





     def 		UpperCamelCase(     self					):
        _UpperCAmelCase           =   run_command(
            self.cmd
            + [
                '''--config_file''',
                '''tests/test_configs/latest.yaml''',
                '''--command''',
                self.command,
                '''--command''',
                '''echo "Hello World"''',
                '''--debug''',
            ]				,							return_stdout=_UpperCamelCase				,							)
        self.assertIn(
            f'''{self.gcloud} test-tpu --zone us-central1-a --command {self.base_output}; ls; echo "Hello World" --worker all'''				,							_UpperCamelCase				,							)





     def 		UpperCamelCase(     self					):
        _UpperCAmelCase           =   run_command(
            self.cmd
            + ['''--config_file''', '''tests/test_configs/latest.yaml''', '''--command_file''', self.command_file, '''--debug''']				,							return_stdout=_UpperCamelCase				,							)
        self.assertIn(
            f'''{self.gcloud} test-tpu --zone us-central1-a --command {self.base_output}; echo "hello world"; echo "this is a second command" --worker all'''				,							_UpperCamelCase				,							)





     def 		UpperCamelCase(     self					):
        _UpperCAmelCase           =   run_command(
            self.cmd
            + [
                '''--config_file''',
                '''tests/test_configs/0_12_0.yaml''',
                '''--command_file''',
                self.command_file,
                '''--tpu_zone''',
                self.tpu_zone,
                '''--tpu_name''',
                self.tpu_name,
                '''--debug''',
            ]				,							return_stdout=_UpperCamelCase				,							)
        self.assertIn(
            f'''{self.gcloud} test-tpu --zone us-central1-a --command {self.base_output}; echo "hello world"; echo "this is a second command" --worker all'''				,							_UpperCamelCase				,							)





     def 		UpperCamelCase(     self					):
        _UpperCAmelCase           =   run_command(
            self.cmd + ['''--config_file''', '''tests/test_configs/latest.yaml''', '''--install_accelerate''', '''--debug''']				,							return_stdout=_UpperCamelCase				,							)
        self.assertIn(
            f'''{self.gcloud} test-tpu --zone us-central1-a --command {self.base_output}; pip install accelerate -U; echo "hello world"; echo "this is a second command" --worker all'''				,							_UpperCamelCase				,							)





     def 		UpperCamelCase(     self					):
        _UpperCAmelCase           =   run_command(
            self.cmd
            + [
                '''--config_file''',
                '''tests/test_configs/latest.yaml''',
                '''--install_accelerate''',
                '''--accelerate_version''',
                '''12.0.0''',
                '''--debug''',
            ]				,							return_stdout=_UpperCamelCase				,							)
        self.assertIn(
            f'''{self.gcloud} test-tpu --zone us-central1-a --command {self.base_output}; pip install accelerate==12.0.0; echo "hello world"; echo "this is a second command" --worker all'''				,							_UpperCamelCase				,							)






'''simple docstring'''




__UpperCAmelCase            =       """0.18.2"""

from .configuration_utils import ConfigMixin
from .utils import (
    OptionalDependencyNotAvailable,
    is_flax_available,
    is_inflect_available,
    is_invisible_watermark_available,
    is_k_diffusion_available,
    is_k_diffusion_version,
    is_librosa_available,
    is_note_seq_available,
    is_onnx_available,
    is_scipy_available,
    is_torch_available,
    is_torchsde_available,
    is_transformers_available,
    is_transformers_version,
    is_unidecode_available,
    logging,
)


try:
							if not is_onnx_available():
														raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
							from .utils.dummy_onnx_objects import *  # noqa F403
else:
							from .pipelines import OnnxRuntimeModel

try:
							if not is_torch_available():
														raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
							from .utils.dummy_pt_objects import *  # noqa F403
else:
							from .models import (
							    AutoencoderKL,
							    ControlNetModel,
							    ModelMixin,
							    PriorTransformer,
							    TaFilmDecoder,
							    TransformeraDModel,
							    UNetaDModel,
							    UNetaDConditionModel,
							    UNetaDModel,
							    UNetaDConditionModel,
							    VQModel,
							)
							from .optimization import (
							    get_constant_schedule,
							    get_constant_schedule_with_warmup,
							    get_cosine_schedule_with_warmup,
							    get_cosine_with_hard_restarts_schedule_with_warmup,
							    get_linear_schedule_with_warmup,
							    get_polynomial_decay_schedule_with_warmup,
							    get_scheduler,
							)
							from .pipelines import (
							    AudioPipelineOutput,
							    ConsistencyModelPipeline,
							    DanceDiffusionPipeline,
							    DDIMPipeline,
							    DDPMPipeline,
							    DiffusionPipeline,
							    DiTPipeline,
							    ImagePipelineOutput,
							    KarrasVePipeline,
							    LDMPipeline,
							    LDMSuperResolutionPipeline,
							    PNDMPipeline,
							    RePaintPipeline,
							    ScoreSdeVePipeline,
							)
							from .schedulers import (
							    CMStochasticIterativeScheduler,
							    DDIMInverseScheduler,
							    DDIMParallelScheduler,
							    DDIMScheduler,
							    DDPMParallelScheduler,
							    DDPMScheduler,
							    DEISMultistepScheduler,
							    DPMSolverMultistepInverseScheduler,
							    DPMSolverMultistepScheduler,
							    DPMSolverSinglestepScheduler,
							    EulerAncestralDiscreteScheduler,
							    EulerDiscreteScheduler,
							    HeunDiscreteScheduler,
							    IPNDMScheduler,
							    KarrasVeScheduler,
							    KDPMaAncestralDiscreteScheduler,
							    KDPMaDiscreteScheduler,
							    PNDMScheduler,
							    RePaintScheduler,
							    SchedulerMixin,
							    ScoreSdeVeScheduler,
							    UnCLIPScheduler,
							    UniPCMultistepScheduler,
							    VQDiffusionScheduler,
							)
							from .training_utils import EMAModel

try:
							if not (is_torch_available() and is_scipy_available()):
														raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
							from .utils.dummy_torch_and_scipy_objects import *  # noqa F403
else:
							from .schedulers import LMSDiscreteScheduler

try:
							if not (is_torch_available() and is_torchsde_available()):
														raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
							from .utils.dummy_torch_and_torchsde_objects import *  # noqa F403
else:
							from .schedulers import DPMSolverSDEScheduler

try:
							if not (is_torch_available() and is_transformers_available()):
														raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
							from .utils.dummy_torch_and_transformers_objects import *  # noqa F403
else:
							from .pipelines import (
							    AltDiffusionImgaImgPipeline,
							    AltDiffusionPipeline,
							    AudioLDMPipeline,
							    CycleDiffusionPipeline,
							    IFImgaImgPipeline,
							    IFImgaImgSuperResolutionPipeline,
							    IFInpaintingPipeline,
							    IFInpaintingSuperResolutionPipeline,
							    IFPipeline,
							    IFSuperResolutionPipeline,
							    ImageTextPipelineOutput,
							    KandinskyImgaImgPipeline,
							    KandinskyInpaintPipeline,
							    KandinskyPipeline,
							    KandinskyPriorPipeline,
							    KandinskyVaaControlnetImgaImgPipeline,
							    KandinskyVaaControlnetPipeline,
							    KandinskyVaaImgaImgPipeline,
							    KandinskyVaaInpaintPipeline,
							    KandinskyVaaPipeline,
							    KandinskyVaaPriorEmbaEmbPipeline,
							    KandinskyVaaPriorPipeline,
							    LDMTextToImagePipeline,
							    PaintByExamplePipeline,
							    SemanticStableDiffusionPipeline,
							    ShapEImgaImgPipeline,
							    ShapEPipeline,
							    StableDiffusionAttendAndExcitePipeline,
							    StableDiffusionControlNetImgaImgPipeline,
							    StableDiffusionControlNetInpaintPipeline,
							    StableDiffusionControlNetPipeline,
							    StableDiffusionDepthaImgPipeline,
							    StableDiffusionDiffEditPipeline,
							    StableDiffusionImageVariationPipeline,
							    StableDiffusionImgaImgPipeline,
							    StableDiffusionInpaintPipeline,
							    StableDiffusionInpaintPipelineLegacy,
							    StableDiffusionInstructPixaPixPipeline,
							    StableDiffusionLatentUpscalePipeline,
							    StableDiffusionLDMaDPipeline,
							    StableDiffusionModelEditingPipeline,
							    StableDiffusionPanoramaPipeline,
							    StableDiffusionParadigmsPipeline,
							    StableDiffusionPipeline,
							    StableDiffusionPipelineSafe,
							    StableDiffusionPixaPixZeroPipeline,
							    StableDiffusionSAGPipeline,
							    StableDiffusionUpscalePipeline,
							    StableUnCLIPImgaImgPipeline,
							    StableUnCLIPPipeline,
							    TextToVideoSDPipeline,
							    TextToVideoZeroPipeline,
							    UnCLIPImageVariationPipeline,
							    UnCLIPPipeline,
							    UniDiffuserModel,
							    UniDiffuserPipeline,
							    UniDiffuserTextDecoder,
							    VersatileDiffusionDualGuidedPipeline,
							    VersatileDiffusionImageVariationPipeline,
							    VersatileDiffusionPipeline,
							    VersatileDiffusionTextToImagePipeline,
							    VideoToVideoSDPipeline,
							    VQDiffusionPipeline,
							)

try:
							if not (is_torch_available() and is_transformers_available() and is_invisible_watermark_available()):
														raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
							from .utils.dummy_torch_and_transformers_and_invisible_watermark_objects import *  # noqa F403
else:
							from .pipelines import StableDiffusionXLImgaImgPipeline, StableDiffusionXLPipeline

try:
							if not (is_torch_available() and is_transformers_available() and is_k_diffusion_available()):
														raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
							from .utils.dummy_torch_and_transformers_and_k_diffusion_objects import *  # noqa F403
else:
							from .pipelines import StableDiffusionKDiffusionPipeline

try:
							if not (is_torch_available() and is_transformers_available() and is_onnx_available()):
														raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
							from .utils.dummy_torch_and_transformers_and_onnx_objects import *  # noqa F403
else:
							from .pipelines import (
							    OnnxStableDiffusionImgaImgPipeline,
							    OnnxStableDiffusionInpaintPipeline,
							    OnnxStableDiffusionInpaintPipelineLegacy,
							    OnnxStableDiffusionPipeline,
							    OnnxStableDiffusionUpscalePipeline,
							    StableDiffusionOnnxPipeline,
							)

try:
							if not (is_torch_available() and is_librosa_available()):
														raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
							from .utils.dummy_torch_and_librosa_objects import *  # noqa F403
else:
							from .pipelines import AudioDiffusionPipeline, Mel

try:
							if not (is_transformers_available() and is_torch_available() and is_note_seq_available()):
														raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
							from .utils.dummy_transformers_and_torch_and_note_seq_objects import *  # noqa F403
else:
							from .pipelines import SpectrogramDiffusionPipeline

try:
							if not is_flax_available():
														raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
							from .utils.dummy_flax_objects import *  # noqa F403
else:
							from .models.controlnet_flax import FlaxControlNetModel
							from .models.modeling_flax_utils import FlaxModelMixin
							from .models.unet_ad_condition_flax import FlaxUNetaDConditionModel
							from .models.vae_flax import FlaxAutoencoderKL
							from .pipelines import FlaxDiffusionPipeline
							from .schedulers import (
							    FlaxDDIMScheduler,
							    FlaxDDPMScheduler,
							    FlaxDPMSolverMultistepScheduler,
							    FlaxKarrasVeScheduler,
							    FlaxLMSDiscreteScheduler,
							    FlaxPNDMScheduler,
							    FlaxSchedulerMixin,
							    FlaxScoreSdeVeScheduler,
							)


try:
							if not (is_flax_available() and is_transformers_available()):
														raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
							from .utils.dummy_flax_and_transformers_objects import *  # noqa F403
else:
							from .pipelines import (
							    FlaxStableDiffusionControlNetPipeline,
							    FlaxStableDiffusionImgaImgPipeline,
							    FlaxStableDiffusionInpaintPipeline,
							    FlaxStableDiffusionPipeline,
							)

try:
							if not (is_note_seq_available()):
														raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
							from .utils.dummy_note_seq_objects import *  # noqa F403
else:
							from .pipelines import MidiProcessor



