v]c3@`sdZddlmZmZmZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl m Z ddlTe jadadadadadd ad ad adadadagad ad adaiad a da!e"a#da$igt$6a%d a&ga'd a(ga)e"a*d a+ga,ga-ga.d Z/dd Z0de_1iZ2xdD]Z3idd6e2e3d?d@dAdBdCdDdEdFg3D]"Z6e6dGe4e6Z?ej<dNej=j@ZAej<dOej=j@ZBej<dPej=j@ZCej<dQej=j>ZDdRZEeFddSZGdTdUdVZHdWZIej<eHd eIeIdXfej=dEfZJej<eHd eIdYeIdYdXfej=ZKej<eHdZd[d[dXfej=d\fZLej<eHd]d^d^dXfej=d\fZMd_ZNej<eHd eNeNdXfej=d\fZOeNd`ZPej<eHd ePePdXfej=d\fZQdaZRej<eHd eReRdbfej=dcfZSddZTej<eHdeeTeTdbfej=dffZUej<eHd dgdgdXfej=dgfZVej<eHd dhdhdXfej=difZWej<eHd djdjdXfej=djfZXej<eHd dkdkdXfej=dkfZYej<eHd dldldXfej=dlfZZej<eHd dmdmdXfej=dmfZ[ej<eHd dndndXfej=dnfZ\ej<eHd dododXfej=dofZ]ej<eHd dpdpdqfej=drfZ^ej<eHd dsdsdtfej=dsfZ_ej<eHd dududXfej=dufZ`ej<eHd dvdvdXfej=dvfZaej<eHd dwdwdXfej=dwfZbej<eHd dxdxdXfej=dxfZcej<eHd dydydXfej=dyfZdej<eHd dzdzdXfej=dzfZeej<eHd d{d{d fej=d{fZfej<eHd d|d|dXfej=d|fZgej<eHd d}d}dXfej=ejhBd~fZiej<dejhdfZjdZkdZlej<dej=ZmddZndZoddZpdZqddZrej<dej=Zsej<dej=Ztej<dej=Zuej<dZvej<dZwej<dej=ZxdZydZzdZ{dZ|dZ}ej<dej=Z~ej<dej=Zej<dej=Zej<dej=Zej<dej=ZdZdZdZdZddZddZddZddZdZdZe"dZd e"dZe"d dZdZdZd dZdZe"e"dZej<dej=ZdZej<dj>ZddZej<dej=ZdZdZdZdZdZdddZidZdZej<dj>ZdZdZej<dej=ZgdZdZej<dej=Zej<dej=Zej<dej=Zej<dej=Zej<dej=ZdZidZdedZd dZd dZdZd edZdZdZedkrgZgZdZdZdZdZxejdD]Zed krf neddkr dZnedkr dadanedkr dadanedkr tr e0ddndadanWedkr danBedkr dan-edkr+ dadanedkrL dadadanedkra dZnedkrv dZnedkr dZneddkr edeener dZeanver dZeanaer0y!eejejeWn'ek r,ZedeenXn ejeqQ Wt oRtoRt ree0ddneeZtre0detdeeZetdZejeWdQXnereFenndS(s crackfortran --- read fortran (77,90) code and extract declaration information. Copyright 1999-2004 Pearu Peterson all rights reserved, Pearu Peterson Permission to use, modify, and distribute this software is given under the terms of the NumPy License. NO WARRANTY IS EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK. $Date: 2005/09/27 07:13:49 $ Pearu Peterson Usage of crackfortran: ====================== Command line keys: -quiet,-verbose,-fix,-f77,-f90,-show,-h -m ,--ignore-contains Functions: crackfortran, crack2fortran The following Fortran statements/constructions are supported (or will be if needed): block data,byte,call,character,common,complex,contains,data, dimension,double complex,double precision,end,external,function, implicit,integer,intent,interface,intrinsic, logical,module,optional,parameter,private,public, program,real,(sequence?),subroutine,type,use,virtual, include,pythonmodule Note: 'virtual' is mapped to 'dimension'. Note: 'implicit integer (z) static (z)' is 'implicit static (z)' (this is minor bug). Note: code after 'contains' will be ignored until its scope ends. Note: 'common' statement is extended: dimensions are moved to variable definitions Note: f2py directive: f2py is read as Note: pythonmodule is introduced to represent Python module Usage: `postlist=crackfortran(files)` `postlist` contains declaration information read from the list of files `files`. `crack2fortran(postlist)` returns a fortran code to be saved to pyf-file `postlist` has the following structure: *** it is a list of dictionaries containing `blocks': B = {'block','body','vars','parent_block'[,'name','prefix','args','result', 'implicit','externals','interfaced','common','sortvars', 'commonvars','note']} B['block'] = 'interface' | 'function' | 'subroutine' | 'module' | 'program' | 'block data' | 'type' | 'pythonmodule' B['body'] --- list containing `subblocks' with the same structure as `blocks' B['parent_block'] --- dictionary of a parent block: C['body'][]['parent_block'] is C B['vars'] --- dictionary of variable definitions B['sortvars'] --- dictionary of variable definitions sorted by dependence (independent first) B['name'] --- name of the block (not if B['block']=='interface') B['prefix'] --- prefix string (only if B['block']=='function') B['args'] --- list of argument names if B['block']== 'function' | 'subroutine' B['result'] --- name of the return value (only if B['block']=='function') B['implicit'] --- dictionary {'a':,'b':...} | None B['externals'] --- list of variables being external B['interfaced'] --- list of variables being external and defined B['common'] --- dictionary of common blocks (list of objects) B['commonvars'] --- list of variables used in common blocks (dimensions are moved to variable definitions) B['from'] --- string showing the 'parents' of the current block B['use'] --- dictionary of modules used in current block: {:{['only':<0|1>],['map':{:,...}]}} B['note'] --- list of LaTeX comments on the block B['f2pyenhancements'] --- optional dictionary {'threadsafe':'','fortranname':, 'callstatement':|, 'callprotoargument':, 'usercode':|, 'pymethoddef:' } B['entry'] --- dictionary {entryname:argslist,..} B['varnames'] --- list of variable names given in the order of reading the Fortran code, useful for derived types. B['saved_interface'] --- a string of scanned routine signature, defines explicit interface *** Variable definition is a dictionary D = B['vars'][] = {'typespec'[,'attrspec','kindselector','charselector','=','typename']} D['typespec'] = 'byte' | 'character' | 'complex' | 'double complex' | 'double precision' | 'integer' | 'logical' | 'real' | 'type' D['attrspec'] --- list of attributes (e.g. 'dimension()', 'external','intent(in|out|inout|hide|c|callback|cache|aligned4|aligned8|aligned16)', 'optional','required', etc) K = D['kindselector'] = {['*','kind']} (only if D['typespec'] = 'complex' | 'integer' | 'logical' | 'real' ) C = D['charselector'] = {['*','len','kind']} (only if D['typespec']=='character') D['='] --- initialization expression string D['typename'] --- name of the type if D['typespec']=='type' D['dimension'] --- list of dimension bounds D['intent'] --- list of intent specifications D['depend'] --- list of variable names on which current variable depends on D['check'] --- list of C-expressions; if C-expr returns zero, exception is raised D['note'] --- list of LaTeX comments on the variable *** Meaning of kind/char selectors (few examples): D['typespec>']*K['*'] D['typespec'](kind=K['kind']) character*C['*'] character(len=C['len'],kind=C['kind']) (see also fortran type declaration statement formats below) Fortran 90 type declaration statement format (F77 is subset of F90) ==================================================================== (Main source: IBM XL Fortran 5.1 Language Reference Manual) type declaration = [[]::] = byte | character[] | complex[] | double complex | double precision | integer[] | logical[] | real[] | type() = * | ([len=][,[kind=]]) | (kind=[,len=]) = * | ([kind=]) = comma separated list of attributes. Only the following attributes are used in building up the interface: external (parameter --- affects '=' key) optional intent Other attributes are ignored. = in | out | inout = comma separated list of dimension bounds. = [[*][()] | [()]*] [// | =] [,] In addition, the following attributes are used: check,depend,note TODO: * Apply 'parameter' attribute (e.g. 'integer parameter :: i=2' 'real x(i)' -> 'real x(2)') The above may be solved by creating appropriate preprocessor program, for example. i(tdivisiontabsolute_importtprint_functionNi(t __version__(t*tfixit ticC`sdadadadadadadadadada ga da igt 6a da dadagaiadadadagagagagadadS( NiRiiRRis (t strictf77tsourcecodeformtquiettverbosettabchart pyffilenamet f77modulenamet skipemptyendstignorecontainst dolowercasetdebugt groupcountert grouplistt neededmodulet expectbegintskipblocksuntilt usermodulest f90modulevarst gotnextfiletfilepositiontexttcurrentfilenamet skipfunctionst skipfuncst onlyfuncst include_pathstNonetprevious_context(((sg/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/f2py/crackfortran.pytreset_global_f2py_varss4  cC`s@ts dSts<|r)tjjtntjj|ndS(N(R R tsyststdouttwriteR(tlinetflag((sg/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/f2py/crackfortran.pytoutmesss i2sabcdefghopqrstuvwxyz$_trealttypespectijklmntintegertinttdoubletfloattchartshorttlongtvoidtcasetwhiletreturntsignedtunsignedtiftforttypedeftsizeoftuniontstructtstatictregistertnewtbreaktdotgototswitchtcontinuetelsetinlinetexterntdeletetconsttautotlentranktshapetindextslentsizet_itmaxtmintflentfshapetstringtcomplex_doublet float_doubletstdintstderrR%ttypetdefaultt_bncC`s0|tkr,td|t|ft|S|S(Ns&rmbadname1: Replacing "%s" with "%s". (tbadnamesterrmess(tname((sg/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/f2py/crackfortran.pyt rmbadname1 s  cC`sg|D]}t|^qS(N(Rd(tnamest_m((sg/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/f2py/crackfortran.pyt rmbadnamescC`s0|tkr,td|t|ft|S|S(Ns+undo_rmbadname1: Replacing "%s" with "%s". (t invbadnamesRb(Rc((sg/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/f2py/crackfortran.pytundo_rmbadname1s  cC`sg|D]}t|^qS(N(Ri(ReRf((sg/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/f2py/crackfortran.pytundo_rmbadnamescC`sS|jd}|dkrdSd||kr3dSd||krGdS||dS(Nt.iRs\t/i(trfind(Rcti((sg/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/f2py/crackfortran.pyt getextension!s s.*[.](for|ftn|f77|f)\Zs-[*]-\s*fortran\s*-[*]-s-[*]-\s*f90\s*-[*]-s-[*]-\s*fix\s*-[*]-s[^c*]\s*[^\s\d\t]cC`sd}t|d}|j}d}t|r?d}nt|rZd}d}nx|dkr|r|ddkr|jr|d8}|ddkrt|d s|dd !d krd}Pqn|j}q]WWd QX|S( s(Check if file is in free format Fortran.itriit!s iiit&N(topentreadlinet _has_f_headert_has_f90_headertstript_free_f90_start(tfiletresulttfR'tn((sg/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/f2py/crackfortran.pytis_free_format2s"      3c C`so|s*tttttttttf }n|gkr:dSt}d}d}d}t j dt j }t j d} t j d} t j d} |r|ddnd)\}} d ggt d D]} t | ^q}datj|}xtr|j}|sPn|jrda|jad a|} dad atjjtd }ttrt|pt| rd an"ttrt| rd antrtantatdttttrdpdfn|jj dd }x.|dks;|ddkr.Pn|d }qWtst!|d\}}|d 7}|d j"dkrt!|d*|dd\}}qn|j#dkrd}qntd kr|dd+kr|d d!j"dkrd|d}q6d}qn(tr6t$|dkr6|d }q6n|d|kr_t%dt|n| sltrt$|dkr|dd k r||d}d}d}qtsN| j&|}|r|j'd}n|r || j&|j'd}d}d}n5d|d}|r-|j"}n|}|}|}|dk }qd|d}|rq|j"}n|}|}|}n5td kr| r|d kr| j&|r|d!}xGtr|j}|st)d"Pn||}| j&|rPqqW|j*}n| j&|}|r>|j'd}n|ro|| j&|j'd}d}d}n'|r|j"}n|}|}|}|dk }nt+d#ttd$|j,d t| fa|j&|}|r|j'd%}tjj-|r't.|d&|d'dqtjj/tgt0}d}xU|D]M}tjj1||}tjj-|rMd }t.|d&|d'dPqMqMW|std(t|tj2j1|fqn |||} qW|r|j"}n|}|}d$|j,d t| fa|j&|}|r|j'd%}tjj-|rqt.|d&|d'dq$tjj/tgt0}d}xU|D]M}tjj1||}tjj-|rd }t.|d&|d'dPqqW|s$td(t|tj2j1|fq$n ||da|j3|rJ|dd n!|\ aaaaaaaaadS(,s Read fortran codes from files and 1) Get rid of comments, line continuations, and empty lines; lower cases. 2) Call dowithline(line) on every line. 3) Recursively call itself when statement "include ''" is met. NiRs*\s*include\s*(\'|")(?P[^\'"]*)(\'|")s(?P.*)&\s*\Zs(\s*&|)(?P.*)s.*?'''iRi iRtfrees Reading file %s (format:%s%s) s,strictss Rqis!f2pyiRtctCt#tf2pys iHsxreadfortrancode: Found non-(space,digit) char in the first column. Are you sure that this code is in fix form? line=%siR's.pyfs s.Unexpected end of file when reading multiline s6Flag sourcecodeform must be either 'fix' or 'free': %ssLine #%d in %s:"%s" Rct dowithlinetistopsAreadfortrancode: could not find include file %s in %s. Ignoring. (RRs (RRRqRR(4RRRR Rt beginpatternR R RtretcompiletItrangetstrt fileinputt FileInputtTrueRtt isfirstlinetfilenametostpathtsplitextt is_f_fileRvt_has_fix_headerR}tbeginpattern77tbeginpattern90R)treprt expandtabstreplacetsplit_by_unquotedtlowerRwRNt ExceptiontmatchtgroupR!Rbtrstript ValueErrort filelinenotisfiletreadfortrancodetdirnameR tjointpathseptclose(tffileRRt saveglobalstlocaldolowercasetcontt finallinetllt includelinetcont1tcont2t mline_marktl1Rft spacedigitstfintltexttrlt_t origfinallineRptlctmtfnt include_dirst foundfiletinc_dirtfn1((sg/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/f2py/crackfortran.pyRJsR   ,          ' 0    "      &   &  s"\s*(?P%s(?=\s*(\b(%s)\b)))s\s*(?P(\b(%s)\b))s\s*(?P%s)\s*\Zsqcharacter|logical|integer|real|complex|double\s*(precision\s*(complex|)|complex)|type(?=\s*\([\w\s,=(*)]*\))|bytes.*s|static|automatic|undefineds([a-z]+[\w\s(=*+-/)]*?|)tfunctiontbegins [a-z\s]*?t subroutinesprogram|block\s*datas?|module(?!\s*procedure)|python\s*module|interface|type(?!\s*\()sBend|endprogram|endblockdata|endmodule|endpythonmodule|endinterfaces[\w\s]*tends>(end\s*(if|do|where|select|while|forall))|(module\s*procedure)s[\w]*?tendiftimplicitsdimension|virtualt dimensiontexternaltoptionaltrequiredtpublictprivatetintrisicsintent|depend|note|checks \s*\(.*?\).*tintentt parameters\s*\(.*tdatatcalltentrytcallfuntcommontusetcontainstformatsKthreadsafe|fortranname|callstatement|callprotoargument|usercode|pymethoddeftf2pyenhancementss2\s*(?P''')(?P.*?)(?P''')\s*\Zt multilinec C`stdt|@ s#tdtjdjddjtj|ddjtj|dd d d }|j|}|r|j}|d |d fS|dfS(s Splits the line into (line[:i], line[i:]), where i is the index of first occurrence of one of the characters not within quotes, or len(line) if no such index exists s"'scannot split by unquoted quotessR\A(?P({single_quoted}|{double_quoted}|{not_quoted})*)(?P{char}.*)\Zt not_quoteds[^"'{}]R1s[{}]t single_quoteds('([^'\\]|(\\.))*')t double_quoteds("([^"\\]|(\\.))*")tbeforetafterR(tsettAssertionErrorRRRtescapeRt groupdict(R't charactersRpRtd((sg/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/f2py/crackfortran.pyRds#   cC`scg}xMt|jdD]6}x dD]}|j|d}q)W|j|qWdj|S(Ns@,@s(),Rt,(tmarkoutercommatsplitRtappendR(targslinetaR|Rp((sg/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/f2py/crackfortran.pyt _simplifyargsxs  s&\s*(?P\b[a-z]+[\w]*\b)\s*[=].*cC`st|d\}}|rtdj|p>tdj| r|dks`tt|t|d\}}x0|rt||t|dd\}}qxWt||dS|dkr:daidt6aiit6a igt6a gt td[^"]*)\b%s\b\s*@\(@(?P[^@]*)@\)@.*\ZRtargsscallfun %s(%s) result (%s)Rzscallfun %s(%s)s8crackline: could not resolve function call for line=%s. Rs.pyfs"crackline:%d: No pattern for line Rs>crackline: groupcounter(=%s) is nonpositive. Check the blocks.tthissGcrackline: End group %s does not match with previous Begin group %s %sRRR(<Rtf2pyenhancementspatternRtmultilinepatternRRt cracklineRt groupnamet groupcacheRRRRR)Rtdimensionpatterntexternalpatternt intentpatterntoptionalpatterntrequiredpatterntparameterpatternt datapatternt publicpatterntprivatepatterntintrisicpatternt endifpatternt endpatternt formatpatternRtfunctionpatterntsubroutinepatterntimplicitpatternt typespatternt commonpatternt callpatternt usepatterntcontainspatternt entrypatterntcrackline_re_1RhRtmarkouterparenRRRtcallfunpatternt analyzelineR RRtendswithR!R"RRRRRR(R'tresetRt has_semicolontsemicolon_linetflR(tpatRtre_1Rctm1tm2R((sg/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/f2py/crackfortran.pyRs                      $ -            cC`sd}d}x|D]z}|dkrN|d}|dkr|d}qqn5|dkr|d}|dkr|d}qqn||}qW|S(NRit(is@(@t)s@)@((R'RR{R((sg/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/f2py/crackfortran.pyRs           RcC`sd}d}t||d\}}||7}x|r|d|kri|dkri|d|d7}nH||d7}|ddkr|d7}n|ddkr|d8}nt|d|d\}}||7}q2W| stt|||f|S(NRis()t@RiR(RRR(R'tcommaRR{RR((sg/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/f2py/crackfortran.pyR1s     "cC`s"|jddjdd}|S(Ns@(@Rs@)@R(R(R'Rp((sg/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/f2py/crackfortran.pytunmarkouterparenDscC`sp|si}n|s|S||kr)|Sx@t|jD],}|dkrt|s`||krh||||(@\(@.*?@\)@|[*][\d*]+|[*]\s*@\(@.*?@\)@|))(?P.*)\Zs\s*(?P\b[\w$]+\b)\s*(@\(@\s*(?P[\w\s,]*)\s*@\)@|)\s*((result(\s*@\(@\s*(?P\b[\w$]+\b)\s*@\)@|))|(bind\s*@\(@\s*(?P.*)\s*@\)@))*\s*\Zs9\s*(?P\b[\w$]+\b)\s*@\(@\s*(?P.*)\s*@\)@\s*\Zs4([-+]?(?:\d+(?:\.\d*)?|\d*\.\d+))[dD]((?:[-+]?\d+)?)sA([-+]?((?:\d+(?:\.\d*)?|\d*\.\d+))[eE]((?:[-+]?\d+)?)|(\d+\.\d*))sintent\s*\(.*?\bcallback\bcC`s4x-|jdgD]}tj|rdSqWdS(NR!ii(tgett_intentcallbackpatternR(tvdeclR((sg/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/f2py/crackfortran.pyt_is_intent_callbackuscC`st|}tj|}|rU|jd|jd|jd|jdfStj|}|r|jd|jdddfSdgddfS(NRcRRztbind(RtnameargspatternRRtcallnameargspatternR!(R'R((sg/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/f2py/crackfortran.pyt_resolvenameargspattern|s 4"c= C`s|jd}|dkr$dantr|dvkrt rtdkrtjjt j dd }t d |d a tdad t tj,ttd}qN n|d kri d }d}n|| j}||d"}t|j d}t-|dkr |d }t d?d>j,|dnd}xgt|j dD]} | j^q D]j}t.j|}|sk |d~kr; d} q t/|j0t d@|t|fq nt|jd} | |kr i|| dP}qnyt;|i|}Wn3t<t=t>fk r }t2dQ||fqnXt||| dHr|*dj}*n|j |*|+g|/}*d}+d },qqW|,d"kr|*j}*|*jDd>r|*dj}*n|j |*|+gni}0d ttkrEttd }0nd}x|D] }1g|1D]} | j^q_}1|1d d d>kr|1d d|1d k r|1d|d_kr|- }-n|d}qTW|d}||0kri|0|D]} | j^qz}i}:x|D]}1dH|1krtjdm|1tj}"|"r|"jdhj|:|"jdnj.*?)\s*(\(\s*(?P[a-z-, ]+)\s*\)\s*|)\ZsDanalyzeline: could not extract info of implicit statement part "%s" sManalyzeline: could not extract types pattern of implicit statement part "%s" R"R#R%t-sZanalyzeline: expected "-" instead of "%s" in range list of implicit statement s^analyzeline: expected "-" instead of "%s" in range list of implicit statement (2) Rt'RlRRs>analyzeline: implied-DO list "%s" is not supported. Skipping. s=analyzeline: changing init expression of "%s" ("%s") to "%s" Rs//t_BLNK_RsT\A\s*(?P\b[\w]+\b)\s*((,(\s*\bonly\b\s*:|(?P))\s*(?P.*))|)\s*\ZR(tnotonlytonlys;\A\s*(?P\b[\w]+\b)\s*=\s*>\s*(?P\b[\w]+\b)\s*\Ztlocals0analyzeline: Not local=>use pattern found in %s tmaps0analyzeline: Could not crack the use statement. Rtusercodes-analyzeline: No context for multiline block. s+analyzeline: No code implemented for line. (RRRR^(RRR(R>s block data(RR(RR(RR(RR(RRRRRRRR(RR(RRRRRR(R(HRR!R"RRRRRtbasenameRRR)RRRRRRRRR9RgRRwtremoveRRR RRdR(R)RtcopytdeepcopyRQRR1R tcracktypespec0t updatevarsRtfindRRRNt namepatterntprintRR3Rbtget_parameterstdetermineexprtypeR2t real16patterntfinditertstartRRtevalt SyntaxErrort NameErrort TypeErrorttypespattern4implicitt cracktypespecRtordtchrt startswitht isinstanceRtappendmultiline(=RR5R'RtnewnameRcRRzR6txt needmodulet needinterfacetitR0ttR+tselectortattrtedeclt last_nameRRntpltchRFRtaptinitexprtparamsttttvtmsgtimplR-Rt kindselectt charselectR%RptbegctendctotdltilR{tfctinpRRRtjtllentcltbntolt commonkeytmmtisonlyRRtgc((sg/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/f2py/crackfortran.pyRs            !    1                -      $-  !  8   9  $*   ! 1 !   !   5               2     % E   !  %  *     % 2   ( &                   ? *    4+                9    ,  %   !     cC`sQd|kri|dcracktypespec0: no kind/char_selector pattern found for line. RGR-tlogicalR*t characterR^RRs::ii(RGR-RR*RR^(R!RRRRwRt selectpatternRR)RR(R)R RW(R+RRpRqRRR0Rn((sg/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/f2py/crackfortran.pyRUs.       s+\s*(?P\b[\w]+\b)\s*(?P.*)\s*\ZsC\s*(\(\s*(kind\s*=)?\s*(?P.*)\s*\)|[*]\s*(?P.*?))\s*\Zs3\s*(\((?P.*)\)|[*]\s*(?P.*))\s*\Zs\s*(kind\s*=\s*(?P.*?)\s*(@,@\s*len\s*=\s*(?P.*)|)|(len\s*=\s*|)(?P.*?)\s*(@,@\s*(kind\s*=\s*|)(?P.*)|))\s*\Zs\s*(@\(@\s*(?!/)\s*(?P.*?)\s*@\)@\s*[*]\s*(?P.*?)|([*]\s*(?P.*?)|)\s*(@\(@\s*(?!/)\s*(?P.*?)\s*@\)@|))\s*(=\s*(?P.*?)|(@\(@|)/\s*(?P.*?)\s*/(@\)@|)|)\s*\ZcC`s|j}t|dkr"|S|d}xmtdt|dD]R}||dkr||ddksF||ddkrqFn|||}qFW||d}|S(NiiRs ()[]{}=+-/* i(RwRNR(texprtexpr2Rn((sg/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/f2py/crackfortran.pyt removespacess   cC`sd}d}d}d}x|D]}|dkrS|d krS||}|}qn|dkrt|d krt|}n||kr|d}nA||kr|d}n(|dkr|dkr|d}qn||}|}qW|S( NRis's\t"iRs@_@(s\s'R(s'R((R'RR{tcctcbR((sg/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/f2py/crackfortran.pytmarkinnerspacess*          c C`sd}t||\}}}|rgt|jdD]}|j^q:}g} tjd} xh|D]`} | sqnn| j| } | r| jdj } | | t | } n| j | qnW| }ngt|jdD]}|j^q}g}x{|D]s}xjgtt t |ddjdD]}|j^qGD](}|r]|j |jddq]q]WqWx|D] }tj|} | stdt|qnt| jd }i}|ttd krttd |j}d |k}|r/||d ||d||d||<||d=q>q>WxHt|jD]4}||dk rt||||[a-zA-Z]+)R^RRs@ @s@_@s;updatevars: no name pattern found for entity=%s. Skipping. RcRR+sIupdatevars: attempt to change the type of "%s" ("%s") to "%s". Ignoring. R"sVupdatevars: attempt to change the kindselector "%s" of "%s" ("%s") to "%s". Ignoring. R#sEupdatevars:%s: attempt to change empty charselector to %r. Ignoring. sVupdatevars: attempt to change the charselector "%s" of "%s" ("%s") to "%s". Ignoring. R%sMupdatevars: attempt to change the typename of "%s" ("%s") to "%s". Ignoring. R!RRNtarraytinitt2RRs-updatevars: "%s %s" is mapped to "%s %s(%s)" s dimension(%s)i Ris5updatevars:%s: attempt to change %r to %r. Ignoring. RGR-RR*RRR$sTupdatevars: attempt to change the init expression of "%s" ("%s") to "%s". Ignoring. s?updatevars: could not crack entity declaration "%s". Ignoring. RC(RGR-RR*(R!RdRRRwRRRRRRNRRRRRXR)RRdRRRSR(R)RbtlenarraypatternRRR (R+RpR!t entitydeclRsR}R~R%RkRRRRtsteltel1RFte1tenameRrtnot_has_typespecR0Rtd1tlktdmtdm1((sg/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/f2py/crackfortran.pyRVs.  . G$    )#" )#"                 !  c C`sd}d}d}|r|dkrtj|}|sQtdt|dS|j}|d|d<|d=x.t|jD]}||s||=qqWxt|jD]\}}t |||\w+)\s*\)Rcs'cracktypespec: no typename found in %s s'cracktypespec: no selector used for %s (RGR-RR*(R!R"RR)RRR(R)titemsRdR#tlenkindpatternRRRR( R+RpR}R~R%R0RnRR((sg/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/f2py/crackfortran.pyRdsf         cC`s9|si}n|s|Sd|kr6|g|d<|S|rP|dj|n||dkrd|S|dkrd|dkr|dj|n|dkrd|dkr|dj|nq|dkrd|dkr|dj|nA|dkr$d|dkr$|dj|n|dj||S(NR!R@t automaticRR(R(R-RqR/((sg/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/f2py/crackfortran.pyR*s*   cC`s|si}n|s|Sd|kr3||d<|SxEt|jD]1}|sb||dkrF|||d|nt|}t|}|sq>n|rt d|nxYt|jD]E\}}||kr tdt |t |fn|||W|S(Ns0get_useparameters: no module %s info used by %s Rcs+get_useparameters: mapping for %s not impl.sDget_useparameters: overriding parameter %s with value from module %s( R!RR(RRRR)R2RZRbR( Rt param_mapRtusenametmappingtmvarsRxR0Rz((sg/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/f2py/crackfortran.pytget_useparameterss.        c C`shts |St|trLg|D]"}t|d|dd|^q }|St|td||dfd|dkrt|}n|dk r'd|kr'|d}xvt|jD]_}||}d|kr|d}d |kr |d } | |kr|| |d t_user_interfaceis python module(RhR(Rt postcrackRtdictRRR)t analyzeargst analyzecommont analyzevarst sortvarnamest analyzebodyR)RSRQt isexternalR(RRRtgretturetRt userisdefinedtuseblockR0RcRRtmnameRnR>RFtedefRRtbbtmblock((sg/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/f2py/crackfortran.pyRVs                       &  cC`sLg}g}xUt|jD]A}d||krS||drS|j|q|j|qWt|}d}x|rG|d}d}x0|dD]$}|||dkrd}PqqW|r|d|g}|d}||krDtddj|d||}PqDqy|j||d}t|}d}qyW|S(NtdependiisTsortvarnames: failed to compute dependencies because of cyclic dependencies between s, s (R(R)RRNRbR(RtindeptdepRzR|RnRtw((sg/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/f2py/crackfortran.pyRs8          c C`st|s|Sg}xt|djD]}g}x|d|D]}tjd|tj}|rg}|jdrgt|jdjdD]}|j ^q}nt |jdj }||dkrHd|d|kr#|d|dj dd j |qdd j |g|d|d.*?)\b\s*(\((?P.*?)\)|)\s*\Ztdimss@,@RcRR!s dimension(%s)RsNanalyzecommon: failed to extract "[()]" from "%s" in common /%s/. t commonvars(t hascommonR(R)RRRRRRRwRdRRRb( RRR0tcomvarsRFRRRkR|((sg/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/f2py/crackfortran.pyRsD 7%%   cC`snt|g}xW|dD]K}||d<|ddkr|dk r]|d|kr]qn |d}|dtkr}qntr|dtkrqnt|ddd t|d RRt pythonmoduleR?R(RRs ( RR!RRtcrack2fortrangenRRRRRR(RRRRRtas_((sg/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/f2py/crackfortran.pyRs2     cC`st|t}i}d|kr|ddkrbd}tdkrtdt|dqqxit|djD]N}|d|jddkr|d||||r.d|j dd|j d f}|j|}qWt|ii} |j|}x>|rd|j dd|j d f}|j|}qSWt|ii| } |j|}x>|rd|j dd |j d f}|j|}qWt|ii}|j|}x>|rXd|j dd |j d f}|j|}qWt|ii} | d | |kr| d | | kr| | |fSWntk rnXPqlqlWd S( Niis\w\s*\([^)]*\bs\bs(?P.*?)\bs\b(?P.*)s%s(%s)%sRRg?g?(NNN( R.RR!Rtgetlincoef_re_1RRNRtsearchRRR( RFtxsetRtlen_eRkRRRteeRRtc2((sg/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/f2py/crackfortran.pyt getlincoefAs^     " " " "( s \A[a-z]\w*\ZRc C`s] g}y!|jt|diiWn"tk rK|j|dnXy!|jt|diiWn"tk r|j|dnXt|dtr d|d}|dkrt|d}qz|dkrd|d| f}qzd|d|f}nmt|dtrbd|d}|dkrKd|d}qzd||df}nd|d|df}y#tt|iiddfSWntk rnXt|d|t|d|}}d|d|dgkrP |d|dfdkr/t|d|ddddfS|d|dd}|dd|df}|d||df}|ddkr=|d|kr=|dkrd |d|d| f|dd | |dffS|rd |d|d|f|dd ||dffSd |d|df|dd|dfSn|ddkr |d|kr |dkrd |d |d| f|dd | |d ffS|rd |d |d|f|dd ||d ffSd |d |df|dd|d fSn|d|dkr|d|kr|d|d} | s\t|ddfS|dkrd | |d| f|dd | | ffS|rd | |d|f|dd || ffSd | |df|dd| fSn|d|dko dknrt|d} | |krXt | rKt d| nd| } n|dkr{d|d| f}qM |dkrd|d| | f}qM d|d| |f}qP |ddkrt|d} | |krt | rt d| nd| } n|ddkr%n1|ddkrBd| } nd|d| f} |dkrk| }qM |dkrd| | f}qM d| |f}qP |ddkrt|d} | |krt | rt d| nd| } n|ddkrd| } nY|ddkr.d| } n<|ddkrVd|d | f} nd|d| f} |dkr| }qM |dkrd| | f}qM d| |f}qP t|d} | |krt | rt d| nd| } n|ddkrd| } nY|ddkr2d| } n<|ddkrZd|d | f} nd|d| f} t|d} | |krt | rt d| nd| } n|ddkrn1|ddkrd| } nd|d| f} |dkr d| | f}qP |dkr: d| | | f}qP d| | |f}n|ddfS(Niis%s-%ss%s+%ss-(%s)s%s-(%s)s %s-(%s)+1is %s * %s - %ss +%s)/(%s)s %s * %s + %ss -%s)/(%s)s%s * %ss)/(%s)s# getarrlen:variable "%s" undefined s(%s)s%s-%s-%ss%s-%s+%sis-%ss%s*%ss+%ss+%s*%ss-%s*%ss%s%ss%s%s-%ss%s%s+%s(ii( RRRRhR.RRR!Rt_varname_matchR)( RRtstartedltp1RRtd2RRRRtc1((sg/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/f2py/crackfortran.pyt getarrlenws! !    # '#  64.  860$ .,&$                               s\b[a-z][\w$]*\bcC`s||kr||jdg}d||krt|| rxJtj||dD].}||kr[||kr[|j|q[q[Wnxw|D]Q}xH|j|gpt|||D]"}||kr|j|qqWqWntdt|g}|||<|S(NRR$s,_get_depend_dict: no dependence info for %s (R2tisstringt word_patterntfindallRt_get_depend_dictR)R(RcRtdepstwordstwordR((sg/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/f2py/crackfortran.pyR s !  cC`s=t|j}i}x|D]}t|||qW|S(N(R(R)R(RRet depend_dictR|((sg/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/f2py/crackfortran.pyt_calc_depend_dict# s  cC`st|}g}x;t|jD]'}||s%|j|||=q%q%Wxy|rxlt|jD]X\}}g|D]}||kr|^q}|s|j|||=ql|||.*)\s*\)s-\bselected_int_kind\s*\(\s*(?P.*)\s*\)s4\bselected_(int|real)_kind\s*\(\s*(?P.*)\s*\)R$s.false.tFalses.true.Rs kind("\1")sselected_int_kind(\1)R"RRiiRRFiRRs@,@sget_parameters: got "%s" on %s s2get_parameters:parameter %s does not have value?! (s.false.R(s.true.R(#RSRR RRRRRRt islogicalRRtsubRRNRRRtisdoubleR(R\R]R^Rt iscomplexRR_RR)RRRhR.RfRY(Rt global_paramsRxtg_paramsRctfunct param_namesR|tkind_retselected_int_kind_retselected_kind_reRztreplt is_replacedt orig_v_lentv_RyRRR{tnl((sg/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/f2py/crackfortran.pyRZm sz   $    "8  E " #  cC`s|dkrdSt||S(Ns(:)s(*)R(s(:)s(*)R(t _eval_scalar(tlengthRx((sg/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/f2py/crackfortran.pyt _eval_length s s\d+_cC`st|r"|jdd}nytt|i|}WnPtttfk r[|Stk r}td||t |j fnX|S(NRis,"%s" in evaluating %r (available names: %s) ( t_is_kind_numberRRR_RaR`RbRRbR(R)(tvalueRxR{((sg/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/f2py/crackfortran.pyR( s !c7 C`st|t|\}}tj|d}|ddkr`|d|kr`i||d} | d dkr>| djdd!}n| d dkrh| djdd!}n| d dkr| djdd!}nk| d dkr| djdd!}nA| d dkr| djdd!}nt||| ||<|rd||kr$g||d|'||&|fg||d.*?)\bs\b(?P.*)RRs@:@it1s1 * is/(1)RPsoanalyzevars: character array "character*%s %s(%s)" is considered as "character %s(%s)"; "intent(c)" is forced. RRs'analyzevars: charselector=%r unhandled.Rs.*?\bs\bR$s %s%s(%s,%s)%ss %slen(%s)%ss%s%s(%s,%i)%s==%ss%slen(%s)%s>=%sRRRzRBtpuret recursiveRR%s'analyzevars: prefix (%s) were not used R?Rs python modules block dataRRRR^(NNNNN(RR.(R?Rs python modules block data(RR(4RRRSR(R)R*RtKeyErrorRZRRRRR^RRRR)RRR_RtreverseR!RwRRRRgRRNRt isintent_ct isstringarrayRbRtl_ort isintent_intisintent_inouttisintent_inplaceRR*RtisscalarR(R1R RURdtisintent_callbackt isintent_auxtextend(7RRRRtgenR|R0tsvarsRRRxt dep_matchest name_matchRzRtln0Rt savelindimsRqtdimRRR'R&RkRttmpRRRRRtdit shape_macroR(RntnitddepstadtpdRptaaR)tprtispuretisrectpr1R+RpRrR}R~R%t neededvarsRc((sg/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/f2py/crackfortran.pyR s~   (       + "$  %!    5   ;  5 ;    *    #(     & ,     . $ ! '$   '  )"    *  "      s\A[a-z]+[\w$]*\Zc C`s|}tj| }|rt|\}}t||d|}d}xC|D];} | j} | tjtjkrd} n|| }qQW|ddkr|d}n |d}|}x1||dks||dkr|d}qWn||kr=d } x$|t| |kr)| d } qW|t| }n|rT||d|     # $"cC`st|t|\}}d|kr5g|d\}}x/|D]'}||dkri|d|[\w]+)|)\Zs-\A[+-]?[\d.]+[\d+\-de.]*(_(?P[\w]+)|)\Zs \A\(.*\)\Zs\A(?P\w+)\s*\(.*?\)\s*\ZcC`swt|tridd6St|tr4idd6St|trNidd6St|tra|Stt|dS(NR-R+R*RG(RhR.R0RGRRR(Rp((sg/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/f2py/crackfortran.pyt_ensure_exprdict s   c C`sr||krt||S|j}tj|r@idd6Stj|}|rd|jkr|jdrtdt|nidd6St j|}|rd|jkr|jdrtdt|nidd6Sx{ddd d gD]g}x^gt |d |j d |d D]}|j^q0D] }||krFt||SqFWqWi}t j|rt |d d!||}ntj|}|r(|jd}t |jd||}|rd|kr|d=n|s(|d|kr%t||dSq(n|ddkrQidd6id d 6d6S|sntdt|n|S(NRGR+Rcs:determineexprtype: selected kind types not supported (%s) R-R*t+RIRRlRRiiR!is'"RR#s>determineexprtype: could not determine expressions (%s) type. (R]Rwtdetermineexprtype_re_1Rtdetermineexprtype_re_2RRR)Rtdetermineexprtype_re_3RRtdetermineexprtype_re_4R[tdetermineexprtype_re_5( RRtrulesRtopRkRFRotrn((sg/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/f2py/crackfortran.pyR[ sN   ! ! C  s cC`s t|d}t|trxr|D]j}|rw|ddkrw|dtkrXq&ntrw|dtkrwq&qwn|t||d|}q&W|Sd}d}d}|d}|dkrdSg} d|kr|d}nd|kro|d } xD|dD]8} t| || } t| | s| j| qqW|ddksV| rod d j | }qond} d |krxCt|d j D](} d | |t | |d | f} qWn|j dg}|dkrd|kr|j dn|r.d| |t d j ||f} nd}d|krZt|d|t }nd}d|krt|d|t }n|dkrd}nd}d|krd|d}|d| kr| j|dqnt|d|t }t||d | |t d|} d}d|krF| rFd|d}nd|krd}xGt|djD]/\} }d||t | d j |f}qoW||}n|dkr|dkrd}nd|||||||| || |||||f}|S(NRRRRRcRR:RRs(%s)RRs %s%s%s %sRtcallbacks%s%sintent(%s) %sRRR@Rzs result (%s)RR<s! in %sRs%s%sentry %s(%s)s block dataR=s%%s%s%s %s%s%s %s%s%s%s%s%s%send %s %s(RR(RRhR(RRRR[R;RRR)R R2RRt use2fortrantcommon2fortrant vars2fortranR(RRRRRRBRcRt blocktypetargslRRRR0t intent_lstRRRzRtmesst entry_stmtsRn((sg/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/f2py/crackfortran.pyR s          &        #$  4cC`syd}xlt|jD]X}|dkrNd||dj||f}qd|||dj||f}qW|S(NRRKs %s%scommon %sRs%s%scommon /%s/ %s(R(R)R(RRRR0((sg/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/f2py/crackfortran.pyRi s  #'cC`sid}x\t|jD]H}d|||f}||ikrk|r|ddkr|d }qqnd||kr||drd|}nd||kr>||dr>d}xt||djD]b}|||d|krd |||f}d}qd |||||d|f}d}qWn|r|ddkr|d }qqW|S( NRs %s%suse %s,iRRMs%s only:RORs%s%s%ss %s%s%s=>%s(R(R)(RRRRRR0((sg/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/f2py/crackfortran.pyRh s(  ! " cC`si|d}g}xR|D]J}ytd|}Wntk rJd}nX|r|j|qqW|S(NRsisintent_%s(var)i(R_RaR(RRRRR((sg/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/f2py/crackfortran.pyttrue_intent_list( s    cC`st|d}g}x.|D]&}||dkr|j|qqWd|krxN|dD]?}||kr||kr|j|qq^td|q^Wnd|kr|j|dn|sx9t|jD]"}||kr|j|qqWnx|D]}d||krx`||dD]M}||kr2d||kr2|||dkr2td||fq2q2Wnd|krw||dkrwt||rd |||f}nd |||f}t||rd |||f}n||kr#d ||kr#q nd } x<|dD]0} || dkr4| ddkr4d} Pq4q4W| rwq qwn||krt|t d|q n||dkr|ddk rq nd ||krFd||kr$d||dkr$||kr d |||f}q q nt||t d|q n||d } | dkrd||krd| ||df} ni} d||kr||d} n!d||kr||d} nd| kr| dd7krd| | df} qd| | df} nsd | krmd!| | d f} d"| kr`d#| | d"f} qd$| } n#d"| krd%| | d"f} nd&} d||krg||dD]}|d8kr|^q}|rd'| d(j |f} d(} qnd)||kr;d*| | d(j ||d)f} d(} nd+||krt ||}|rd,| | d(j |f} nd(} nd-||krd.| | d(j ||d-f} d(} nd||krd/| | d(j ||df} d(} nd0||kr||d0}||d d9krry&t |}d3|j |jf}Wqrtk rnqrXnd4| ||f} nd5| |f} d6||| f}q W|S(:s& TODO: public sub ... RRRs7vars2fortran: Confused?!: "%s" is not defined in vars. RCRsHvars2fortran: Warning: cross-dependence between variables "%s" and "%s" Rs%s%sintent(callback) %ss%s%sexternal %ss%s%soptional %sR+iRRcRRis/vars2fortran: No definition for argument "%s". R!Rs-vars2fortran: No typespec for argument "%s". R^R%s%s(%s)R"R#RR.s%s*(%s)s%s*%sRNs %s(len=%sRs %s,kind=%s)s%s)s %s(kind=%s)Rs%s, %sRRs%s%sdimension(%s)Rs%s%sintent(%s)R's %s%scheck(%s)s%s%sdepend(%s)R$RGsdouble complexs(%s,%s)s %s :: %s=%ss%s :: %ss%s%s%s(RR.(R(RGsdouble complex(RRRbR=R(R)R;t isoptionaltshowR)RRpR_R*timagR(RRRRRRtnoutRRRRtvardefRpRRRqRRz((sg/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/f2py/crackfortran.pyRj5 s        0    !$       !  $ !   cC`s^tddt|ttddgattd}tddt|}t|S(NsReading fortran codes... isPost-processing... sPost-processing (stage 2)... (R)RRRRRR(tfilestpostlist((sg/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/f2py/crackfortran.pyt crackfortran s     cC`s,t|d}d}dt}|||S(Ns sE! -*- f90 -*- ! Note: the context of this file is case sensitive. sb ! This file was auto-generated with f2py (version:%s). ! See http://cens.ioc.ee/projects/f2py2e/ (Rt f2py_version(Rtpyftheadertfooter((sg/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/f2py/crackfortran.pyt crack2fortran s t__main__R.s-quiets-verboseis-fixs?Use option -f90 before -fix if Fortran 90 code is in fix form. s-skipemptyendss--ignore-containss-f77s-f90R~s-hs-shows-mRIsUnknown option %s s IOError: %s s Warning: You have specified module name for non Fortran 77 code that should not need one (expect if you are scanning F90 code for non module blocks but then you should use flag -skipemptyends and also be sure that the files do not contain programs without program statement). s Writing fortran code to file %s R(t__doc__t __future__RRRR$RYRRRRSRRRtauxfuncstversionRyRR R R R R RRRRRRRRRRRR!RRRRR RRR"RRRRR#R)t _MAXCACHERRRaRhR|RdRgRiRjRoRRRRRRuRvRRxR}RrRtbeforethisaftert fortrantypesR RcRRt groupbegins77Rt groupbegins90Rt groupendsRtendifsRRRRRRRRRRRRR RRR R R RtSRRRRRRRRR R1RR7R8R\RR3R5R9RRiRURXR"R#RRRRRVRdR*R+R,RRRRRRRRRRRRRRRRRRRRR RRZR*R+R(RRTR[RR_R`RaRbRcR]R[RRRiRhRpRjRxR}t__name__RvtfuncsR{tf2tf3t showblocklisttargvRRbRRsRRtIOErrortdetailRRwRzR&(((sg/home/ec2-user/environment/lambda-staging/venv/lib64/python2.7/dist-packages/numpy/f2py/crackfortran.pytsJ            &         % $ " "%%%%% "%%%%%% "%%%%%%%%%#          %    9      ` " + "  3      Y   ] %  -K  z