
from __future__ import annotations

from enum import Enum, unique
from typing import TypeVar

# Create a generic variable that can be 'Enum', or any subclass.
UpperCamelCase_  =	TypeVar("T", bound="Enum")

@unique
class     _SCREAMING_SNAKE_CASE							(		snake_case							):
				lowerCamelCase_       =     8_0
				lowerCamelCase_       =     7_0
				lowerCamelCase_       =     6_0
				lowerCamelCase_       =     5_0
				lowerCamelCase_       =     4_0
				lowerCamelCase_       =     3_0
				lowerCamelCase_       =     2_0
				lowerCamelCase_       =     1_0



@unique
class     _SCREAMING_SNAKE_CASE							(		snake_case							):
				lowerCamelCase_       =     2_4
				lowerCamelCase_       =     2_1
				lowerCamelCase_       =     1_8
				lowerCamelCase_       =     1_5
				lowerCamelCase_       =     1_2
				lowerCamelCase_       =     9
				lowerCamelCase_       =     6
				lowerCamelCase_       =     3
				lowerCamelCase_       =     2
				lowerCamelCase_       =     1
				lowerCamelCase_       =     -1
				lowerCamelCase_       =     -2
				lowerCamelCase_       =     -3
				lowerCamelCase_       =     -6
				lowerCamelCase_       =     -9
				lowerCamelCase_       =     -1_2
				lowerCamelCase_       =     -1_5
				lowerCamelCase_       =     -1_8
				lowerCamelCase_       =     -2_1
				lowerCamelCase_       =     -2_4





				@classmethod
				def        _UpperCAmelCase						(		cls :		type[T]							):


								"""simple docstring"""

								return {unit.name: unit.value for unit in cls if unit.value > 0}






				@classmethod
				def        _UpperCAmelCase						(		cls :		type[T]							):


								"""simple docstring"""

								return {unit.name: unit.value for unit in cls if unit.value < 0}





def 							_lowerCamelCase			(					lowerCamelCase_:  float		):



				'''simple docstring'''







				A     :  Dict   =				SIUnit.get_positive() if value > 0 else SIUnit.get_negative()
				for name_prefix, value_prefix in prefixes.items():
								A     :  List[Any]   =				value / (10**value_prefix)
								if numerical_part > 1:
												return f"""{numerical_part!s} {name_prefix}"""
				return str(lowerCamelCase_		)





def 							_lowerCamelCase			(					lowerCamelCase_:  float		):



				'''simple docstring'''







				for prefix in BinaryUnit:
								A     :  Union[str, Any]   =				value / (2**prefix.value)
								if numerical_part > 1:
												return f"""{numerical_part!s} {prefix.name}"""
				return str(lowerCamelCase_		)


if __name__ == "__main__":
					import doctest

					doctest.testmod()

def 							_lowerCamelCase			(					lowerCamelCase_:  int		):



				'''simple docstring'''







				if not isinstance(lowerCamelCase_				,	lowerCamelCase_		):
								raise ValueError('''double_factorial() only accepts integral values'''		)
				if num < 0:
								raise ValueError('''double_factorial() not defined for negative values'''		)
				A     :  int   =				1
				for i in range(lowerCamelCase_				,	0				,	-2		):
								value *= i
				return value


if __name__ == "__main__":
					import doctest

					doctest.testmod()