



from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_torch_available


__snake_case     :Optional[int]			       ={
    'configuration_jukebox': [
        'JUKEBOX_PRETRAINED_CONFIG_ARCHIVE_MAP',
        'JukeboxConfig',
        'JukeboxPriorConfig',
        'JukeboxVQVAEConfig',
    ],
    'tokenization_jukebox': ['JukeboxTokenizer'],
}

try:
				if not is_torch_available():
								raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
				pass
else:
				__snake_case     :Tuple			       =[
				    'JUKEBOX_PRETRAINED_MODEL_ARCHIVE_LIST',
				    'JukeboxModel',
				    'JukeboxPreTrainedModel',
				    'JukeboxVQVAE',
				    'JukeboxPrior',
				]

if TYPE_CHECKING:
				from .configuration_jukebox import (
				    JUKEBOX_PRETRAINED_CONFIG_ARCHIVE_MAP,
				    JukeboxConfig,
				    JukeboxPriorConfig,
				    JukeboxVQVAEConfig,
				)
				from .tokenization_jukebox import JukeboxTokenizer

				try:
								if not is_torch_available():
												raise OptionalDependencyNotAvailable()
				except OptionalDependencyNotAvailable:
								pass
				else:
								from .modeling_jukebox import (
								    JUKEBOX_PRETRAINED_MODEL_ARCHIVE_LIST,
								    JukeboxModel,
								    JukeboxPreTrainedModel,
								    JukeboxPrior,
								    JukeboxVQVAE,
								)

else:
				import sys

				__snake_case     :int			       =_LazyModule(__name__, globals()['__file__'], _import_structure, module_spec=__spec__)




from collections.abc import Callable

import numpy as np






def  lowerCamelCase_	(      lowerCAmelCase__	:	Callable			,	lowerCAmelCase__	:	float			,	lowerCAmelCase__	:	float			,	lowerCAmelCase__	:	float			,	lowerCAmelCase__	:	float				)       ->							np.array:

							'''simple docstring'''






							A      						=    int(np.ceil((x_end - xa) / step_size				)				)
							A      						=    np.zeros((n + 1,)				)
							A      						=    ya
							A      						=    xa

							for k in range(lowerCAmelCase__				):
														A      						=    y[k] + step_size * ode_func(lowerCAmelCase__			,	y[k]				)
														A      						=    y[k] + (
														    (step_size / 2) * (ode_func(lowerCAmelCase__			,	y[k]				) + ode_func(x + step_size			,	lowerCAmelCase__				))
														)
														x += step_size

							return y


if __name__ == "__main__":
				import doctest

				doctest.testmod()