





import argparse
import logging
import pickle
from collections import Counter


logging.basicConfig(
    format="%(asctime)s - %(levelname)s - %(name)s - %(message)s", datefmt="%m/%d/%Y %H:%M:%S", level=logging.INFO
)
__A				:    Optional[int]       =   logging.getLogger(__name__)

if __name__ == "__main__":
				__A				:    Optional[int]       =   argparse.ArgumentParser(
				    description="Token Counts for smoothing the masking probabilities in MLM (cf XLM/word2vec)"
				)
				parser.add_argument(
				    "--data_file", type=str, default="data/dump.bert-base-uncased.pickle", help="The binarized dataset."
				)
				parser.add_argument(
				    "--token_counts_dump", type=str, default="data/token_counts.bert-base-uncased.pickle", help="The dump file."
				)
				parser.add_argument("--vocab_size", default=30_522, type=int)
				__A				:    List[str]       =   parser.parse_args()

				logger.info(F'Loading data from {args.data_file}')
				with open(args.data_file, "rb") as fp:
								__A				:    int       =   pickle.load(fp)

				logger.info("Counting occurrences for MLM.")
				__A				:    List[str]       =   Counter()
				for tk_ids in data:
								counter.update(tk_ids)
				__A				:    Tuple       =   [0] * args.vocab_size
				for k, v in counter.items():
								__A				:    Union[str, Any]       =   v

				logger.info(F'Dump to {args.token_counts_dump}')
				with open(args.token_counts_dump, "wb") as handle:
								pickle.dump(counts, handle, protocol=pickle.HIGHEST_PROTOCOL)










def 						__SCREAMING_SNAKE_CASE  (				UpperCamelCase__ )  ->				list[int]:







			'''simple docstring'''

			if length <= 0 or not isinstance(UpperCamelCase__			,			UpperCamelCase__ ):
						raise ValueError('''Length must be a positive integer.''' )
			return [n * (2 * n - 1) for n in range(UpperCamelCase__ )]


if __name__ == "__main__":
				print(hexagonal_numbers(length=5))
				print(hexagonal_numbers(length=10))



