


import time
from dataclasses import dataclass
from multiprocessing import Pool
from unittest import TestCase
from unittest.mock import patch

import multiprocess
import numpy as np
import pytest

from datasets.utils.py_utils import (
    NestedDataStructure,
    asdict,
    iflatmap_unordered,
    map_nested,
    temp_seed,
    temporary_assignment,
    zip_dict,
)

from .utils import require_tf, require_torch







def       A_				(   _UpperCAmelCase   ):  # picklable for multiprocessing
						return x.sum()







def       A_				(   _UpperCAmelCase   ):  # picklable for multiprocessing
						return i + 1



@dataclass
class   __lowercase    :




			"""simple docstring"""







			_UpperCAmelCase       :							int      							=					42
			_UpperCAmelCase       :							Optional[Any]      							=					42







class   __lowercase    (			UpperCAmelCase_     ):




			"""simple docstring"""







			def 	_SCREAMING_SNAKE_CASE      (			self  :					str):
									SCREAMING_SNAKE_CASE_:			Optional[Any]  		=	{}
									SCREAMING_SNAKE_CASE_:			int  		=	[]
									SCREAMING_SNAKE_CASE_:			List[Any]  		=	1
									SCREAMING_SNAKE_CASE_:			Union[str, Any]  		=	[1, 2]
									SCREAMING_SNAKE_CASE_:			Any  		=	{"a": 1, "b": 2}
									SCREAMING_SNAKE_CASE_:			Union[str, Any]  		=	{"a": [1, 2], "b": [3, 4]}
									SCREAMING_SNAKE_CASE_:			Union[str, Any]  		=	{"a": {"1": 1}, "b": 2}
									SCREAMING_SNAKE_CASE_:			Optional[int]  		=	{"a": 1, "b": 2, "c": 3, "d": 4}
									SCREAMING_SNAKE_CASE_:			List[Any]  		=	{}
									SCREAMING_SNAKE_CASE_:			Tuple  		=	[]
									SCREAMING_SNAKE_CASE_:			str  		=	2
									SCREAMING_SNAKE_CASE_:			Any  		=	[2, 3]
									SCREAMING_SNAKE_CASE_:			Union[str, Any]  		=	{"a": 2, "b": 3}
									SCREAMING_SNAKE_CASE_:			Tuple  		=	{"a": [2, 3], "b": [4, 5]}
									SCREAMING_SNAKE_CASE_:			Dict  		=	{"a": {"1": 2}, "b": 3}
									SCREAMING_SNAKE_CASE_:			str  		=	{"a": 2, "b": 3, "c": 4, "d": 5}
									self.assertEqual(map_nested(lowerCamelCase_       ,						lowerCamelCase_)       ,						lowerCamelCase_)
									self.assertEqual(map_nested(lowerCamelCase_       ,						lowerCamelCase_)       ,						lowerCamelCase_)
									self.assertEqual(map_nested(lowerCamelCase_       ,						lowerCamelCase_)       ,						lowerCamelCase_)
									self.assertEqual(map_nested(lowerCamelCase_       ,						lowerCamelCase_)       ,						lowerCamelCase_)
									self.assertEqual(map_nested(lowerCamelCase_       ,						lowerCamelCase_)       ,						lowerCamelCase_)
									self.assertEqual(map_nested(lowerCamelCase_       ,						lowerCamelCase_)       ,						lowerCamelCase_)
									self.assertEqual(map_nested(lowerCamelCase_       ,						lowerCamelCase_)       ,						lowerCamelCase_)
									self.assertEqual(map_nested(lowerCamelCase_       ,						lowerCamelCase_)       ,						lowerCamelCase_)

									SCREAMING_SNAKE_CASE_:			int  		=	2
									self.assertEqual(map_nested(lowerCamelCase_       ,						lowerCamelCase_       ,						num_proc=lowerCamelCase_)       ,						lowerCamelCase_)
									self.assertEqual(map_nested(lowerCamelCase_       ,						lowerCamelCase_       ,						num_proc=lowerCamelCase_)       ,						lowerCamelCase_)
									self.assertEqual(map_nested(lowerCamelCase_       ,						lowerCamelCase_       ,						num_proc=lowerCamelCase_)       ,						lowerCamelCase_)
									self.assertEqual(map_nested(lowerCamelCase_       ,						lowerCamelCase_       ,						num_proc=lowerCamelCase_)       ,						lowerCamelCase_)
									self.assertEqual(map_nested(lowerCamelCase_       ,						lowerCamelCase_       ,						num_proc=lowerCamelCase_)       ,						lowerCamelCase_)
									self.assertEqual(map_nested(lowerCamelCase_       ,						lowerCamelCase_       ,						num_proc=lowerCamelCase_)       ,						lowerCamelCase_)
									self.assertEqual(map_nested(lowerCamelCase_       ,						lowerCamelCase_       ,						num_proc=lowerCamelCase_)       ,						lowerCamelCase_)
									self.assertEqual(map_nested(lowerCamelCase_       ,						lowerCamelCase_       ,						num_proc=lowerCamelCase_)       ,						lowerCamelCase_)

									SCREAMING_SNAKE_CASE_:			List[Any]  		=	{"a": np.eye(2), "b": np.zeros(3), "c": np.ones(2)}
									SCREAMING_SNAKE_CASE_:			Union[str, Any]  		=	{"a": 2, "b": 0, "c": 2}
									SCREAMING_SNAKE_CASE_:			Optional[Any]  		=	{
									    "a": np.eye(2).astype(lowerCamelCase_),
									    "b": np.zeros(3).astype(lowerCamelCase_),
									    "c": np.ones(2).astype(lowerCamelCase_),
									}
									self.assertEqual(map_nested(lowerCamelCase_       ,						lowerCamelCase_       ,						map_numpy=lowerCamelCase_)       ,						lowerCamelCase_)
									self.assertEqual(
									    {k: v.tolist() for k, v in map_nested(lowerCamelCase_       ,						lowerCamelCase_       ,						map_numpy=lowerCamelCase_).items()}       ,						{k: v.tolist() for k, v in expected_map_nested_sna_int.items()}       ,						)
									self.assertEqual(map_nested(lowerCamelCase_       ,						lowerCamelCase_       ,						map_numpy=lowerCamelCase_       ,						num_proc=lowerCamelCase_)       ,						lowerCamelCase_)
									self.assertEqual(
									    {k: v.tolist() for k, v in map_nested(lowerCamelCase_       ,						lowerCamelCase_       ,						map_numpy=lowerCamelCase_       ,						num_proc=lowerCamelCase_).items()}       ,						{k: v.tolist() for k, v in expected_map_nested_sna_int.items()}       ,						)
									with self.assertRaises(lowerCamelCase_):  # can't pickle a local lambda
															map_nested(lambda lowerCAmelCase__: x + 1       ,						lowerCamelCase_       ,						num_proc=lowerCamelCase_)



			def 	_SCREAMING_SNAKE_CASE      (			self  :					Union[str, Any]):
									SCREAMING_SNAKE_CASE_:			Optional[int]  		=	{"a": 1, "b": 2}
									SCREAMING_SNAKE_CASE_:			Dict  		=	{"a": 3, "b": 4}
									SCREAMING_SNAKE_CASE_:			int  		=	{"a": 5, "b": 6}
									SCREAMING_SNAKE_CASE_:			Optional[int]  		=	sorted([("a", (1, 3, 5)), ("b", (2, 4, 6))])
									self.assertEqual(sorted(zip_dict(lowerCamelCase_       ,						lowerCamelCase_       ,						lowerCamelCase_))       ,						lowerCamelCase_)




			def 	_SCREAMING_SNAKE_CASE      (			self  :					str):



									class   __lowercase    :




												"""simple docstring"""







												_UpperCAmelCase       :							List[Any]      							=					'''bar'''







									SCREAMING_SNAKE_CASE_:			Optional[int]  		=	Foo()
									self.assertEqual(foo.my_attr       ,						"bar")
									with temporary_assignment(lowerCamelCase_       ,						"my_attr"       ,						"BAR"):
															self.assertEqual(foo.my_attr       ,						"BAR")
									self.assertEqual(foo.my_attr       ,						"bar")







@pytest.mark.parametrize(
    "iterable_length, num_proc, expected_num_proc"    ,     [
        (1, None, 1),
        (1, 1, 1),
        (2, None, 1),
        (2, 1, 1),
        (2, 2, 1),
        (2, 3, 1),
        (3, 2, 1),
        (16, 16, 16),
        (16, 17, 16),
        (17, 16, 16),
    ]    ,     )
def       A_				(   _UpperCAmelCase    ,     _UpperCAmelCase    ,     _UpperCAmelCase   ):





						with patch("datasets.utils.py_utils._single_map_nested"   ) as mock_single_map_nested, patch(
						    "datasets.parallel.parallel.Pool"   ) as mock_multiprocessing_pool:
												SCREAMING_SNAKE_CASE_:			List[str]  		=	{f"{i}": i for i in range(_UpperCAmelCase   )}
												SCREAMING_SNAKE_CASE_:			List[str]  		=	map_nested(lambda _UpperCAmelCase   : x + 10    ,     _UpperCAmelCase    ,     num_proc=_UpperCAmelCase    ,     parallel_min_length=16   )
												if expected_num_proc == 1:
																		assert mock_single_map_nested.called
																		assert not mock_multiprocessing_pool.called
												else:
																		assert not mock_single_map_nested.called
																		assert mock_multiprocessing_pool.called
																		assert mock_multiprocessing_pool.call_args[0][0] == expected_num_proc



class   __lowercase    (			UpperCAmelCase_     ):




			"""simple docstring"""







			@require_tf
			def 	_SCREAMING_SNAKE_CASE      (			self  :					List[Any]):
									import tensorflow as tf
									from tensorflow.keras import layers

									SCREAMING_SNAKE_CASE_:			Dict  		=	layers.Dense(2)

									def gen_random_output():
															SCREAMING_SNAKE_CASE_:			Optional[int]  		=	tf.random.uniform((1, 3))
															return model(lowerCamelCase_).numpy()

									with temp_seed(42       ,						set_tensorflow=lowerCamelCase_):
															SCREAMING_SNAKE_CASE_:			Optional[int]  		=	gen_random_output()
									with temp_seed(42       ,						set_tensorflow=lowerCamelCase_):
															SCREAMING_SNAKE_CASE_:			Dict  		=	gen_random_output()
									SCREAMING_SNAKE_CASE_:			Union[str, Any]  		=	gen_random_output()

									np.testing.assert_equal(lowerCamelCase_       ,						lowerCamelCase_)
									self.assertGreater(np.abs(outa - outa).sum()       ,						0)



			@require_torch
			def 	_SCREAMING_SNAKE_CASE      (			self  :					Union[str, Any]):
									import torch

									def gen_random_output():
															SCREAMING_SNAKE_CASE_:			Any  		=	torch.nn.Linear(3       ,						2)
															SCREAMING_SNAKE_CASE_:			Optional[int]  		=	torch.rand(1       ,						3)
															return model(lowerCamelCase_).detach().numpy()

									with temp_seed(42       ,						set_pytorch=lowerCamelCase_):
															SCREAMING_SNAKE_CASE_:			Optional[Any]  		=	gen_random_output()
									with temp_seed(42       ,						set_pytorch=lowerCamelCase_):
															SCREAMING_SNAKE_CASE_:			List[str]  		=	gen_random_output()
									SCREAMING_SNAKE_CASE_:			Any  		=	gen_random_output()

									np.testing.assert_equal(lowerCamelCase_       ,						lowerCamelCase_)
									self.assertGreater(np.abs(outa - outa).sum()       ,						0)




			def 	_SCREAMING_SNAKE_CASE      (			self  :					Dict):

									def gen_random_output():
															return np.random.rand(1       ,						3)

									with temp_seed(42):
															SCREAMING_SNAKE_CASE_:			Optional[int]  		=	gen_random_output()
									with temp_seed(42):
															SCREAMING_SNAKE_CASE_:			Optional[int]  		=	gen_random_output()
									SCREAMING_SNAKE_CASE_:			Tuple  		=	gen_random_output()

									np.testing.assert_equal(lowerCamelCase_       ,						lowerCamelCase_)
									self.assertGreater(np.abs(outa - outa).sum()       ,						0)







@pytest.mark.parametrize("input_data"    ,     [{}]   )
def       A_				(   _UpperCAmelCase   ):
						SCREAMING_SNAKE_CASE_:			str  		=	NestedDataStructure(_UpperCAmelCase   ).data
						assert output_data == input_data







@pytest.mark.parametrize(
    "data, expected_output"    ,     [
        ({}, []),
        ([], []),
        ("foo", ["foo"]),
        (["foo", "bar"], ["foo", "bar"]),
        ([["foo", "bar"]], ["foo", "bar"]),
        ([[["foo"], ["bar"]]], ["foo", "bar"]),
        ([[["foo"], "bar"]], ["foo", "bar"]),
        ({"a": 1, "b": 2}, [1, 2]),
        ({"a": [1, 2], "b": [3, 4]}, [1, 2, 3, 4]),
        ({"a": [[1, 2]], "b": [[3, 4]]}, [1, 2, 3, 4]),
        ({"a": [[1, 2]], "b": [3, 4]}, [1, 2, 3, 4]),
        ({"a": [[[1], [2]]], "b": [[[3], [4]]]}, [1, 2, 3, 4]),
        ({"a": [[[1], [2]]], "b": [[3, 4]]}, [1, 2, 3, 4]),
        ({"a": [[[1], [2]]], "b": [3, 4]}, [1, 2, 3, 4]),
        ({"a": [[[1], [2]]], "b": [3, [4]]}, [1, 2, 3, 4]),
        ({"a": {"1": 1}, "b": 2}, [1, 2]),
        ({"a": {"1": [1]}, "b": 2}, [1, 2]),
        ({"a": {"1": [1]}, "b": [2]}, [1, 2]),
    ]    ,     )
def       A_				(   _UpperCAmelCase    ,     _UpperCAmelCase   ):
						SCREAMING_SNAKE_CASE_:			Tuple  		=	NestedDataStructure(_UpperCAmelCase   ).flatten()
						assert output == expected_output







def       A_				(   ):
						SCREAMING_SNAKE_CASE_:			Optional[int]  		=	A(x=1    ,     y="foobar"   )
						SCREAMING_SNAKE_CASE_:			List[Any]  		=	{"x": 1, "y": "foobar"}
						assert asdict(_UpperCAmelCase   ) == expected_output

						SCREAMING_SNAKE_CASE_:			Union[str, Any]  		=	{"a": {"b": A(x=10    ,     y="foo"   )}, "c": [A(x=20    ,     y="bar"   )]}
						SCREAMING_SNAKE_CASE_:			Dict  		=	{"a": {"b": {"x": 10, "y": "foo"}}, "c": [{"x": 20, "y": "bar"}]}
						assert asdict(_UpperCAmelCase   ) == expected_output

						with pytest.raises(_UpperCAmelCase   ):
												asdict([1, A(x=10    ,     y="foo"   )]   )







def       A_				(   _UpperCAmelCase   ):
						return text.split()







def       A_				(   _UpperCAmelCase   ):
						yield (time.time(), content)
						time.sleep(2   )
						yield (time.time(), content)







def       A_				(   ):





						with Pool(2   ) as pool:
												SCREAMING_SNAKE_CASE_:			Optional[int]  		=	list(iflatmap_unordered(_UpperCAmelCase    ,     _split_text    ,     kwargs_iterable=[{"text": "hello there"}] * 10   )   )
												assert out.count("hello"   ) == 10
												assert out.count("there"   ) == 10
												assert len(_UpperCAmelCase   ) == 20

						# check multiprocess from pathos (uses dill for pickling)
						with multiprocess.Pool(2   ) as pool:
												SCREAMING_SNAKE_CASE_:			Dict  		=	list(iflatmap_unordered(_UpperCAmelCase    ,     _split_text    ,     kwargs_iterable=[{"text": "hello there"}] * 10   )   )
												assert out.count("hello"   ) == 10
												assert out.count("there"   ) == 10
												assert len(_UpperCAmelCase   ) == 20

						# check that we get items as fast as possible
						with Pool(2   ) as pool:
												SCREAMING_SNAKE_CASE_:			Optional[Any]  		=	[]
												for yield_time, content in iflatmap_unordered(
												    _UpperCAmelCase    ,     _aseconds_generator_of_aitems_with_timing    ,     kwargs_iterable=[{"content": "a"}, {"content": "b"}]   ):
																		assert yield_time < time.time() + 0.1, "we should each item directly after it was yielded"
																		out.append(_UpperCAmelCase   )
												assert out.count("a"   ) == 2
												assert out.count("b"   ) == 2
												assert len(_UpperCAmelCase   ) == 4









from typing import Dict, List, Optional

from ...tokenization_utils import AddedToken, PreTrainedTokenizer
from ...utils import logging


lowerCAmelCase							:  List[str]            =						logging.get_logger(__name__)


lowerCAmelCase							:  Tuple            =						{
    """nielsr/canine-s""": 2048,
}

# Unicode defines 1,114,112 total “codepoints”
lowerCAmelCase							:  Any            =						1114112

# Below: Constants defining canonical codepoints for special, pseudo-characters.
# Copied from https://github.com/google-research/language/blob/master/language/canine/special_codepoints.py
lowerCAmelCase							:  Dict            =						0

lowerCAmelCase							:  Dict            =						0xe000
lowerCAmelCase							:  str            =						0xe001
lowerCAmelCase							:  str            =						0xe002
lowerCAmelCase							:  Optional[int]            =						0xe003
lowerCAmelCase							:  List[Any]            =						0xe004

# Maps special codepoints to human-readable names.
lowerCAmelCase							:  Dict[int, str]            =						{
    # Special symbols are represented using codepoints values that are valid,
    # but designated as "Private Use", meaning that they will never be assigned
    # characters by the Unicode Consortium, and are thus safe for use here.
    #
    # NOTE: Do *NOT* add any sort of [UNK_CHAR] here. They are explicitly
    # excluded and should fail with a hard error.
    CLS: "[CLS]",
    SEP: "[SEP]",
    BOS: "[BOS]",
    MASK: "[MASK]",
    PAD: "[PAD]",
    RESERVED: "[RESERVED]",
}

# Maps special codepoint human-readable names to their codepoint values.
lowerCAmelCase							:  Dict[str, int]            =						{name: codepoint for codepoint, name in SPECIAL_CODEPOINTS.items()}



class   __lowercase    (			UpperCAmelCase_     ):




			"""simple docstring"""







			_UpperCAmelCase       :							List[str]      							=					PRETRAINED_POSITIONAL_EMBEDDINGS_SIZES



			def __init__(			self  :					Optional[Any]       ,						lowerCAmelCase__  :					Tuple=chr(lowerCAmelCase__)       ,						lowerCAmelCase__  :					Tuple=chr(lowerCAmelCase__)       ,						lowerCAmelCase__  :					str=chr(lowerCAmelCase__)       ,						lowerCAmelCase__  :					List[Any]=chr(lowerCAmelCase__)       ,						lowerCAmelCase__  :					Optional[int]=chr(lowerCAmelCase__)       ,						lowerCAmelCase__  :					Union[str, Any]=chr(lowerCAmelCase__)       ,						lowerCAmelCase__  :					Union[str, Any]=False       ,						lowerCAmelCase__  :					int=2048       ,						**lowerCAmelCase__  :					Tuple       ,						):
									SCREAMING_SNAKE_CASE_:			Union[str, Any]  		=	AddedToken(lowerCAmelCase__       ,						lstrip=lowerCAmelCase__       ,						rstrip=lowerCAmelCase__) if isinstance(lowerCAmelCase__       ,						lowerCAmelCase__) else bos_token
									SCREAMING_SNAKE_CASE_:			List[Any]  		=	AddedToken(lowerCAmelCase__       ,						lstrip=lowerCAmelCase__       ,						rstrip=lowerCAmelCase__) if isinstance(lowerCAmelCase__       ,						lowerCAmelCase__) else eos_token
									SCREAMING_SNAKE_CASE_:			List[Any]  		=	AddedToken(lowerCAmelCase__       ,						lstrip=lowerCAmelCase__       ,						rstrip=lowerCAmelCase__) if isinstance(lowerCAmelCase__       ,						lowerCAmelCase__) else sep_token
									SCREAMING_SNAKE_CASE_:			Any  		=	AddedToken(lowerCAmelCase__       ,						lstrip=lowerCAmelCase__       ,						rstrip=lowerCAmelCase__) if isinstance(lowerCAmelCase__       ,						lowerCAmelCase__) else cls_token
									SCREAMING_SNAKE_CASE_:			str  		=	AddedToken(lowerCAmelCase__       ,						lstrip=lowerCAmelCase__       ,						rstrip=lowerCAmelCase__) if isinstance(lowerCAmelCase__       ,						lowerCAmelCase__) else pad_token

									# Mask token behave like a normal word, i.e. include the space before it
									SCREAMING_SNAKE_CASE_:			Dict  		=	AddedToken(lowerCAmelCase__       ,						lstrip=lowerCAmelCase__       ,						rstrip=lowerCAmelCase__) if isinstance(lowerCAmelCase__       ,						lowerCAmelCase__) else mask_token

									super().__init__(
									    bos_token=lowerCAmelCase__       ,						eos_token=lowerCAmelCase__       ,						sep_token=lowerCAmelCase__       ,						cls_token=lowerCAmelCase__       ,						pad_token=lowerCAmelCase__       ,						mask_token=lowerCAmelCase__       ,						add_prefix_space=lowerCAmelCase__       ,						model_max_length=lowerCAmelCase__       ,						**lowerCAmelCase__       ,						)

									# Creates a mapping for looking up the IDs of special symbols.
									SCREAMING_SNAKE_CASE_:			Dict[str, int]  		=	{}
									for codepoint, name in SPECIAL_CODEPOINTS.items():
															SCREAMING_SNAKE_CASE_:			List[Any]  		=	codepoint

									# Creates a mapping for looking up the string forms of special symbol IDs.
									SCREAMING_SNAKE_CASE_:			Dict[int, str]  		=	{
									    codepoint: name for name, codepoint in self._special_codepoints.items()
									}

									SCREAMING_SNAKE_CASE_:			List[str]  		=	UNICODE_VOCAB_SIZE
									SCREAMING_SNAKE_CASE_:			Tuple  		=	len(self._special_codepoints)



			@property
			def 	_SCREAMING_SNAKE_CASE      (			self  :					Optional[int]):
									return self._unicode_vocab_size



			def 	_SCREAMING_SNAKE_CASE      (			self  :					Dict       ,						lowerCAmelCase__  :					str):
									return list(lowerCAmelCase__)



			def 	_SCREAMING_SNAKE_CASE      (			self  :					List[str]       ,						lowerCAmelCase__  :					str):
									try:
															return ord(lowerCAmelCase__)
									except TypeError:
															raise ValueError(F"invalid token: '{token}'")



			def 	_SCREAMING_SNAKE_CASE      (			self  :					Optional[int]       ,						lowerCAmelCase__  :					int):
									try:
															if index in SPECIAL_CODEPOINTS:
																					return SPECIAL_CODEPOINTS[index]
															return chr(lowerCAmelCase__)
									except TypeError:
															raise ValueError(F"invalid id: {index}")



			def 	_SCREAMING_SNAKE_CASE      (			self  :					List[str]       ,						lowerCAmelCase__  :					Dict):
									return "".join(lowerCAmelCase__)



			def 	_SCREAMING_SNAKE_CASE      (			self  :					Optional[int]       ,						lowerCAmelCase__  :					List[int]       ,						lowerCAmelCase__  :					Optional[List[int]] = None):
									SCREAMING_SNAKE_CASE_:			List[str]  		=	[self.sep_token_id]
									SCREAMING_SNAKE_CASE_:			Tuple  		=	[self.cls_token_id]

									SCREAMING_SNAKE_CASE_:			int  		=	cls + token_ids_a + sep
									if token_ids_a is not None:
															result += token_ids_a + sep
									return result



			def 	_SCREAMING_SNAKE_CASE      (			self  :					Union[str, Any]       ,						lowerCAmelCase__  :					List[int]       ,						lowerCAmelCase__  :					Optional[List[int]] = None       ,						lowerCAmelCase__  :					bool = False):
									if already_has_special_tokens:
															return super().get_special_tokens_mask(
															    token_ids_a=lowerCAmelCase__       ,						token_ids_a=lowerCAmelCase__       ,						already_has_special_tokens=lowerCAmelCase__)

									SCREAMING_SNAKE_CASE_:			Any  		=	[1] + ([0] * len(lowerCAmelCase__)) + [1]
									if token_ids_a is not None:
															result += ([0] * len(lowerCAmelCase__)) + [1]
									return result



			def 	_SCREAMING_SNAKE_CASE      (			self  :					Dict       ,						lowerCAmelCase__  :					List[int]       ,						lowerCAmelCase__  :					Optional[List[int]] = None):
									SCREAMING_SNAKE_CASE_:			Dict  		=	[self.sep_token_id]
									SCREAMING_SNAKE_CASE_:			int  		=	[self.cls_token_id]

									SCREAMING_SNAKE_CASE_:			List[str]  		=	len(cls + token_ids_a + sep) * [0]
									if token_ids_a is not None:
															result += len(token_ids_a + sep) * [1]
									return result




			def 	_SCREAMING_SNAKE_CASE      (			self  :					str       ,						lowerCAmelCase__  :					str       ,						lowerCAmelCase__  :					Optional[str] = None):
									return ()






