Example #1
0
 def test_subListReplace(self):
     origList = ['bad', 'mother', 'Fer']
     orig = {1: {'a': origList}, 'foo': 'bar'}
     new = {1: {'a': {0: 'samuel', 1: 'jackson'}}, 'foo': 'bar'}
     both, only1, only2, diff = arguments.compareCascadingDicts(orig, new)
     self.assertEqual(both, set([1, 'foo']))
     self.assertEqual(only1, set())
     self.assertEqual(only2, set())
     self.assertEqual(diff, {
         1: {
             'a': {
                 0: 'samuel',
                 1: 'jackson',
                 2: arguments.RemovedKey('Fer')
             }
         }
     })
     arguments.mergeCascadingDicts(diff, orig)
     self.assertEqual(
         orig, {
             1: {
                 'a': {
                     0: 'samuel',
                     1: 'jackson',
                     2: arguments.RemovedKey('Fer')
                 }
             },
             'foo': 'bar'
         })
     self.assertTrue(origList is not orig[1]['a'])
 def test_subUpdate(self):
     orig = {1:{'meat':'deinonychus'}}
     new = {1:{'meat':'trex'}}
     both, only1, only2, diff = arguments.compareCascadingDicts(orig, new)
     self.assertEqual(both, set([1]))
     self.assertEqual(only1, set())
     self.assertEqual(only2, set())
     self.assertEqual(diff, {1:{'meat':'trex'}})
     arguments.mergeCascadingDicts( diff, orig )
     self.assertEqual(orig, new)
 def test_subRemove(self):
     orig = {1:{'plants':'stegosaurus'}}
     new = {1:{}}
     both, only1, only2, diff = arguments.compareCascadingDicts(orig, new)
     self.assertEqual(both, set([1]))
     self.assertEqual(only1, set())
     self.assertEqual(only2, set())
     self.assertEqual(diff, {1:{'plants':arguments.RemovedKey('stegosaurus')}})
     arguments.mergeCascadingDicts( diff, orig )
     self.assertEqual(orig, new)
 def test_simpleRemove(self):
     orig = {1:'a'}
     new = {}
     both, only1, only2, diff = arguments.compareCascadingDicts(orig, new)
     self.assertEqual(both, set())
     self.assertEqual(only1, set([1]))
     self.assertEqual(only2, set())
     self.assertEqual(diff, {1:arguments.RemovedKey('a')})
     arguments.mergeCascadingDicts( diff, orig )
     self.assertEqual(orig, new)
Example #5
0
 def test_subAdd(self):
     orig = {1: {'meat': 'deinonychus'}}
     new = {1: {'plants': 'stegosaurus', 'meat': 'deinonychus'}}
     both, only1, only2, diff = arguments.compareCascadingDicts(orig, new)
     self.assertEqual(both, set([1]))
     self.assertEqual(only1, set())
     self.assertEqual(only2, set())
     self.assertEqual(diff, {1: {'plants': 'stegosaurus'}})
     arguments.mergeCascadingDicts(diff, orig)
     self.assertEqual(orig, new)
Example #6
0
 def test_subUpdate(self):
     orig = {1: {'meat': 'deinonychus'}}
     new = {1: {'meat': 'trex'}}
     both, only1, only2, diff = arguments.compareCascadingDicts(orig, new)
     self.assertEqual(both, set([1]))
     self.assertEqual(only1, set())
     self.assertEqual(only2, set())
     self.assertEqual(diff, {1: {'meat': 'trex'}})
     arguments.mergeCascadingDicts(diff, orig)
     self.assertEqual(orig, new)
Example #7
0
 def test_simpleUpdate(self):
     orig = {1: 'a'}
     new = {1: 'b'}
     both, only1, only2, diff = arguments.compareCascadingDicts(orig, new)
     self.assertEqual(both, set([1]))
     self.assertEqual(only1, set())
     self.assertEqual(only2, set())
     self.assertEqual(diff, {1: 'b'})
     arguments.mergeCascadingDicts(diff, orig)
     self.assertEqual(orig, new)
 def test_simpleAdd(self):
     orig = {1:'a'}
     new = {1:'a',2:'b'}
     both, only1, only2, diff = arguments.compareCascadingDicts(orig, new)
     self.assertEqual(both, set([1]))
     self.assertEqual(only1, set())
     self.assertEqual(only2, set([2]))
     self.assertEqual(diff, {2:'b'})
     arguments.mergeCascadingDicts( diff, orig )
     self.assertEqual(orig, new)
 def test_subAdd(self):
     orig = {1:{'meat':'deinonychus'}}
     new = {1:{'plants':'stegosaurus', 'meat':'deinonychus'}}
     both, only1, only2, diff = arguments.compareCascadingDicts(orig, new)
     self.assertEqual(both, set([1]))
     self.assertEqual(only1, set())
     self.assertEqual(only2, set())
     self.assertEqual(diff, {1:{'plants':'stegosaurus'}})
     arguments.mergeCascadingDicts( diff, orig )
     self.assertEqual(orig, new)
 def test_subListReplace(self):
     origList = ['bad', 'mother', 'Fer']
     orig = {1:{'a':origList}, 'foo':'bar'}
     new = {1:{'a':{0:'samuel', 1:'jackson'}}, 'foo':'bar'}
     both, only1, only2, diff = arguments.compareCascadingDicts(orig, new)
     self.assertEqual(both, set([1, 'foo']))
     self.assertEqual(only1, set())
     self.assertEqual(only2, set())
     self.assertEqual(diff, {1:{'a':{0:'samuel', 1:'jackson', 2:arguments.RemovedKey('Fer')}}})
     arguments.mergeCascadingDicts( diff, orig )
     self.assertEqual(orig, {1:{'a':{0:'samuel', 1:'jackson', 2:arguments.RemovedKey('Fer')}}, 'foo':'bar'})
     self.assertTrue(origList is not orig[1]['a'])
Example #11
0
 def test_simpleListRemove(self):
     origList = ['bad', 'mother', 'Fer']
     orig = {1: origList}
     new = {1: ['bad', 'mother']}
     both, only1, only2, diff = arguments.compareCascadingDicts(orig, new)
     self.assertEqual(both, set([1]))
     self.assertEqual(only1, set())
     self.assertEqual(only2, set())
     self.assertEqual(diff, {1: {2: arguments.RemovedKey('Fer')}})
     arguments.mergeCascadingDicts(diff, orig, allowDictToListMerging=True)
     self.assertEqual(orig, new)
     self.assertTrue(origList is orig[1])
Example #12
0
 def test_subListListUpdate(self):
     origList = ['bad', 'mother', 'Fer']
     orig = {1: [origList, 'extra']}
     new = {1: [['samuel', 'jackson', 'Fer'], 'extra']}
     both, only1, only2, diff = arguments.compareCascadingDicts(orig, new)
     self.assertEqual(both, set([1]))
     self.assertEqual(only1, set())
     self.assertEqual(only2, set())
     self.assertEqual(diff, {1: {0: {0: 'samuel', 1: 'jackson'}}})
     arguments.mergeCascadingDicts(diff, orig, allowDictToListMerging=True)
     self.assertEqual(orig, new)
     self.assertTrue(origList is orig[1][0])
 def test_simpleListRemove(self):
     origList = ['bad', 'mother', 'Fer']
     orig = {1:origList}
     new = {1:['bad', 'mother']}
     both, only1, only2, diff = arguments.compareCascadingDicts(orig, new)
     self.assertEqual(both, set([1]))
     self.assertEqual(only1, set())
     self.assertEqual(only2, set())
     self.assertEqual(diff, {1:{2:arguments.RemovedKey('Fer')}})
     arguments.mergeCascadingDicts( diff, orig,
                                    allowDictToListMerging=True )
     self.assertEqual(orig, new)
     self.assertTrue(origList is orig[1])
 def test_subListListUpdate(self):
     origList = ['bad', 'mother', 'Fer']
     orig = {1:[origList, 'extra']}
     new = {1:[['samuel', 'jackson', 'Fer'], 'extra']}
     both, only1, only2, diff = arguments.compareCascadingDicts(orig, new)
     self.assertEqual(both, set([1]))
     self.assertEqual(only1, set())
     self.assertEqual(only2, set())
     self.assertEqual(diff, {1:{0:{0:'samuel', 1:'jackson'}}})
     arguments.mergeCascadingDicts( diff, orig,
                                    allowDictToListMerging=True )
     self.assertEqual(orig, new)
     self.assertTrue(origList is orig[1][0])
Example #15
0
 def test_subRemove(self):
     orig = {1: {'plants': 'stegosaurus'}}
     new = {1: {}}
     both, only1, only2, diff = arguments.compareCascadingDicts(orig, new)
     self.assertEqual(both, set([1]))
     self.assertEqual(only1, set())
     self.assertEqual(only2, set())
     self.assertEqual(diff,
                      {1: {
                          'plants': arguments.RemovedKey('stegosaurus')
                      }})
     arguments.mergeCascadingDicts(diff, orig)
     self.assertEqual(orig, new)
Example #16
0
    newExt = '.py'
    newZipExt = newExt + '.zip'
    cacheInst.write(data, ext=newExt)

    cacheInst2 = getCache()
    newData = cacheInst2.read(ext=newExt)

    cacheInst.write(data, ext=newZipExt)
    cacheInst3 = getCache()
    newZipData = cacheInst3.read(ext=newZipExt)
    assert newZipData == newData

    from pymel.util.arguments import compareCascadingDicts
    from pprint import pprint, pformat

    diffs = compareCascadingDicts(data, newData)[-1]

    if not diffs:
        print "Yay!!! no diffs!"
    else:
        print "Boo... still diffs..."

        diffPath = cacheInst.path(ext='.diff')
        with open(diffPath, 'w') as f:
            f.write(pformat(diffs))
        print "wrote diffs to: {}".format(diffPath)
        break


Example #17
0
    cacheInst = getCache()
    data = cacheInst.read(ext='.zip')

    newExt = '.py'
    newZipExt = newExt + '.zip'
    cacheInst.write(data, ext=newExt)

    cacheInst2 = getCache()
    newData = cacheInst2.read(ext=newExt)

    cacheInst.write(data, ext=newZipExt)
    cacheInst3 = getCache()
    newZipData = cacheInst3.read(ext=newZipExt)
    assert newZipData == newData

    from pymel.util.arguments import compareCascadingDicts
    from pprint import pprint, pformat

    diffs = compareCascadingDicts(data, newData)[-1]

    if not diffs:
        print("Yay!!! no diffs!")
    else:
        print("Boo... still diffs...")

        diffPath = cacheInst.path(ext='.diff')
        with open(diffPath, 'w') as f:
            f.write(pformat(diffs))
        print("wrote diffs to: {}".format(diffPath))
        break
Example #18
0
for key, cachefile in cachefiles.items():
    cachepath = os.path.join(cachedir, cachefile)
    cache_globals = {}
    cacheInst = apicache.ApiCache()
    data = cacheInst.read(path=cachepath)
    if DO_PREPROCESS:
        data = preprocess(data)
        cachepath_namebase, cachepath_ext = os.path.splitext(cachepath)
        preprocessed_path = cachepath_namebase + '.preprocessed' + cachepath_ext
        cacheInst.write(data, path=preprocessed_path)
    caches[key] = data

# we only care about the diffs of the classInfo
both, onlyOld, onlyNew, diffs = arguments.compareCascadingDicts(
    caches['old'][-1],
    caches['new'][-1],
    useAddedKeys=True,
    useChangedKeys=True)

################################################################################
# iteration utils


class AnyKey(object):
    '''Sentinel value to indicate all keys should be iterated over'''
    def __init__(self, comment):
        '''Init does nothing, just allows you to add a comment visible in the
        code'''
        pass