<s> """<STR_LIT>""" <EOL> import glob <EOL> from numpy . f2py import crackfortran <EOL> sig_types = { '<STR_LIT>' : '<STR_LIT:int>' , <EOL> '<STR_LIT>' : '<STR_LIT:c>' , <EOL> '<STR_LIT>' : '<STR_LIT:d>' , <EOL> '<STR_LIT>' : '<STR_LIT:s>' , <EOL> '<STR_LIT>' : '<STR_LIT:z>' , <EOL> '<STR_LIT>' : '<STR_LIT:z>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' } <EOL> def get_type ( info , arg ) : <EOL> argtype = sig_types [ info [ '<STR_LIT>' ] [ arg ] [ '<STR_LIT>' ] ] <EOL> if argtype == '<STR_LIT:c>' and info [ '<STR_LIT>' ] [ arg ] . get ( '<STR_LIT>' ) is not None : <EOL> argtype = '<STR_LIT:z>' <EOL> return argtype <EOL> def make_signature ( filename ) : <EOL> info = crackfortran . crackfortran ( filename ) [ <NUM_LIT:0> ] <EOL> name = info [ '<STR_LIT:name>' ] <EOL> if info [ '<STR_LIT>' ] == '<STR_LIT>' : <EOL> return_type = '<STR_LIT>' <EOL> else : <EOL> return_type = get_type ( info , name ) <EOL> arglist = [ '<STR_LIT>' . join ( [ get_type ( info , arg ) , arg ] ) for arg in info [ '<STR_LIT:args>' ] ] <EOL> args = '<STR_LIT:U+002CU+0020>' . join ( arglist ) <EOL> args = args . replace ( '<STR_LIT>' , '<STR_LIT>' ) <EOL> return '<STR_LIT>' . format ( return_type , name , args ) <EOL> def get_sig_name ( line ) : <EOL> return line . split ( '<STR_LIT:(>' ) [ <NUM_LIT:0> ] . split ( '<STR_LIT:U+0020>' ) [ - <NUM_LIT:1> ] <EOL> def sigs_from_dir ( directory , outfile , manual_wrappers = None , exclusions = None ) : <EOL> if directory [ - <NUM_LIT:1> ] in [ '<STR_LIT:/>' , '<STR_LIT:\\>' ] : <EOL> directory = directory [ : - <NUM_LIT:1> ] <EOL> files = glob . glob ( directory + '<STR_LIT>' ) <EOL> if exclusions is None : <EOL> exclusions = [ ] <EOL> if manual_wrappers is not None : <EOL> exclusions += [ get_sig_name ( l ) for l in manual_wrappers . split ( '<STR_LIT:\n>' ) ] <EOL> signatures = [ ] <EOL> for filename in files : <EOL> name = filename . split ( '<STR_LIT:\\>' ) [ - <NUM_LIT:1> ] [ : - <NUM_LIT:2> ] <EOL> if name in exclusions : <EOL> continue <EOL> signatures . append ( make_signature ( filename ) ) <EOL> if manual_wrappers is not None : <EOL> signatures += [ l + '<STR_LIT:\n>' for l in manual_wrappers . split ( '<STR_LIT:\n>' ) ] <EOL> signatures . sort ( key = get_sig_name ) <EOL> comment = [ "<STR_LIT>" , <EOL> "<STR_LIT>" ] <EOL> with open ( outfile , '<STR_LIT:w>' ) as f : <EOL> f . writelines ( comment ) <EOL> f . writelines ( signatures ) <EOL> lapack_manual_wrappers = '''<STR_LIT>''' <EOL> if __name__ == '<STR_LIT:__main__>' : <EOL> from sys import argv <EOL> libname , src_dir , outfile = argv [ <NUM_LIT:1> : ] <EOL> if libname . lower ( ) == '<STR_LIT>' : <EOL> sigs_from_dir ( src_dir , outfile , exclusions = [ '<STR_LIT>' , '<STR_LIT>' ] ) <EOL> elif libname . lower ( ) == '<STR_LIT>' : <EOL> exclusions = [ '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <EOL> '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <EOL> '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <EOL> '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <EOL> '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <EOL> '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <EOL> '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <EOL> '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <EOL> '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <EOL> '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' ] <EOL> sigs_from_dir ( src_dir , outfile , manual_wrappers = lapack_manual_wrappers , <EOL> exclusions = exclusions ) </s>
