<s> '''<STR_LIT>''' <EOL> __all__ = ( '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <EOL> '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <EOL> '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <EOL> '<STR_LIT>' , '<STR_LIT>' , <EOL> '<STR_LIT>' , '<STR_LIT>' , <EOL> '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' ) <EOL> from os import environ <EOL> from sys import platform as _sys_platform <EOL> from re import match , split <EOL> from kivy . compat import string_types <EOL> def boundary ( value , minvalue , maxvalue ) : <EOL> '''<STR_LIT>''' <EOL> return min ( max ( value , minvalue ) , maxvalue ) <EOL> def intersection ( set1 , set2 ) : <EOL> '''<STR_LIT>''' <EOL> return [ s for s in set1 if s in set2 ] <EOL> def difference ( set1 , set2 ) : <EOL> '''<STR_LIT>''' <EOL> return [ s for s in set1 if s not in set2 ] <EOL> def interpolate ( value_from , value_to , step = <NUM_LIT:10> ) : <EOL> '''<STR_LIT>''' <EOL> if type ( value_from ) in ( list , tuple ) : <EOL> out = [ ] <EOL> for x , y in zip ( value_from , value_to ) : <EOL> out . append ( interpolate ( x , y , step ) ) <EOL> return out <EOL> else : <EOL> return value_from + ( value_to - value_from ) / float ( step ) <EOL> def strtotuple ( s ) : <EOL> '''<STR_LIT>''' <EOL> if not match ( '<STR_LIT>' , s ) : <EOL> raise Exception ( '<STR_LIT>' ) <EOL> if s . count ( '<STR_LIT:(>' ) != s . count ( '<STR_LIT:)>' ) : <EOL> raise Exception ( '<STR_LIT>' ) <EOL> if s . count ( '<STR_LIT:[>' ) != s . count ( '<STR_LIT:]>' ) : <EOL> raise Exception ( '<STR_LIT>' ) <EOL> r = eval ( s ) <EOL> if type ( r ) not in ( list , tuple ) : <EOL> raise Exception ( '<STR_LIT>' ) <EOL> return r <EOL> def rgba ( s , * args ) : <EOL> '''<STR_LIT>''' <EOL> if isinstance ( s , string_types ) : <EOL> return get_color_from_hex ( s ) <EOL> elif isinstance ( s , ( list , tuple ) ) : <EOL> s = map ( lambda x : x / <NUM_LIT> , s ) <EOL> if len ( s ) == <NUM_LIT:3> : <EOL> return list ( s ) + [ <NUM_LIT:1> ] <EOL> return s <EOL> elif isinstance ( s , ( int , float ) ) : <EOL> s = map ( lambda x : x / <NUM_LIT> , [ s ] + list ( args ) ) <EOL> if len ( s ) == <NUM_LIT:3> : <EOL> return list ( s ) + [ <NUM_LIT:1> ] <EOL> return s <EOL> raise Exception ( '<STR_LIT>' ) <EOL> def get_color_from_hex ( s ) : <EOL> '''<STR_LIT>''' <EOL> if s . startswith ( '<STR_LIT:#>' ) : <EOL> return get_color_from_hex ( s [ <NUM_LIT:1> : ] ) <EOL> value = [ int ( x , <NUM_LIT:16> ) / <NUM_LIT> <EOL> for x in split ( '<STR_LIT>' , s . lower ( ) ) if x != '<STR_LIT>' ] <EOL> if len ( value ) == <NUM_LIT:3> : <EOL> value . append ( <NUM_LIT:1> ) <EOL> return value <EOL> def get_hex_from_color ( color ) : <EOL> '''<STR_LIT>''' <EOL> return '<STR_LIT:#>' + '<STR_LIT>' . join ( [ '<STR_LIT>' . format ( int ( x * <NUM_LIT:255> ) ) for x in color ] ) <EOL> def get_random_color ( alpha = <NUM_LIT:1.0> ) : <EOL> '''<STR_LIT>''' <EOL> from random import random <EOL> if alpha == '<STR_LIT>' : <EOL> return [ random ( ) , random ( ) , random ( ) , random ( ) ] <EOL> else : <EOL> return [ random ( ) , random ( ) , random ( ) , alpha ] <EOL> def is_color_transparent ( c ) : <EOL> '''<STR_LIT>''' <EOL> if len ( c ) < <NUM_LIT:4> : <EOL> return False <EOL> if float ( c [ <NUM_LIT:3> ] ) == <NUM_LIT:0.> : <EOL> return True <EOL> return False <EOL> hex_colormap = { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> } <EOL> colormap = { k : get_color_from_hex ( v ) for k , v in hex_colormap . items ( ) } <EOL> DEPRECATED_CALLERS = [ ] <EOL> def deprecated ( func ) : <EOL> '''<STR_LIT>''' <EOL> import inspect <EOL> import functools <EOL> @ functools . wraps ( func ) <EOL> def new_func ( * args , ** kwargs ) : <EOL> file , line , caller = inspect . stack ( ) [ <NUM_LIT:1> ] [ <NUM_LIT:1> : <NUM_LIT:4> ] <EOL> caller_id = "<STR_LIT>" % ( file , line , caller ) <EOL> if caller_id not in DEPRECATED_CALLERS : <EOL> DEPRECATED_CALLERS . append ( caller_id ) <EOL> warning = ( <EOL> '<STR_LIT>' <EOL> '<STR_LIT>' <EOL> '<STR_LIT>' % ( <EOL> func . __name__ , <EOL> func . __code__ . co_filename , <EOL> func . __code__ . co_firstlineno + <NUM_LIT:1> , <EOL> file , line , caller ) ) <EOL> from kivy . logger import Logger <EOL> Logger . warn ( warning ) <EOL> if func . __doc__ : <EOL> Logger . warn ( func . __doc__ ) <EOL> return func ( * args , ** kwargs ) <EOL> return new_func <EOL> class SafeList ( list ) : <EOL> '''<STR_LIT>''' <EOL> def clear ( self ) : <EOL> del self [ : ] <EOL> @ deprecated <EOL> def iterate ( self , reverse = False ) : <EOL> if reverse : <EOL> return iter ( reversed ( self ) ) <EOL> return iter ( self ) <EOL> class QueryDict ( dict ) : <EOL> '''<STR_LIT>''' <EOL> def __getattr__ ( self , attr ) : <EOL> try : <EOL> return self . __getitem__ ( attr ) <EOL> except KeyError : <EOL> return super ( QueryDict , self ) . __getattr__ ( attr ) <EOL> def __setattr__ ( self , attr , value ) : <EOL> self . __setitem__ ( attr , value ) <EOL> def format_bytes_to_human ( size , precision = <NUM_LIT:2> ) : <EOL> '''<STR_LIT>''' <EOL> size = int ( size ) <EOL> fmt = '<STR_LIT>' % precision <EOL> for unit in [ '<STR_LIT:B>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' ] : <EOL> if size < <NUM_LIT> : <EOL> return fmt % ( size , unit ) <EOL> size /= <NUM_LIT> <EOL> class Platform ( object ) : <EOL> def __init__ ( self ) : <EOL> self . _platform_ios = None <EOL> self . _platform_android = None <EOL> @ deprecated <EOL> def __call__ ( self ) : <EOL> return self . _get_platform ( ) <EOL> def __eq__ ( self , other ) : <EOL> return other == self . _get_platform ( ) <EOL> def __ne__ ( self , other ) : <EOL> return other != self . _get_platform ( ) <EOL> def __str__ ( self ) : <EOL> return self . _get_platform ( ) <EOL> def __repr__ ( self ) : <EOL> return '<STR_LIT>' . format ( <EOL> platform = self . _get_platform ( ) , <EOL> instance = super ( Platform , self ) . __repr__ ( ) <EOL> ) <EOL> def __hash__ ( self ) : <EOL> return self . _get_platform ( ) . __hash__ ( ) <EOL> def _get_platform ( self ) : <EOL> if self . _platform_android is None : <EOL> self . _platform_android = '<STR_LIT>' in environ <EOL> if self . _platform_ios is None : <EOL> self . _platform_ios = ( environ . get ( '<STR_LIT>' , '<STR_LIT>' ) == '<STR_LIT>' ) <EOL> if self . _platform_android is True : <EOL> return '<STR_LIT>' <EOL> elif self . _platform_ios is True : <EOL> return '<STR_LIT>' <EOL> elif _sys_platform in ( '<STR_LIT:win32>' , '<STR_LIT>' ) : <EOL> return '<STR_LIT>' <EOL> elif _sys_platform == '<STR_LIT>' : <EOL> return '<STR_LIT>' <EOL> elif _sys_platform [ : <NUM_LIT:5> ] == '<STR_LIT>' : <EOL> return '<STR_LIT>' <EOL> elif _sys_platform . startswith ( '<STR_LIT>' ) : <EOL> return '<STR_LIT>' <EOL> return '<STR_LIT>' <EOL> platform = Platform ( ) <EOL> '''<STR_LIT>''' <EOL> def escape_markup ( text ) : <EOL> '''<STR_LIT>''' <EOL> return text . replace ( '<STR_LIT:&>' , '<STR_LIT>' ) . replace ( '<STR_LIT:[>' , '<STR_LIT>' ) . replace ( '<STR_LIT:]>' , '<STR_LIT>' ) <EOL> class reify ( object ) : <EOL> '''<STR_LIT>''' <EOL> def __init__ ( self , func ) : <EOL> self . func = func <EOL> self . __doc__ = func . __doc__ <EOL> def __get__ ( self , inst , cls ) : <EOL> if inst is None : <EOL> return self <EOL> retval = self . func ( inst ) <EOL> setattr ( inst , self . func . __name__ , retval ) <EOL> return retval </s>
