;ò
ÎÑAHc           @   sq  d  Z  d k Z e i i ƒ  Z d k Z d k Z d k Z d k	 l
 Z
 d k l Z d k l Z d „  Z d „  Z e i d e ƒ d „  Z e i d	 e ƒ d
 „  Z e i d e ƒ d „  Z e i d e ƒ d „  Z e i d e ƒ d „  Z e i d e ƒ d „  Z e i d e ƒ d „  Z d „  Z d e f d „  ƒ  YZ d „  Z e i i i e ƒ e ƒ Z d „  Z d S(   ss   File system operations

Contains: Simple variants of normal unix shell commands (icp, imv, irm,
imkdir, igrep).

Some "otherwise handy" utils ('collect' for gathering files to
~/_ipython/collect, 'inote' for collecting single note lines to
~/_ipython/note.txt)

Mostly of use for bare windows installations where cygwin/equivalent is not
installed and you would otherwise need to deal with dos versions of the
commands (that e.g. don't understand / as path separator). These can
do some useful tricks on their own, though (like use 'mglob' patterns).

Not to be confused with ipipe commands (ils etc.) that also start with i.
N(   s   mglob(   s   path(   s
   UsageErrorc         C   s­   |  i t d ƒ } t | ƒ d j o t d | d ƒ ‚ n t i | d ƒ } t i	 | d d !ƒ | d f \ } } | o! t d t | d d !ƒ ƒ ‚ n | | f Sd S(   sB    Given arg string 'CMD files... target', return ([files], target) i   s   Expected arguments for i    iÿÿÿÿs   No files found:N(   s   argss   splits   Nones   tups   lens
   UsageErrors   shlexs   tup2s   mglobs   expands   flists   trgs   str(   s   argss   tups   trgs   flists   tup2(    (    sM   /u/d/b/dbachman/=/lib/python2.3/site-packages/IPython/Extensions/ipy_fsops.pys
   parse_args   s     &!c         C   s¬   d k  } t | ƒ \ } } t i i | ƒ o t	 | ƒ d j o | i
 i | d d ƒn xE | D]= } t i i | ƒ o t i | | ƒ qc t i | | ƒ qc W| Sd S(   s¥    icp files... targetdir
    
    Copy all files to target, creating dirs for target if necessary
    
    icp srcdir dstdir
    
    Copy srcdir to distdir
    
    Ni   s   verbose(   s   distutils.dir_utils	   distutilss
   parse_argss   args   fss	   targetdirs   oss   paths   isdirs   lens   dir_utils   mkpaths   fs   shutils   copytrees   copy2(   s   ips   args   fss	   distutilss   fs	   targetdir(    (    sM   /u/d/b/dbachman/=/lib/python2.3/site-packages/IPython/Extensions/ipy_fsops.pys   icp(   s    	 	' s   icpc         C   sl   t  | ƒ \ } } t | ƒ d j o t i i | ƒ p t ‚ n x | D] } t
 i | | ƒ qJ W| Sd S(   s1    imv src tgt
    
    Move source to target.
    i   N(   s
   parse_argss   args   fss   targets   lens   oss   paths   isdirs   AssertionErrors   fs   shutils   move(   s   ips   args   fss   targets   f(    (    sM   /u/d/b/dbachman/=/lib/python2.3/site-packages/IPython/Extensions/ipy_fsops.pys   imv?   s      s   imvc         C   s¦   y# t  i | i t d ƒ d ƒ } Wn t j
 o t d ƒ ‚ n Xd k } xQ | D]I } d G| GHt i i | ƒ o | i i | d d ƒqU t i | ƒ qU Wd S(   sZ    irm path[s]...
    
    Remove file[s] or dir[s] path. Dirs are deleted recursively.
    i   s   %irm paths...Ns   rms   verbose(   s   mglobs   expands   args   splits   Nones   pathss
   IndexErrors
   UsageErrors   distutils.dir_utils	   distutilss   ps   oss   paths   isdirs   dir_utils   remove_trees   remove(   s   ips   args   pathss	   distutilss   p(    (    sM   /u/d/b/dbachman/=/lib/python2.3/site-packages/IPython/Extensions/ipy_fsops.pys   irmM   s     #	 	s   irmc         C   s9   d k  } | i t d ƒ d } | i i | d d ƒd S(   sE    imkdir path
    
    Creates dir path, and all dirs on the road
    Ni   s   verbose(   s   distutils.dir_utils	   distutilss   args   splits   Nones	   targetdirs   dir_utils   mkpath(   s   ips   args	   targetdirs	   distutils(    (    sM   /u/d/b/dbachman/=/lib/python2.3/site-packages/IPython/Extensions/ipy_fsops.pys   imkdir`   s     	s   imkdirc   
      C   sÌ   t  i | ƒ } | d | d t i | d ƒ f \ } } } g  } x | D]w } t }	 xh t | ƒ D]Z } | i ƒ  | i ƒ  j o; |	 o$ d G| Gd GHt }	 | i | ƒ n | i ƒ  GHqb qb WqI W| Sd S(   s    igrep PAT files...
    
    Very dumb file scan, case-insensitive.
    
    e.g.
    
    igrep "test this" rec:*.py
    
    i    i   i   s   [[s   ]]N(   s   shlexs   splits   args   elemss   mglobs   expands   dummys   pats   fss   ress   fs   Falses   founds   opens   ls   lowers   Trues   appends   rstrip(
   s   ips   args   dummys   fss   pats   fs   elemss   ress   ls   found(    (    sM   /u/d/b/dbachman/=/lib/python2.3/site-packages/IPython/Extensions/ipy_fsops.pys   igrepk   s     	 -  s   igrepc         C   s  d k  l } | |  i i d ƒ } y# t i | i	 t
 d ƒ d ƒ } Wn$ t j
 o t i | ƒ d Sn Xx£ | D]› } | | ƒ } | | i ƒ  d i d ƒ } | i ƒ  o d G| GH| i ƒ  qt n | i ƒ  } | i ƒ  o | i ƒ  n | Gd G| GHt i | | ƒ qt Wd S(   sÍ    collect foo/a.txt rec:bar=*.py
    
    Copies foo/a.txt to ~/_ipython/collect/foo/a.txt and *.py from bar,
    likewise
    
    Without args, try to open ~/_ipython/collect dir (in win32 at least).
    (   s   paths   /collecti   Ns   /\s   mkdirs   =>(   s   IPython.external.paths   paths   ips   optionss
   ipythondirs   basedirs   mglobs   expands   args   splits   Nones   fss
   IndexErrors   oss	   startfiles   fs
   splitdrives   lstrips   trgs   isdirs   makedirss   dirnames   dnames   shutils   copy2(   s   ips   args   fss   fs   dnames   basedirs   trgs   path(    (    sM   /u/d/b/dbachman/=/lib/python2.3/site-packages/IPython/Extensions/ipy_fsops.pys   collect…   s*     #	 	
s   collectc         C   sŽ   d k  } |  i i d } yH d | i ƒ  d | i t d ƒ d d } t
 | d ƒ i | ƒ } Wn& t j
 o |  i i i | ƒ n Xd S(   s‹    inote Hello world
    
    Adds timestamp and Hello world to ~/_ipython/notes.txt
    
    Without args, opens notes.txt for editing.
    Ns
   /notes.txts    === s   : ===
i   s   
s   a(   s   times   ips   optionss
   ipythondirs   fnames   asctimes   args   splits   Nones   entrys   opens   writes   fs
   IndexErrors   IPs   hookss   editor(   s   ips   args   fs   fnames   times   entry(    (    sM   /u/d/b/dbachman/=/lib/python2.3/site-packages/IPython/Extensions/ipy_fsops.pys   inote£   s     	,s   inotec         C   s    |  i d d ƒ i d d ƒ Sd  S(   Ns    s   __s   .s   DOT(   s   ps   replace(   s   p(    (    sM   /u/d/b/dbachman/=/lib/python2.3/site-packages/IPython/Extensions/ipy_fsops.pys   pathobj_mangleµ   s    c         C   s    |  i d d ƒ i d d ƒ Sd  S(   Ns   __s    s   DOTs   .(   s   ss   replace(   s   s(    (    sM   /u/d/b/dbachman/=/lib/python2.3/site-packages/IPython/Extensions/ipy_fsops.pys   pathobj_unmangle·   s    s   PathObjc           B   s>   t  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   Nc         C   s`   | |  _ | d j o= g  i } t i | ƒ D] } | t | ƒ ƒ q- ~ |  _	 n
 t
 |  _	 d  S(   Ns   .(   s   ps   selfs   paths   appends   _[1]s   oss   listdirs   ents   pathobj_mangles   entss   None(   s   selfs   ps   _[1]s   ent(    (    sM   /u/d/b/dbachman/=/lib/python2.3/site-packages/IPython/Extensions/ipy_fsops.pys   __init__½   s    	=c         C   s_   |  i d j o |  i Sn g  i } t i d ƒ D] } | t | ƒ ƒ q2 ~ |  _ |  i Sd  S(   Ns   .(	   s   selfs   paths   entss   appends   _[1]s   oss   listdirs   ents   pathobj_mangle(   s   selfs   _[1]s   ent(    (    sM   /u/d/b/dbachman/=/lib/python2.3/site-packages/IPython/Extensions/ipy_fsops.pys   __complete__Ã   s    9c         C   s   | |  i j o€ |  i i d ƒ o
 d } n d } |  i | t | ƒ } t i i	 | ƒ o t
 | ƒ Sn t i i | ƒ o t | ƒ Sq n t | ‚ d  S(   Ns   /s    (   s   names   selfs   entss   paths   endswiths   seps   pathobj_unmangles   tgts   oss   isdirs   PathObjs   isfiles   AttributeError(   s   selfs   names   tgts   sep(    (    sM   /u/d/b/dbachman/=/lib/python2.3/site-packages/IPython/Extensions/ipy_fsops.pys   __getattr__È   s    
c         C   s   |  i Sd  S(   N(   s   selfs   path(   s   self(    (    sM   /u/d/b/dbachman/=/lib/python2.3/site-packages/IPython/Extensions/ipy_fsops.pys   __str__×   s    c         C   s   d |  i Sd  S(   Ns   <PathObj to %s>(   s   selfs   path(   s   self(    (    sM   /u/d/b/dbachman/=/lib/python2.3/site-packages/IPython/Extensions/ipy_fsops.pys   __repr__Ú   s    c         C   s    d G|  i GHt i |  i ƒ d  S(   Ns   cd:(   s   selfs   paths   oss   chdir(   s   self(    (    sM   /u/d/b/dbachman/=/lib/python2.3/site-packages/IPython/Extensions/ipy_fsops.pys   __call__Ý   s    (   s   __name__s
   __module__s   __init__s   __complete__s   __getattr__s   __str__s   __repr__s   __call__(    (    (    sM   /u/d/b/dbachman/=/lib/python2.3/site-packages/IPython/Extensions/ipy_fsops.pys   PathObj¼   s   					c         C   s?   t  |  d ƒ o |  i ƒ  } | o | Sq/ n t i i ‚ d  S(   Ns   __complete__(   s   hasattrs   objs   __complete__s   ress   IPythons   ipapis   TryNext(   s   objs   prev_completionss   res(    (    sM   /u/d/b/dbachman/=/lib/python2.3/site-packages/IPython/Extensions/ipy_fsops.pys   complete_pathobjá   s
    c          C   s5   t  d ƒ } t  d ƒ }  t  d ƒ } t i d ƒ d  S(   Ns   /s7   d:/Documents and Settings/All Users/Start Menu/Programss   .s   rootdir startmenu cwd(   s   PathObjs   rootdirs	   startmenus   cwds   ips
   to_user_ns(   s	   startmenus   rootdirs   cwd(    (    sM   /u/d/b/dbachman/=/lib/python2.3/site-packages/IPython/Extensions/ipy_fsops.pys   test_pathobjë   s    (   s   __doc__s   IPython.ipapis   IPythons   ipapis   gets   ips   shutils   oss   shlexs   IPython.externals   mglobs   IPython.external.paths   paths
   UsageErrors
   parse_argss   icps   defaliass   imvs   irms   imkdirs   igreps   collects   inotes   pathobj_mangles   pathobj_unmangles   PathObjs   complete_pathobjs   genericss   complete_objects	   when_types   test_pathobj(   s   test_pathobjs   icps
   parse_argss   mglobs
   UsageErrors   imkdirs   ips   inotes   PathObjs   complete_pathobjs   igreps   collects   pathobj_mangles   shlexs   imvs   IPythons   paths   pathobj_unmangles   shutils   oss   irm(    (    sM   /u/d/b/dbachman/=/lib/python2.3/site-packages/IPython/Extensions/ipy_fsops.pys   ?   s6   												%	