






from collections import OrderedDict
from typing import Any, List, Mapping, Optional

from ... import PretrainedConfig, PreTrainedTokenizer
from ...onnx import OnnxConfig, PatchingSpec
from ...utils import TensorType, is_torch_available, logging


UpperCamelCase__						:      Optional[Any]								=					logging.get_logger(__name__)

UpperCamelCase__						:      List[Any]								=					{
    """microsoft/layoutlm-base-uncased""": (
        """https://huggingface.co/microsoft/layoutlm-base-uncased/resolve/main/config.json"""
    ),
    """microsoft/layoutlm-large-uncased""": (
        """https://huggingface.co/microsoft/layoutlm-large-uncased/resolve/main/config.json"""
    ),
}







class 				lowerCamelCase_     (	a_     ):
							SCREAMING_SNAKE_CASE_						     =			'layoutlm'
							def __init__(						self		:					Dict							,__lowerCamelCase		:					str=3_05_22							,__lowerCamelCase		:					int=7_68							,__lowerCamelCase		:					List[Any]=12							,__lowerCamelCase		:					Optional[int]=12							,__lowerCamelCase		:					Any=30_72							,__lowerCamelCase		:					Optional[int]="gelu"							,__lowerCamelCase		:					Tuple=0.1							,__lowerCamelCase		:					Dict=0.1							,__lowerCamelCase		:					int=5_12							,__lowerCamelCase		:					Tuple=2							,__lowerCamelCase		:					Tuple=0.02							,__lowerCamelCase		:					Dict=1e-12							,__lowerCamelCase		:					Optional[int]=0							,__lowerCamelCase		:					Union[str, Any]="absolute"							,__lowerCamelCase		:					Optional[Any]=True							,__lowerCamelCase		:					Union[str, Any]=10_24							,**__lowerCamelCase		:					int							,):





								'''simple docstring'''



								super().__init__(pad_token_id=__lowerCamelCase							,**__lowerCamelCase					)
								a		=			vocab_size
								a		=			hidden_size
								a		=			num_hidden_layers
								a		=			num_attention_heads
								a		=			hidden_act
								a		=			intermediate_size
								a		=			hidden_dropout_prob
								a		=			attention_probs_dropout_prob
								a		=			max_position_embeddings
								a		=			type_vocab_size
								a		=			initializer_range
								a		=			layer_norm_eps
								a		=			position_embedding_type
								a		=			use_cache
								a		=			max_ad_position_embeddings







class 				lowerCamelCase_     (	a_     ):
							def __init__(						self		:					List[Any]							,__lowerCamelCase		:					PretrainedConfig							,__lowerCamelCase		:					str = "default"							,__lowerCamelCase		:					List[PatchingSpec] = None							,):





								'''simple docstring'''



								super().__init__(__lowerCamelCase							,task=__lowerCamelCase							,patching_specs=__lowerCamelCase					)
								a		=			config.max_ad_position_embeddings - 1
							@property
							def  SCREAMING_SNAKE_CASE_ (						self		:					str					):





								'''simple docstring'''



								return OrderedDict(
								    [
								        ('''input_ids''', {0: '''batch''', 1: '''sequence'''}),
								        ('''bbox''', {0: '''batch''', 1: '''sequence'''}),
								        ('''attention_mask''', {0: '''batch''', 1: '''sequence'''}),
								        ('''token_type_ids''', {0: '''batch''', 1: '''sequence'''}),
								    ]					)




							def  SCREAMING_SNAKE_CASE_ (						self		:					Tuple							,__lowerCamelCase		:					PreTrainedTokenizer							,__lowerCamelCase		:					int = -1							,__lowerCamelCase		:					int = -1							,__lowerCamelCase		:					bool = False							,__lowerCamelCase		:					Optional[TensorType] = None							,):





								'''simple docstring'''



								a		=			super().generate_dummy_inputs(
								    __lowerCamelCase							,batch_size=__lowerCamelCase							,seq_length=__lowerCamelCase							,is_pair=__lowerCamelCase							,framework=__lowerCamelCase					)

								# Generate a dummy bbox
								a		=			[48, 84, 73, 1_28]

								if not framework == TensorType.PYTORCH:
									raise NotImplementedError('''Exporting LayoutLM to ONNX is currently only supported for PyTorch.'''					)

								if not is_torch_available():
									raise ValueError('''Cannot generate dummy inputs without PyTorch installed.'''					)
								import torch

								a	, a		=			input_dict['''input_ids'''].shape
								a		=			torch.tensor([*[box] * seq_length]					).tile(__lowerCamelCase							,1							,1					)
								return input_dict













import sys
from dataclasses import dataclass
from typing import TYPE_CHECKING, Dict, List, Optional, Tuple, Union

import pandas as pd
import pyarrow as pa

import datasets
import datasets.config
from datasets.features.features import require_storage_cast
from datasets.table import table_cast


if TYPE_CHECKING:
				import sqlitea

				import sqlalchemy


UpperCamelCase__						:      Tuple								=					datasets.utils.logging.get_logger(__name__)







@dataclass
class 				lowerCamelCase_     (	datasets.BuilderConfig     ):
							SCREAMING_SNAKE_CASE_						     =			None
							SCREAMING_SNAKE_CASE_						     =			None
							SCREAMING_SNAKE_CASE_						     =			None
							SCREAMING_SNAKE_CASE_						     =			True
							SCREAMING_SNAKE_CASE_						     =			None
							SCREAMING_SNAKE_CASE_						     =			None
							SCREAMING_SNAKE_CASE_						     =			None
							SCREAMING_SNAKE_CASE_						     =			1_00_00
							SCREAMING_SNAKE_CASE_						     =			None
							def  SCREAMING_SNAKE_CASE_ (						self		:					Optional[Any]					):





								'''simple docstring'''



								if self.sql is None:
									raise ValueError('''sql must be specified'''					)
								if self.con is None:
									raise ValueError('''con must be specified'''					)
							def  SCREAMING_SNAKE_CASE_ (						self		:					Any							,__lowerCamelCase		:					dict							,__lowerCamelCase		:					Optional[datasets.Features] = None							,):





								'''simple docstring'''



								a		=			config_kwargs.copy()
								# We need to stringify the Selectable object to make its hash deterministic

								# The process of stringifying is explained here: http://docs.sqlalchemy.org/en/latest/faq/sqlexpressions.html
								a		=			config_kwargs['''sql''']
								if not isinstance(__lowerCamelCase							,__lowerCamelCase					):
									if datasets.config.SQLALCHEMY_AVAILABLE and "sqlalchemy" in sys.modules:
										import sqlalchemy

										if isinstance(__lowerCamelCase							,sqlalchemy.sql.Selectable					):
											a		=			sqlalchemy.create_engine(config_kwargs['''con'''].split('''://'''					)[0] + '''://'''					)
											a		=			str(sql.compile(dialect=engine.dialect					)					)
											a		=			sql_str
										else:
											raise TypeError(
											    F"""Supported types for 'sql' are string and sqlalchemy.sql.Selectable but got {type(__lowerCamelCase					)}: {sql}"""					)
									else:
										raise TypeError(
										    F"""Supported types for 'sql' are string and sqlalchemy.sql.Selectable but got {type(__lowerCamelCase					)}: {sql}"""					)
								a		=			config_kwargs['''con''']
								if not isinstance(__lowerCamelCase							,__lowerCamelCase					):
									a		=			id(__lowerCamelCase					)
									logger.info(
									    F"""SQL connection 'con' of type {type(__lowerCamelCase					)} couldn't be hashed properly. To enable hashing, specify 'con' as URI string instead."""					)

								return super().create_config_id(__lowerCamelCase							,custom_features=__lowerCamelCase					)




							@property
							def  SCREAMING_SNAKE_CASE_ (						self		:					Dict					):





								'''simple docstring'''



								a		=			{
								    '''index_col''': self.index_col,
								    '''columns''': self.columns,
								    '''params''': self.params,
								    '''coerce_float''': self.coerce_float,
								    '''parse_dates''': self.parse_dates,
								}
								return pd_read_sql_kwargs







class 				lowerCamelCase_     (	datasets.ArrowBasedBuilder     ):
							SCREAMING_SNAKE_CASE_						     =			SqlConfig
							def  SCREAMING_SNAKE_CASE_ (						self		:					Optional[Any]					):





								'''simple docstring'''



								return datasets.DatasetInfo(features=self.config.features					)
							def  SCREAMING_SNAKE_CASE_ (						self		:					Union[str, Any]							,__lowerCamelCase		:					int					):





								'''simple docstring'''



								return [datasets.SplitGenerator(name=datasets.Split.TRAIN							,gen_kwargs={}					)]
							def  SCREAMING_SNAKE_CASE_ (						self		:					Tuple							,__lowerCamelCase		:					pa.Table					):





								'''simple docstring'''



								if self.config.features is not None:
									a		=			self.config.features.arrow_schema
									if all(not require_storage_cast(__lowerCamelCase					) for feature in self.config.features.values()					):
										# cheaper cast
										a		=			pa.Table.from_arrays([pa_table[field.name] for field in schema]							,schema=__lowerCamelCase					)
									else:
										# more expensive cast; allows str <-> int/float or str to Audio for example
										a		=			table_cast(__lowerCamelCase							,__lowerCamelCase					)
								return pa_table




							def  SCREAMING_SNAKE_CASE_ (						self		:					str					):





								'''simple docstring'''



								a		=			self.config.chunksize
								a		=			pd.read_sql(
								    self.config.sql							,self.config.con							,chunksize=__lowerCamelCase							,**self.config.pd_read_sql_kwargs					)
								a		=			[sql_reader] if chunksize is None else sql_reader
								for chunk_idx, df in enumerate(__lowerCamelCase					):
									a		=			pa.Table.from_pandas(__lowerCamelCase					)
									yield chunk_idx, self._cast_table(__lowerCamelCase					)





