





'''simple docstring'''

from typing import List, Optional, Tuple

from tokenizers import pre_tokenizers

from ...tokenization_utils_fast import PreTrainedTokenizerFast
from ...utils import logging
from .tokenization_clip import CLIPTokenizer


lowerCAmelCase__	:					Any	     =       logging.get_logger(__name__)

lowerCAmelCase__	:					Dict	     =       {"vocab_file": "vocab.json", "merges_file": "merges.txt", "tokenizer_file": "tokenizer.json"}

lowerCAmelCase__	:					Optional[int]	     =       {
    "vocab_file": {
        "openai/clip-vit-base-patch32": "https://huggingface.co/openai/clip-vit-base-patch32/resolve/main/vocab.json",
    },
    "merges_file": {
        "openai/clip-vit-base-patch32": "https://huggingface.co/openai/clip-vit-base-patch32/resolve/main/merges.txt",
    },
    "tokenizer_file": {
        "openai/clip-vit-base-patch32": (
            "https://huggingface.co/openai/clip-vit-base-patch32/resolve/main/tokenizer.json"
        ),
    },
}

lowerCAmelCase__	:					Optional[Any]	     =       {
    "openai/clip-vit-base-patch32": 77,
}


class 			SCREAMING_SNAKE_CASE__	(					lowerCamelCase__						):







					"""simple docstring"""






					SCREAMING_SNAKE_CASE				=     VOCAB_FILES_NAMES
					SCREAMING_SNAKE_CASE				=     PRETRAINED_VOCAB_FILES_MAP
					SCREAMING_SNAKE_CASE				=     PRETRAINED_POSITIONAL_EMBEDDINGS_SIZES
					SCREAMING_SNAKE_CASE				=     ['''input_ids''', '''attention_mask''']
					SCREAMING_SNAKE_CASE				=     CLIPTokenizer
					def __init__(					self    :	int						,     UpperCAmelCase_    :	Tuple=None						,     UpperCAmelCase_    :	Any=None						,     UpperCAmelCase_    :	List[str]=None						,     UpperCAmelCase_    :	str="<|endoftext|>"						,     UpperCAmelCase_    :	Optional[Any]="<|startoftext|>"						,     UpperCAmelCase_    :	Any="<|endoftext|>"						,     UpperCAmelCase_    :	int="<|endoftext|>"						,     **UpperCAmelCase_    :	Optional[int]						,     ):







							"""simple docstring"""
							super().__init__(
							    _UpperCAmelCase						,     _UpperCAmelCase						,     tokenizer_file=_UpperCAmelCase						,     unk_token=_UpperCAmelCase						,     bos_token=_UpperCAmelCase						,     eos_token=_UpperCAmelCase						,     pad_token=_UpperCAmelCase						,     **_UpperCAmelCase						,     )

							if not isinstance(self.backend_tokenizer.pre_tokenizer						,     pre_tokenizers.Sequence						):
									raise ValueError(
									    "The `backend_tokenizer` provided does not match the expected format. The CLIP tokenizer has been"
									    " heavily modified from transformers version 4.17.0. You need to convert the tokenizer you are using"
									    " to be compatible with this version.The easiest way to do so is"
									    " `CLIPTokenizerFast.from_pretrained(\"path_to_local_folder_or_hub_repo, from_slow=True)`. If you want"
									    " to use your existing tokenizer, you will have to revert to a version prior to 4.17.0 of"
									    " transformers."						)

							self._wrap_decode_method_backend_tokenizer()
					def 						lowerCamelCase_					(					self    :	Optional[Any]						):







							"""simple docstring"""
							__UpperCAmelCase     :				Dict					   =			self.backend_tokenizer.decode

							def new_decode_method(*UpperCAmelCase_    :	Union[str, Any]						,     **UpperCAmelCase_    :	Any						):
									__UpperCAmelCase     :				str					   =			orig_decode_method(*_UpperCAmelCase						,     **_UpperCAmelCase						)
									__UpperCAmelCase     :				List[Any]					   =			text.replace(self.backend_tokenizer.model.end_of_word_suffix						,     " "						).strip()
									return text

							__UpperCAmelCase     :				Dict					   =			new_decode_method
					def 						lowerCamelCase_					(					self    :	Any						,     UpperCAmelCase_    :	str						,     UpperCAmelCase_    :	Union[str, Any] = None						):







							"""simple docstring"""
							__UpperCAmelCase     :				Any					   =			[self.bos_token_id]
							__UpperCAmelCase     :				str					   =			[self.eos_token_id]

							if token_ids_a is None:
									return bos_token + token_ids_a + eos_token
							return bos_token + token_ids_a + eos_token + eos_token + token_ids_a + eos_token
					def 						lowerCamelCase_					(					self    :	List[str]						,     UpperCAmelCase_    :	Tuple						,     UpperCAmelCase_    :	int = None						):







							"""simple docstring"""
							__UpperCAmelCase     :				Dict					   =			[self.bos_token_id]
							__UpperCAmelCase     :				Any					   =			[self.eos_token_id]

							if token_ids_a is None:
									return len(bos_token + token_ids_a + eos_token						) * [0]
							return len(bos_token + token_ids_a + eos_token + eos_token + token_ids_a + eos_token						) * [0]






					def 						lowerCamelCase_					(					self    :	Any						,     UpperCAmelCase_    :	Optional[int]						,     UpperCAmelCase_    :	Optional[int] = None						):







							"""simple docstring"""
							__UpperCAmelCase     :				Optional[int]					   =			self._tokenizer.model.save(_UpperCAmelCase						,     name=_UpperCAmelCase						)
							return tuple(_UpperCAmelCase						)








import os

from packaging import version

from .. import __version__
from .accelerate_utils import apply_forward_hook
from .constants import (
    CONFIG_NAME,
    DEPRECATED_REVISION_ARGS,
    DIFFUSERS_CACHE,
    DIFFUSERS_DYNAMIC_MODULE_NAME,
    FLAX_WEIGHTS_NAME,
    HF_MODULES_CACHE,
    HUGGINGFACE_CO_RESOLVE_ENDPOINT,
    ONNX_EXTERNAL_WEIGHTS_NAME,
    ONNX_WEIGHTS_NAME,
    SAFETENSORS_WEIGHTS_NAME,
    TEXT_ENCODER_ATTN_MODULE,
    WEIGHTS_NAME,
)
from .deprecation_utils import deprecate
from .doc_utils import replace_example_docstring
from .dynamic_modules_utils import get_class_from_dynamic_module
from .hub_utils import (
    HF_HUB_OFFLINE,
    _add_variant,
    _get_model_file,
    extract_commit_hash,
    http_user_agent,
)
from .import_utils import (
    BACKENDS_MAPPING,
    ENV_VARS_TRUE_AND_AUTO_VALUES,
    ENV_VARS_TRUE_VALUES,
    USE_JAX,
    USE_TF,
    USE_TORCH,
    DummyObject,
    OptionalDependencyNotAvailable,
    is_accelerate_available,
    is_accelerate_version,
    is_bsa_available,
    is_flax_available,
    is_ftfy_available,
    is_inflect_available,
    is_invisible_watermark_available,
    is_k_diffusion_available,
    is_k_diffusion_version,
    is_librosa_available,
    is_note_seq_available,
    is_omegaconf_available,
    is_onnx_available,
    is_safetensors_available,
    is_scipy_available,
    is_tensorboard_available,
    is_tf_available,
    is_torch_available,
    is_torch_version,
    is_torchsde_available,
    is_transformers_available,
    is_transformers_version,
    is_unidecode_available,
    is_wandb_available,
    is_xformers_available,
    requires_backends,
)
from .logging import get_logger
from .outputs import BaseOutput
from .pil_utils import PIL_INTERPOLATION, numpy_to_pil, pt_to_pil
from .torch_utils import is_compiled_module, randn_tensor


if is_torch_available():
   from .testing_utils import (
       floats_tensor,
       load_hf_numpy,
       load_image,
       load_numpy,
       load_pt,
       nightly,
       parse_flag_from_env,
       print_tensor_test,
       require_torch_a,
       require_torch_gpu,
       skip_mps,
       slow,
       torch_all_close,
       torch_device,
   )
   from .torch_utils import maybe_allow_in_graph

from .testing_utils import export_to_gif, export_to_video


UpperCAmelCase			=    get_logger(__name__)






def        __lowerCAmelCase    (SCREAMING_SNAKE_CASE					)->  Tuple:




      """simple docstring"""

      if version.parse(SCREAMING_SNAKE_CASE					) < version.parse(SCREAMING_SNAKE_CASE					):
            if "dev" in min_version:
                  snake_case_       =      (
                      '''This example requires a source install from HuggingFace diffusers (see '''
                      '''`https://huggingface.co/docs/diffusers/installation#install-from-source`),'''
                  )
            else:
                  snake_case_       =      f'''This example requires a minimum version of {min_version},'''
            error_message += f''' but the version found is {__version__}.\n'''
            raise ImportError(SCREAMING_SNAKE_CASE					)