




lowerCamelCase__					:  int      							=				tuple[float, float, float]
lowerCamelCase__					:  Optional[Any]      							=				tuple[float, float, float]

def    UpperCAmelCase_				( __UpperCAmelCase		:      Pointad     ,     __UpperCAmelCase		:      Pointad				)   ->					Vectorad:
      SCREAMING_SNAKE_CASE_      		=     end_pointa[0] - end_pointa[0]
      SCREAMING_SNAKE_CASE_      		=     end_pointa[1] - end_pointa[1]
      SCREAMING_SNAKE_CASE_      		=     end_pointa[2] - end_pointa[2]
      return (x, y, z)

def    UpperCAmelCase_				( __UpperCAmelCase		:      Vectorad     ,     __UpperCAmelCase		:      Vectorad				)   ->					Vectorad:
      SCREAMING_SNAKE_CASE_      		=     ab[1] * ac[2] - ab[2] * ac[1]  # *i
      SCREAMING_SNAKE_CASE_      		=     (ab[0] * ac[2] - ab[2] * ac[0]) * -1  # *j
      SCREAMING_SNAKE_CASE_      		=     ab[0] * ac[1] - ab[1] * ac[0]  # *k
      return (x, y, z)

def    UpperCAmelCase_				( __UpperCAmelCase		:      Vectorad     ,     __UpperCAmelCase		:      int				)   ->					bool:
      return tuple(round(__UpperCAmelCase     ,     __UpperCAmelCase				) for x in vector				) == (0, 0, 0)





def    UpperCAmelCase_				( __UpperCAmelCase		:      Pointad     ,     __UpperCAmelCase		:      Pointad     ,     __UpperCAmelCase		:      Pointad     ,     __UpperCAmelCase		:      int = 10				)   ->					bool:
      SCREAMING_SNAKE_CASE_      		=     create_vector(__UpperCAmelCase     ,     __UpperCAmelCase				)
      SCREAMING_SNAKE_CASE_      		=     create_vector(__UpperCAmelCase     ,     __UpperCAmelCase				)
      return is_zero_vector(get_ad_vectors_cross(__UpperCAmelCase     ,     __UpperCAmelCase				)     ,     __UpperCAmelCase				)
"""simple docstring"""


# Copyright 2023 The HuggingFace Team. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_torch_available


a				={
    'configuration_mgp_str': ['MGP_STR_PRETRAINED_CONFIG_ARCHIVE_MAP', 'MgpstrConfig'],
    'processing_mgp_str': ['MgpstrProcessor'],
    'tokenization_mgp_str': ['MgpstrTokenizer'],
}

try:
	if not is_torch_available():
		raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
	pass
else:
	a				=[
	    'MGP_STR_PRETRAINED_MODEL_ARCHIVE_LIST',
	    'MgpstrModel',
	    'MgpstrPreTrainedModel',
	    'MgpstrForSceneTextRecognition',
	]

if TYPE_CHECKING:
	from .configuration_mgp_str import MGP_STR_PRETRAINED_CONFIG_ARCHIVE_MAP, MgpstrConfig
	from .processing_mgp_str import MgpstrProcessor
	from .tokenization_mgp_str import MgpstrTokenizer

	try:
		if not is_torch_available():
			raise OptionalDependencyNotAvailable()
	except OptionalDependencyNotAvailable:
		pass
	else:
		from .modeling_mgp_str import (
		    MGP_STR_PRETRAINED_MODEL_ARCHIVE_LIST,
		    MgpstrForSceneTextRecognition,
		    MgpstrModel,
		    MgpstrPreTrainedModel,
		)
else:
	import sys

	a				=_LazyModule(__name__, globals()['__file__'], _import_structure, module_spec=__spec__)


