lJc@sdZddkZddkZddkZdZdZdZdZdZdZ dd Z d Z d Z d Zd efdYZdZdefdYZdZdZdZdZdZedZedjo endS(sN Append module search paths for third-party packages to sys.path. **************************************************************** * This module is automatically imported during initialization. * **************************************************************** In earlier versions of Python (up to 1.5a3), scripts or modules that needed to use site-specific modules would place ``import site'' somewhere near the top of their code. Because of the automatic import, this is no longer necessary (but code that does it still works). This will append site-specific paths to the module search path. On Unix (including Mac OSX), it starts with sys.prefix and sys.exec_prefix (if different) and appends lib/python/site-packages as well as lib/site-python. On other platforms (such as Windows), it tries each of the prefixes directly, as well as with lib/site-packages appended. The resulting directories, if they exist, are appended to sys.path, and also inspected for path configuration files. A path configuration file is a file whose name has the form .pth; its contents are additional directories (one per line) to be added to sys.path. Non-existing directories (or non-directories) are never added to sys.path; no directory is added to sys.path more than once. Blank lines and lines beginning with '#' are skipped. Lines starting with 'import' are executed. For example, suppose sys.prefix and sys.exec_prefix are set to /usr/local and there is a directory /usr/local/lib/python2.5/site-packages with three subdirectories, foo, bar and spam, and two path configuration files, foo.pth and bar.pth. Assume foo.pth contains the following: # foo package configuration foo bar bletch and bar.pth contains: # bar package configuration bar Then the following directories are added to sys.path, in this order: /usr/local/lib/python2.5/site-packages/bar /usr/local/lib/python2.5/site-packages/foo Note that bletch is omitted because it doesn't exist; bar precedes foo because bar.pth comes alphabetically before foo.pth; and spam is omitted because it is not mentioned in either path configuration file. After these path manipulations, an attempt is made to import a module named sitecustomize, which can perform arbitrary additional site-specific customizations. If this import fails with an ImportError exception, it is silently ignored. iNcGs4tiitii|}|tii|fS(N(tostpathtabspathtjointnormcase(tpathstdir((s/sys/lib/python/site.pytmakepathBscCsjxctiiD]R}t|doqnytii|i|_Wqtj o qqXqWdS(s6Set all module' __file__ attribute to an absolute patht __loader__N( tsystmodulestvaluesthasattrRRRt__file__tAttributeError(tm((s/sys/lib/python/site.pyt abs__file__FscCsng}t}xNtiD]C}t|\}}||jo|i||i|qqW|ti(|S(sK Remove duplicate entries from sys.path along with making them absolute(tsetR RRtappendtadd(tLt known_pathsRtdircase((s/sys/lib/python/site.pytremoveduppathsPs     cCsbddkl}d|tif}tiitiitid|}tii|dS(sbAppend ./build/lib. in case we're running in the build dir (especially for Guido :-)i(t get_platformsbuild/lib.%s-%.3sN( tdistutils.utilRR tversionRRRtdirnameR(Rts((s/sys/lib/python/site.pyt addbuilddirds(cCstt}xdtiD]Y}y:tii|o#t|\}}|i|nWqtj o qqXqW|S(sDReturn a set containing all existing directory entries from sys.path(RR RRtisdirRRt TypeError(tdRR((s/sys/lib/python/site.pyt_init_pathinfols   c Bs6|djoed}nd}eii||}ye|d}Wnej o dSnXzx|D]}|idoqpn|ido|dUqpn|i}e ||\}}||jo4eii |o!e ii ||i |qpqpWWd|iX|o d}n|S(soAdd a new path to known_paths by combining sitedir and 'name' or execute sitedir if it starts with 'import'iitrUNt#timport(tNoneR!RRRtopentIOErrort startswithtrstripRtexistsR RRtclose( tsitedirtnameRtresettfullnametftlineRR((s/sys/lib/python/site.pyt addpackagexs4       cCs|djot}d}nd}t|\}}||jotii|nyti|}Wntij o dSnX|i x9|D]1}|i ti dot |||qqW|o d}n|S(sTAdd 'sitedir' argument to sys.path if missing and handle .pth files in 'sitedir'iiNtpth( R%R!RR RRRtlistdirterrortsorttendswithtextsepR2(R,RR.t sitedircasetnamesR-((s/sys/lib/python/site.pyt addsitedirs&       c Cstig}titijo|itinx[|D]S}|oFtidjotii|ddg}nqtidjoBtii|ddti d dtii|dd g}n|tii|ddg}tid jo^d |joMti i d }|o0|itii|d dti d dqPqTnx6|D]*}tii |ot ||q[q[Wq:q:WdS(s8Add site-packages (and possibly site-python) to sys.pathtos2emxtriscostLibs site-packagest/tlibtpythonis site-pythontdarwinsPython.frameworktHOMEtLibrarytPython(R<R=N(R tprefixt exec_prefixRtplatformRRRtsepRtenvirontgetRR;R%(RtprefixesRFtsitedirsthomeR,((s/sys/lib/python/site.pytaddsitepackagess<     cCsqtiitidd}tidid}|do|i|n ||ds lib-dynloadt BEGINLIBPATHt;iN(RRRR RFRJtsplitR(tdllpathtlibpath((s/sys/lib/python/site.pytsetBEGINLIBPATHs   csxtidjo dn!tidjo dnddtffdY}|dt_|d t_d S( snDefine new built-ins 'quit' and 'exit'. These are simply strings that display a hint on how to exit. t:sCmd-Qs\sCtrl-Z plus ReturnsCtrl-D (i.e. EOF)tQuittercs,eZdZfdZddZRS(cSs ||_dS(N(R-(tselfR-((s/sys/lib/python/site.pyt__init__scsd|ifS(NsUse %s() or %s to exit(R-(RX(teof(s/sys/lib/python/site.pyt__repr__scSs+ytiiWnnXt|dS(N(R tstdinR+t SystemExit(RXtcode((s/sys/lib/python/site.pyt__call__s N(t__name__t __module__RYR[R%R_((RZ(s/sys/lib/python/site.pyRWs tquittexitN(RRItobjectt __builtin__RbRc(RW((RZs/sys/lib/python/site.pytsetquits   t_PrintercBs>eZdZdZdddZdZdZdZRS(sninteractive prompt objects for printing the license text, a list of contributors and the copyright notice.icCs1||_||_||_||_d|_dS(N(t_Printer__namet_Printer__datat_Printer__filest_Printer__dirsR%t_Printer__lines(RXR-tdatatfilestdirs((s/sys/lib/python/site.pyRYs     cCs|iodSnd}x|iD]{}xf|iD][}tii||}y*t|d}|i}|i PWq2t j oq2Xq2W|oPq"q"W|p |i }n|i d|_t |i|_dS(NR"s (RlR%RkRjRRRtfiletreadR+R'RiRRtlent_Printer__linecnt(RXRmRtfilenametfp((s/sys/lib/python/site.pyt__setup s*        cCsM|it|i|ijodi|iSnd|ifdSdS(Ns s!Type %s() to see the full %s texti(t_Printer__setupRrRltMAXLINESRRh(RX((s/sys/lib/python/site.pyR["s cCs|id}d}xy1x*t|||iD]}|i|GHq3WWntj oPqX||i7}d}x5|djo't|}|djo d}qwqwW|djoPqqdS(Ns0Hit Return for more, or q (and Return) to quit: ittq(RyRz(RwtrangeRxRlt IndexErrorR%t raw_input(RXtprompttlinenotitkey((s/sys/lib/python/site.pyR_)s$     (((R`Rat__doc__RxRYRwR[R_(((s/sys/lib/python/site.pyRgs   cCstdtit_tid djotddt_ntddt_tiiti }tddti d d gtii |ti |ti gt_d S( s,Set 'copyright' and 'credits' in __builtin__t copyrightitjavatcreditss?Jython is maintained by the Jython developers (www.jython.org).s Thanks to CWI, CNRI, BeOpen.com, Zope Corporation and a cast of thousands for supporting Python development. See www.python.org for more information.tlicenses+See http://www.python.org/%.3s/license.htmls LICENSE.txttLICENSEN(RgR RReRHRRRRR RRtpardirtcurdirR(there((s/sys/lib/python/site.pyt setcopyright=s   t_HelpercBs eZdZdZdZRS(sYDefine the built-in 'help'. This is a wrapper around pydoc.help (with a twist). cCsdS(NsHType help() for interactive help, or help(object) for help about object.((RX((s/sys/lib/python/site.pyR[UscOsddk}|i||S(Ni(tpydocthelp(RXtargstkwdsR((s/sys/lib/python/site.pyR_Xs (R`RaRR[R_(((s/sys/lib/python/site.pyROs cCstt_dS(N(RReR(((s/sys/lib/python/site.pyt sethelper\scCstidjoddk}ddk}|id}|idoWy|i|Wqtj o3ddk}|i |i |;s2         $  =