Repository: ipython/ipython

Issue:
What is IPython.utils.upgradedir ?
Can we delete `IPython.utils.upgradedir`?  It doesn't appear to be used by anything except one import test:

``` py
def test_import_upgradedir():
    from IPython.utils import upgradedir
```

```
$ egrep -rl upgradedir *
IPython/utils/tests/test_imports.py
```



Discussion:
I am fine with removing it.

On Thu, Jan 10, 2013 at 12:00 AM, Bradley M. Froehle <
notifications@github.com> wrote:

> Can we delete IPython.utils.upgradedir? It doesn't appear to be used by
> anything except one import test:
> 
> def test_import_upgradedir():
>     from IPython.utils import upgradedir
> 
> $ egrep -rl upgradedir *
> IPython/utils/tests/test_imports.py
> 
>  —
> Reply to this email directly or view it on GitHubhttps://github.com/ipython/ipython/issues/2767.

## 

Brian E. Granger
Cal Poly State University, San Luis Obispo
bgranger@calpoly.edu and ellisonbg@gmail.com


Resolving patch:
diff --git a/IPython/utils/upgradedir.py b/IPython/utils/upgradedir.py
deleted file mode 100755
--- a/IPython/utils/upgradedir.py
+++ /dev/null
@@ -1,92 +0,0 @@
-#!/usr/bin/env python
-""" A script/util to upgrade all files in a directory
-
-This is rather conservative in its approach, only copying/overwriting
-new and unedited files.
-
-To be used by "upgrade" feature.
-"""
-try:
-    from IPython.external.path import path
-except ImportError:
-    from path import path
-
-import hashlib, pickle
-
-def showdiff(old,new):
-    import difflib
-    d = difflib.Differ()
-    lines = d.compare(old.lines(),new.lines())
-    realdiff = False
-    for l in lines:
-        print l,
-        if not realdiff and not l[0].isspace():
-            realdiff = True
-    return realdiff
-
-def upgrade_dir(srcdir, tgtdir):
-    """ Copy over all files in srcdir to tgtdir w/ native line endings
-
-    Creates .upgrade_report in tgtdir that stores md5sums of all files
-    to notice changed files b/w upgrades.
-    """
-
-    def pr(s):
-        print s
-    junk = ['.svn','ipythonrc*','*.pyc', '*.pyo', '*~', '.hg']
-    
-    def ignorable(p):
-        for pat in junk:
-            if p.startswith(pat) or p.fnmatch(pat):
-                return True
-        return False
-
-    modded = []
-    files = [path(srcdir).relpathto(p) for p in path(srcdir).walkfiles()]
-    #print files
-    rep = tgtdir / '.upgrade_report'
-    try:
-        rpt = pickle.load(rep.open())
-    except:
-        rpt = {}
-
-    for f in files:
-        if ignorable(f):
-            continue
-        src = srcdir / f
-        tgt = tgtdir / f
-        if not tgt.isfile():
-            pr("Creating %s" % str(tgt))
-
-            tgt.write_text(src.text())
-            rpt[str(tgt)] = hashlib.md5(tgt.text()).hexdigest()
-        else:
-            cont = tgt.text()
-            sum = rpt.get(str(tgt), None)
-            #print sum
-            if sum and hashlib.md5(cont).hexdigest() == sum:
-                pr("%s: Unedited, installing new version" % tgt)
-                tgt.write_text(src.text())
-                rpt[str(tgt)] = hashlib.md5(tgt.text()).hexdigest()
-            else:
-                pr(' == Modified, skipping %s, diffs below == ' % tgt)
-                #rpt[str(tgt)] = hashlib.md5(tgt.bytes()).hexdigest()
-                real = showdiff(tgt,src)
-                pr('') # empty line
-                if not real:
-                    pr("(Ok, it was identical, only upgrading checksum)")
-                    rpt[str(tgt)] = hashlib.md5(tgt.text()).hexdigest()
-                else:
-                    modded.append(tgt)
-
-        #print rpt
-    pickle.dump(rpt, rep.open('w'))
-    if modded:
-        print "\n\nDelete the following files manually (and rerun %upgrade)\nif you need a full upgrade:"
-        for m in modded:
-            print m
-
-
-import sys
-if __name__ == "__main__":
-    upgrade_dir(path(sys.argv[1]), path(sys.argv[2]))


Test patch:
diff --git a/IPython/utils/tests/test_imports.py b/IPython/utils/tests/test_imports.py
--- a/IPython/utils/tests/test_imports.py
+++ b/IPython/utils/tests/test_imports.py
@@ -18,9 +18,6 @@ def test_import_rlineimpl():
 def test_import_strdispatch():
     from IPython.utils import strdispatch
 
-def test_import_upgradedir():
-    from IPython.utils import upgradedir
-
 def test_import_wildcard():
     from IPython.utils import wildcard