


"""simple docstring"""







import json
import os
import shutil
import tempfile
import unittest

import numpy as np
import pytest

from transformers import CLIPTokenizer, CLIPTokenizerFast
from transformers.models.clip.tokenization_clip import VOCAB_FILES_NAMES
from transformers.testing_utils import require_vision
from transformers.utils import IMAGE_PROCESSOR_NAME, is_vision_available


if is_vision_available():
 from PIL import Image

 from transformers import OwlViTImageProcessor, OwlViTProcessor






@require_vision
class 						_A  (  unittest.TestCase  ):







    """simple docstring"""




    def 	__snake_case							(					self				:    List[str]):
      a						:		Dict      							=			tempfile.mkdtemp()

      # fmt: off
      a						:		Any      							=			["", "l", "o", "w", "e", "r", "s", "t", "i", "d", "n", "lo", "l</w>", "w</w>", "r</w>", "t</w>", "low</w>", "er</w>", "lowest</w>", "newer</w>", "wider", "<unk>", "<|startoftext|>", "<|endoftext|>"]
      # fmt: on
      a						:		List[Any]      							=			dict(zip(__UpperCAmelCase				, range(len(__UpperCAmelCase))))
      a						:		Optional[int]      							=			["#version: 0.2", "l o", "lo w</w>", "e r</w>", ""]
      a						:		Optional[int]      							=			{"unk_token": "<unk>"}

      a						:		int      							=			os.path.join(self.tmpdirname				, VOCAB_FILES_NAMES["vocab_file"])
      a						:		Optional[int]      							=			os.path.join(self.tmpdirname				, VOCAB_FILES_NAMES["merges_file"])
      with open(self.vocab_file				, "w"				, encoding="utf-8") as fp:
        fp.write(json.dumps(__UpperCAmelCase) + "\n")
      with open(self.merges_file				, "w"				, encoding="utf-8") as fp:
        fp.write("\n".join(__UpperCAmelCase))

      a						:		Optional[Any]      							=			{
          "do_resize": True,
          "size": 20,
          "do_center_crop": True,
          "crop_size": 18,
          "do_normalize": True,
          "image_mean": [0.48_145_466, 0.4_578_275, 0.40_821_073],
          "image_std": [0.26_862_954, 0.26_130_258, 0.27_577_711],
      }
      a						:		int      							=			os.path.join(self.tmpdirname				, __UpperCAmelCase)
      with open(self.image_processor_file				, "w"				, encoding="utf-8") as fp:
        json.dump(__UpperCAmelCase				, __UpperCAmelCase)






    def 	__snake_case							(					self				:    int				, **__UpperCAmelCase				:    int):
      return CLIPTokenizer.from_pretrained(self.tmpdirname				, pad_token="!"				, **__UpperCAmelCase)






    def 	__snake_case							(					self				:    Optional[int]				, **__UpperCAmelCase				:    Optional[Any]):
      return CLIPTokenizerFast.from_pretrained(self.tmpdirname				, pad_token="!"				, **__UpperCAmelCase)






    def 	__snake_case							(					self				:    str				, **__UpperCAmelCase				:    List[Any]):
      return OwlViTImageProcessor.from_pretrained(self.tmpdirname				, **__UpperCAmelCase)






    def 	__snake_case							(					self				:    Tuple):
      shutil.rmtree(self.tmpdirname)






    def 	__snake_case							(					self				:    Union[str, Any]):
      a						:		str      							=			[np.random.randint(255				, size=(3, 30, 400)				, dtype=np.uinta)]

      a						:		Optional[int]      							=			[Image.fromarray(np.moveaxis(__UpperCAmelCase				, 0				, -1)) for x in image_inputs]

      return image_inputs






    def 	__snake_case							(					self				:    Optional[Any]):
      a						:		Any      							=			self.get_tokenizer()
      a						:		Any      							=			self.get_rust_tokenizer()
      a						:		str      							=			self.get_image_processor()

      a						:		Dict      							=			OwlViTProcessor(tokenizer=__UpperCAmelCase				, image_processor=__UpperCAmelCase)
      processor_slow.save_pretrained(self.tmpdirname)
      a						:		Optional[Any]      							=			OwlViTProcessor.from_pretrained(self.tmpdirname				, use_fast=__UpperCAmelCase)

      a						:		str      							=			OwlViTProcessor(tokenizer=__UpperCAmelCase				, image_processor=__UpperCAmelCase)
      processor_fast.save_pretrained(self.tmpdirname)
      a						:		Tuple      							=			OwlViTProcessor.from_pretrained(self.tmpdirname)

      self.assertEqual(processor_slow.tokenizer.get_vocab()				, tokenizer_slow.get_vocab())
      self.assertEqual(processor_fast.tokenizer.get_vocab()				, tokenizer_fast.get_vocab())
      self.assertEqual(tokenizer_slow.get_vocab()				, tokenizer_fast.get_vocab())
      self.assertIsInstance(processor_slow.tokenizer				, __UpperCAmelCase)
      self.assertIsInstance(processor_fast.tokenizer				, __UpperCAmelCase)

      self.assertEqual(processor_slow.image_processor.to_json_string()				, image_processor.to_json_string())
      self.assertEqual(processor_fast.image_processor.to_json_string()				, image_processor.to_json_string())
      self.assertIsInstance(processor_slow.image_processor				, __UpperCAmelCase)
      self.assertIsInstance(processor_fast.image_processor				, __UpperCAmelCase)






    def 	__snake_case							(					self				:    Optional[Any]):
      a						:		int      							=			OwlViTProcessor(tokenizer=self.get_tokenizer()				, image_processor=self.get_image_processor())
      processor.save_pretrained(self.tmpdirname)

      a						:		Tuple      							=			self.get_tokenizer(bos_token="(BOS)"				, eos_token="(EOS)")
      a						:		Optional[int]      							=			self.get_image_processor(do_normalize=__UpperCAmelCase)

      a						:		Optional[Any]      							=			OwlViTProcessor.from_pretrained(
          self.tmpdirname				, bos_token="(BOS)"				, eos_token="(EOS)"				, do_normalize=__UpperCAmelCase)

      self.assertEqual(processor.tokenizer.get_vocab()				, tokenizer_add_kwargs.get_vocab())
      self.assertIsInstance(processor.tokenizer				, __UpperCAmelCase)

      self.assertEqual(processor.image_processor.to_json_string()				, image_processor_add_kwargs.to_json_string())
      self.assertIsInstance(processor.image_processor				, __UpperCAmelCase)






    def 	__snake_case							(					self				:    Union[str, Any]):
      a						:		Any      							=			self.get_image_processor()
      a						:		Dict      							=			self.get_tokenizer()

      a						:		Optional[int]      							=			OwlViTProcessor(tokenizer=__UpperCAmelCase				, image_processor=__UpperCAmelCase)

      a						:		Optional[Any]      							=			self.prepare_image_inputs()

      a						:		Dict      							=			image_processor(__UpperCAmelCase				, return_tensors="np")
      a						:		str      							=			processor(images=__UpperCAmelCase				, return_tensors="np")

      for key in input_image_proc.keys():
        self.assertAlmostEqual(input_image_proc[key].sum()				, input_processor[key].sum()				, delta=1e-2)






    def 	__snake_case							(					self				:    int):
      a						:		int      							=			self.get_image_processor()
      a						:		Dict      							=			self.get_tokenizer()

      a						:		Optional[int]      							=			OwlViTProcessor(tokenizer=__UpperCAmelCase				, image_processor=__UpperCAmelCase)

      a						:		Tuple      							=			"lower newer"

      a						:		Tuple      							=			processor(text=__UpperCAmelCase				, return_tensors="np")

      a						:		Tuple      							=			tokenizer(__UpperCAmelCase				, return_tensors="np")

      for key in encoded_tok.keys():
        self.assertListEqual(encoded_tok[key][0].tolist()				, encoded_processor[key][0].tolist())






    def 	__snake_case							(					self				:    str):
      a						:		Any      							=			self.get_image_processor()
      a						:		str      							=			self.get_tokenizer()

      a						:		Any      							=			OwlViTProcessor(tokenizer=__UpperCAmelCase				, image_processor=__UpperCAmelCase)

      a						:		int      							=			"lower newer"
      a						:		int      							=			self.prepare_image_inputs()

      a						:		Optional[int]      							=			processor(text=__UpperCAmelCase				, images=__UpperCAmelCase)

      self.assertListEqual(list(inputs.keys())				, ["input_ids", "attention_mask", "pixel_values"])

      # test if it raises when no input is passed
      with pytest.raises(__UpperCAmelCase):
        processor()






    def 	__snake_case							(					self				:    Optional[Any]):
      a						:		Tuple      							=			"google/owlvit-base-patch32"
      a						:		Optional[Any]      							=			OwlViTProcessor.from_pretrained(__UpperCAmelCase)

      a						:		Dict      							=			["cat", "nasa badge"]
      a						:		Union[str, Any]      							=			processor(text=__UpperCAmelCase)

      a						:		Optional[Any]      							=			16
      self.assertListEqual(list(inputs.keys())				, ["input_ids", "attention_mask"])
      self.assertEqual(inputs["input_ids"].shape				, (2, seq_length))

      # test if it raises when no input is passed
      with pytest.raises(__UpperCAmelCase):
        processor()






    def 	__snake_case							(					self				:    Optional[int]):
      a						:		Dict      							=			"google/owlvit-base-patch32"
      a						:		Tuple      							=			OwlViTProcessor.from_pretrained(__UpperCAmelCase)

      a						:		Optional[Any]      							=			[["cat", "nasa badge"], ["person"]]
      a						:		Tuple      							=			processor(text=__UpperCAmelCase)

      a						:		Any      							=			16
      a						:		Any      							=			len(__UpperCAmelCase)
      a						:		Optional[Any]      							=			max([len(__UpperCAmelCase) for texts in input_texts])

      self.assertListEqual(list(inputs.keys())				, ["input_ids", "attention_mask"])
      self.assertEqual(inputs["input_ids"].shape				, (batch_size * num_max_text_queries, seq_length))

      # test if it raises when no input is passed
      with pytest.raises(__UpperCAmelCase):
        processor()






    def 	__snake_case							(					self				:    Optional[Any]):
      a						:		Optional[int]      							=			"google/owlvit-base-patch32"
      a						:		Tuple      							=			OwlViTProcessor.from_pretrained(__UpperCAmelCase)

      a						:		str      							=			["cat", "nasa badge"]
      a						:		Union[str, Any]      							=			processor(text=__UpperCAmelCase)

      a						:		Optional[Any]      							=			16
      a						:		Dict      							=			inputs["input_ids"]
      a						:		List[str]      							=			[
          [49406, 2368, 49407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
          [49406, 6841, 11301, 49407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
      ]

      self.assertListEqual(list(inputs.keys())				, ["input_ids", "attention_mask"])
      self.assertEqual(inputs["input_ids"].shape				, (2, seq_length))
      self.assertListEqual(list(input_ids[0])				, predicted_ids[0])
      self.assertListEqual(list(input_ids[1])				, predicted_ids[1])






    def 	__snake_case							(					self				:    Any):
      a						:		Tuple      							=			self.get_image_processor()
      a						:		Union[str, Any]      							=			self.get_tokenizer()

      a						:		str      							=			OwlViTProcessor(tokenizer=__UpperCAmelCase				, image_processor=__UpperCAmelCase)

      a						:		str      							=			self.prepare_image_inputs()
      a						:		Optional[int]      							=			self.prepare_image_inputs()

      a						:		Any      							=			processor(images=__UpperCAmelCase				, query_images=__UpperCAmelCase)

      self.assertListEqual(list(inputs.keys())				, ["query_pixel_values", "pixel_values"])

      # test if it raises when no input is passed
      with pytest.raises(__UpperCAmelCase):
        processor()






    def 	__snake_case							(					self				:    Union[str, Any]):
      a						:		int      							=			self.get_image_processor()
      a						:		Optional[Any]      							=			self.get_tokenizer()

      a						:		List[str]      							=			OwlViTProcessor(tokenizer=__UpperCAmelCase				, image_processor=__UpperCAmelCase)

      a						:		Union[str, Any]      							=			[[1, 4, 5, 8, 1, 0, 8], [3, 4, 3, 1, 1, 8, 9]]

      a						:		Any      							=			processor.batch_decode(__UpperCAmelCase)
      a						:		List[str]      							=			tokenizer.batch_decode(__UpperCAmelCase)

      self.assertListEqual(__UpperCAmelCase				, __UpperCAmelCase)










'''simple docstring'''


import json
from typing import List, Optional, Tuple

from tokenizers import normalizers

from ...tokenization_utils_fast import PreTrainedTokenizerFast
from ...utils import logging
from .tokenization_bert import BertTokenizer


lowerCamelCase__					=   logging.get_logger(__name__)

lowerCamelCase__					=   {'vocab_file': 'vocab.txt', 'tokenizer_file': 'tokenizer.json'}

lowerCamelCase__					=   {
    'vocab_file': {
        'bert-base-uncased': 'https://huggingface.co/bert-base-uncased/resolve/main/vocab.txt',
        'bert-large-uncased': 'https://huggingface.co/bert-large-uncased/resolve/main/vocab.txt',
        'bert-base-cased': 'https://huggingface.co/bert-base-cased/resolve/main/vocab.txt',
        'bert-large-cased': 'https://huggingface.co/bert-large-cased/resolve/main/vocab.txt',
        'bert-base-multilingual-uncased': (
            'https://huggingface.co/bert-base-multilingual-uncased/resolve/main/vocab.txt'
        ),
        'bert-base-multilingual-cased': 'https://huggingface.co/bert-base-multilingual-cased/resolve/main/vocab.txt',
        'bert-base-chinese': 'https://huggingface.co/bert-base-chinese/resolve/main/vocab.txt',
        'bert-base-german-cased': 'https://huggingface.co/bert-base-german-cased/resolve/main/vocab.txt',
        'bert-large-uncased-whole-word-masking': (
            'https://huggingface.co/bert-large-uncased-whole-word-masking/resolve/main/vocab.txt'
        ),
        'bert-large-cased-whole-word-masking': (
            'https://huggingface.co/bert-large-cased-whole-word-masking/resolve/main/vocab.txt'
        ),
        'bert-large-uncased-whole-word-masking-finetuned-squad': (
            'https://huggingface.co/bert-large-uncased-whole-word-masking-finetuned-squad/resolve/main/vocab.txt'
        ),
        'bert-large-cased-whole-word-masking-finetuned-squad': (
            'https://huggingface.co/bert-large-cased-whole-word-masking-finetuned-squad/resolve/main/vocab.txt'
        ),
        'bert-base-cased-finetuned-mrpc': (
            'https://huggingface.co/bert-base-cased-finetuned-mrpc/resolve/main/vocab.txt'
        ),
        'bert-base-german-dbmdz-cased': 'https://huggingface.co/bert-base-german-dbmdz-cased/resolve/main/vocab.txt',
        'bert-base-german-dbmdz-uncased': (
            'https://huggingface.co/bert-base-german-dbmdz-uncased/resolve/main/vocab.txt'
        ),
        'TurkuNLP/bert-base-finnish-cased-v1': (
            'https://huggingface.co/TurkuNLP/bert-base-finnish-cased-v1/resolve/main/vocab.txt'
        ),
        'TurkuNLP/bert-base-finnish-uncased-v1': (
            'https://huggingface.co/TurkuNLP/bert-base-finnish-uncased-v1/resolve/main/vocab.txt'
        ),
        'wietsedv/bert-base-dutch-cased': (
            'https://huggingface.co/wietsedv/bert-base-dutch-cased/resolve/main/vocab.txt'
        ),
    },
    'tokenizer_file': {
        'bert-base-uncased': 'https://huggingface.co/bert-base-uncased/resolve/main/tokenizer.json',
        'bert-large-uncased': 'https://huggingface.co/bert-large-uncased/resolve/main/tokenizer.json',
        'bert-base-cased': 'https://huggingface.co/bert-base-cased/resolve/main/tokenizer.json',
        'bert-large-cased': 'https://huggingface.co/bert-large-cased/resolve/main/tokenizer.json',
        'bert-base-multilingual-uncased': (
            'https://huggingface.co/bert-base-multilingual-uncased/resolve/main/tokenizer.json'
        ),
        'bert-base-multilingual-cased': (
            'https://huggingface.co/bert-base-multilingual-cased/resolve/main/tokenizer.json'
        ),
        'bert-base-chinese': 'https://huggingface.co/bert-base-chinese/resolve/main/tokenizer.json',
        'bert-base-german-cased': 'https://huggingface.co/bert-base-german-cased/resolve/main/tokenizer.json',
        'bert-large-uncased-whole-word-masking': (
            'https://huggingface.co/bert-large-uncased-whole-word-masking/resolve/main/tokenizer.json'
        ),
        'bert-large-cased-whole-word-masking': (
            'https://huggingface.co/bert-large-cased-whole-word-masking/resolve/main/tokenizer.json'
        ),
        'bert-large-uncased-whole-word-masking-finetuned-squad': (
            'https://huggingface.co/bert-large-uncased-whole-word-masking-finetuned-squad/resolve/main/tokenizer.json'
        ),
        'bert-large-cased-whole-word-masking-finetuned-squad': (
            'https://huggingface.co/bert-large-cased-whole-word-masking-finetuned-squad/resolve/main/tokenizer.json'
        ),
        'bert-base-cased-finetuned-mrpc': (
            'https://huggingface.co/bert-base-cased-finetuned-mrpc/resolve/main/tokenizer.json'
        ),
        'bert-base-german-dbmdz-cased': (
            'https://huggingface.co/bert-base-german-dbmdz-cased/resolve/main/tokenizer.json'
        ),
        'bert-base-german-dbmdz-uncased': (
            'https://huggingface.co/bert-base-german-dbmdz-uncased/resolve/main/tokenizer.json'
        ),
        'TurkuNLP/bert-base-finnish-cased-v1': (
            'https://huggingface.co/TurkuNLP/bert-base-finnish-cased-v1/resolve/main/tokenizer.json'
        ),
        'TurkuNLP/bert-base-finnish-uncased-v1': (
            'https://huggingface.co/TurkuNLP/bert-base-finnish-uncased-v1/resolve/main/tokenizer.json'
        ),
        'wietsedv/bert-base-dutch-cased': (
            'https://huggingface.co/wietsedv/bert-base-dutch-cased/resolve/main/tokenizer.json'
        ),
    },
}

lowerCamelCase__					=   {
    'bert-base-uncased': 512,
    'bert-large-uncased': 512,
    'bert-base-cased': 512,
    'bert-large-cased': 512,
    'bert-base-multilingual-uncased': 512,
    'bert-base-multilingual-cased': 512,
    'bert-base-chinese': 512,
    'bert-base-german-cased': 512,
    'bert-large-uncased-whole-word-masking': 512,
    'bert-large-cased-whole-word-masking': 512,
    'bert-large-uncased-whole-word-masking-finetuned-squad': 512,
    'bert-large-cased-whole-word-masking-finetuned-squad': 512,
    'bert-base-cased-finetuned-mrpc': 512,
    'bert-base-german-dbmdz-cased': 512,
    'bert-base-german-dbmdz-uncased': 512,
    'TurkuNLP/bert-base-finnish-cased-v1': 512,
    'TurkuNLP/bert-base-finnish-uncased-v1': 512,
    'wietsedv/bert-base-dutch-cased': 512,
}

lowerCamelCase__					=   {
    'bert-base-uncased': {'do_lower_case': True},
    'bert-large-uncased': {'do_lower_case': True},
    'bert-base-cased': {'do_lower_case': False},
    'bert-large-cased': {'do_lower_case': False},
    'bert-base-multilingual-uncased': {'do_lower_case': True},
    'bert-base-multilingual-cased': {'do_lower_case': False},
    'bert-base-chinese': {'do_lower_case': False},
    'bert-base-german-cased': {'do_lower_case': False},
    'bert-large-uncased-whole-word-masking': {'do_lower_case': True},
    'bert-large-cased-whole-word-masking': {'do_lower_case': False},
    'bert-large-uncased-whole-word-masking-finetuned-squad': {'do_lower_case': True},
    'bert-large-cased-whole-word-masking-finetuned-squad': {'do_lower_case': False},
    'bert-base-cased-finetuned-mrpc': {'do_lower_case': False},
    'bert-base-german-dbmdz-cased': {'do_lower_case': False},
    'bert-base-german-dbmdz-uncased': {'do_lower_case': True},
    'TurkuNLP/bert-base-finnish-cased-v1': {'do_lower_case': False},
    'TurkuNLP/bert-base-finnish-uncased-v1': {'do_lower_case': True},
    'wietsedv/bert-base-dutch-cased': {'do_lower_case': False},
}






class 		lowerCAmelCase__	(	UpperCAmelCase__		):
			lowerCAmelCase       :		Union[str, Any]				      =   VOCAB_FILES_NAMES
			lowerCAmelCase       :		Dict				      =   PRETRAINED_VOCAB_FILES_MAP
			lowerCAmelCase       :		Tuple				      =   PRETRAINED_INIT_CONFIGURATION
			lowerCAmelCase       :		Optional[int]				      =   PRETRAINED_POSITIONAL_EMBEDDINGS_SIZES
			lowerCAmelCase       :		Any				      =   BertTokenizer




			def __init__(						self     :   int		,     lowerCamelCase__     :   Optional[Any]=None		,     lowerCamelCase__     :   Optional[int]=None		,     lowerCamelCase__     :   str=True		,     lowerCamelCase__     :   Tuple="[UNK]"		,     lowerCamelCase__     :   str="[SEP]"		,     lowerCamelCase__     :   Optional[Any]="[PAD]"		,     lowerCamelCase__     :   List[str]="[CLS]"		,     lowerCamelCase__     :   Union[str, Any]="[MASK]"		,     lowerCamelCase__     :   str=True		,     lowerCamelCase__     :   Dict=None		,     **lowerCamelCase__     :   Union[str, Any]		,     )      ->Tuple:



					'''simple docstring'''







					super().__init__(
					    lowerCamelCase__		,     tokenizer_file=lowerCamelCase__		,     do_lower_case=lowerCamelCase__		,     unk_token=lowerCamelCase__		,     sep_token=lowerCamelCase__		,     pad_token=lowerCamelCase__		,     cls_token=lowerCamelCase__		,     mask_token=lowerCamelCase__		,     tokenize_chinese_chars=lowerCamelCase__		,     strip_accents=lowerCamelCase__		,     **lowerCamelCase__		,     )

					_UpperCAmelCase						:				Optional[Any]	    =					json.loads(self.backend_tokenizer.normalizer.__getstate__()       )
					if (
					    normalizer_state.get("lowercase"		,     lowerCamelCase__       ) != do_lower_case
					    or normalizer_state.get("strip_accents"		,     lowerCamelCase__       ) != strip_accents
					    or normalizer_state.get("handle_chinese_chars"		,     lowerCamelCase__       ) != tokenize_chinese_chars
					):
							_UpperCAmelCase						:				str	    =					getattr(lowerCamelCase__		,     normalizer_state.pop("type"       )       )
							_UpperCAmelCase						:				Optional[Any]	    =					do_lower_case
							_UpperCAmelCase						:				Any	    =					strip_accents
							_UpperCAmelCase						:				List[Any]	    =					tokenize_chinese_chars
							_UpperCAmelCase						:				int	    =					normalizer_class(**lowerCamelCase__       )

					_UpperCAmelCase						:				Union[str, Any]	    =					do_lower_case




			def 							lowerCAmelCase__			(						self     :   List[str]		,     lowerCamelCase__     :   List[str]		,     lowerCamelCase__     :   str=None       )      ->List[Any]:



					'''simple docstring'''







					_UpperCAmelCase						:				List[str]	    =					[self.cls_token_id] + token_ids_a + [self.sep_token_id]

					if token_ids_a:
							output += token_ids_a + [self.sep_token_id]

					return output




			def 							lowerCAmelCase__			(						self     :   List[Any]		,     lowerCamelCase__     :   List[int]		,     lowerCamelCase__     :   Optional[List[int]] = None       )      ->List[int]:



					'''simple docstring'''







					_UpperCAmelCase						:				Tuple	    =					[self.sep_token_id]
					_UpperCAmelCase						:				int	    =					[self.cls_token_id]
					if token_ids_a is None:
							return len(cls + token_ids_a + sep       ) * [0]
					return len(cls + token_ids_a + sep       ) * [0] + len(token_ids_a + sep       ) * [1]






			def 							lowerCAmelCase__			(						self     :   List[Any]		,     lowerCamelCase__     :   str		,     lowerCamelCase__     :   Optional[str] = None       )      ->Tuple[str]:



					'''simple docstring'''







					_UpperCAmelCase						:				List[str]	    =					self._tokenizer.model.save(lowerCamelCase__		,     name=lowerCamelCase__       )
					return tuple(lowerCamelCase__       )



