

# Lint as: python3
# pylint: enable=line-too-long
# pylint: disable=g-import-not-at-top,g-bad-import-order,wrong-import-position

a_      =     '2.13.1'

import platform

import pyarrow
from packaging import version


if version.parse(platform.python_version()) < version.parse('3.7'):
			raise ImportWarning(
			    'To use `datasets`, Python>=3.7 is required, and the current version of Python doesn\'t match this condition.'
			)

if version.parse(pyarrow.__version__).major < 8:
			raise ImportWarning(
			    'To use `datasets`, the module `pyarrow>=8.0.0` is required, and the current version of `pyarrow` doesn\'t match this condition.\n'
			    'If you are running this in a Google Colab, you should probably just restart the runtime to use the right version of `pyarrow`.'
			)

del platform
del pyarrow
del version

from .arrow_dataset import Dataset
from .arrow_reader import ReadInstruction
from .builder import ArrowBasedBuilder, BeamBasedBuilder, BuilderConfig, DatasetBuilder, GeneratorBasedBuilder
from .combine import concatenate_datasets, interleave_datasets
from .dataset_dict import DatasetDict, IterableDatasetDict
from .download import *
from .features import *
from .fingerprint import disable_caching, enable_caching, is_caching_enabled, set_caching_enabled
from .info import DatasetInfo, MetricInfo
from .inspect import (
    get_dataset_config_info,
    get_dataset_config_names,
    get_dataset_infos,
    get_dataset_split_names,
    inspect_dataset,
    inspect_metric,
    list_datasets,
    list_metrics,
)
from .iterable_dataset import IterableDataset
from .load import load_dataset, load_dataset_builder, load_from_disk, load_metric
from .metric import Metric
from .splits import (
    NamedSplit,
    NamedSplitAll,
    Split,
    SplitBase,
    SplitDict,
    SplitGenerator,
    SplitInfo,
    SubSplitInfo,
    percent,
)
from .tasks import *
from .utils import *
from .utils import logging


# deprecated modules
from datasets import arrow_dataset as _arrow_dataset  # isort:skip
from datasets import utils as _utils  # isort:skip
from datasets.utils import download_manager as _deprecated_download_manager  # isort:skip

a_      =     concatenate_datasets
a_      =     DownloadConfig
a_      =     DownloadManager
a_      =     DownloadMode
a_      =     DownloadConfig
a_      =     DownloadMode
a_      =     DownloadManager

del _arrow_dataset, _utils, _deprecated_download_manager







import unittest

import numpy as np





def 		__UpperCAmelCase     (	a_				,	a_				,	a_				,	a_ = None				,	):
							snake_case_           =				np.shape(a_)
							snake_case_           =				np.shape(a_)
							snake_case_           =				np.shape(a_)

							if shape_a[0] != shape_b[0]:
														snake_case_           =				(
														    'Expected the same number of rows for A and B. '
														    f'''Instead found A of size {shape_a} and B of size {shape_b}'''
														)
														raise ValueError(a_)

							if shape_b[1] != shape_c[1]:
														snake_case_           =				(
														    'Expected the same number of columns for B and C. '
														    f'''Instead found B of size {shape_b} and C of size {shape_c}'''
														)
														raise ValueError(a_)

							snake_case_           =				pseudo_inv
							if a_inv is None:
														try:
																					snake_case_           =				np.linalg.inv(a_)
														except np.linalg.LinAlgError:
																					raise ValueError(
																					    'Input matrix A is not invertible. Cannot compute Schur complement.')

							return mat_c - mat_b.T @ a_inv @ mat_b




class 					UpperCamelCase_ (     unittest.TestCase							):



	'''simple docstring'''




	def 				_UpperCamelCase     (			self   )			->       None:
								snake_case_           =				np.array([[1, 2, 1], [2, 1, 2], [3, 2, 4]]   )
								snake_case_           =				np.array([[0, 3], [3, 0], [2, 3]]   )
								snake_case_           =				np.array([[2, 1], [6, 3]]   )

								snake_case_           =				schur_complement(a			,     a			,     a   )

								snake_case_           =				np.block([[a, b], [b.T, c]]   )

								snake_case_           =				np.linalg.det(a   )
								snake_case_           =				np.linalg.det(a   )
								snake_case_           =				np.linalg.det(a   )

								self.assertAlmostEqual(a			,     det_a * det_s   )




	def 				_UpperCamelCase     (			self   )			->       None:
								snake_case_           =				np.array([[1, 2, 1], [2, 1, 2], [3, 2, 4]]   )
								snake_case_           =				np.array([[0, 3], [3, 0], [2, 3]]   )
								snake_case_           =				np.array([[2, 1], [6, 3]]   )

								with self.assertRaises(a   ):
															schur_complement(a			,     a			,     a   )






	def 				_UpperCamelCase     (			self   )			->       None:
								snake_case_           =				np.array([[1, 2, 1], [2, 1, 2], [3, 2, 4]]   )
								snake_case_           =				np.array([[0, 3], [3, 0], [2, 3]]   )
								snake_case_           =				np.array([[2, 1, 3], [6, 3, 5]]   )

								with self.assertRaises(a   ):
															schur_complement(a			,     a			,     a   )


if __name__ == "__main__":
	import doctest

	doctest.testmod()
	unittest.main()





