def getChangeSet(self, authToken, clientVersion, chgSetList, recurse,
                     withFiles, withFileContents, excludeAutoSource):
        csList = []
        def _cvtTroveList(l):
            new = []
            for (name, (oldV, oldF), (newV, newF), absolute) in l:
                if oldV:
                    oldV = self.fromVersion(oldV)
                    oldF = self.fromFlavor(oldF)
                else:
                    oldV = 0
                    oldF = 0

                if newV:
                    newV = self.fromVersion(newV)
                    newF = self.fromFlavor(newF)
                else:
                    # this happens when a distributed group has a trove
                    # on a remote repository disappear
                    newV = 0
                    newF = 0

                new.append((name, (oldV, oldF), (newV, newF), absolute))

            return new

        for (name, (old, oldFlavor), (new, newFlavor), absolute) in chgSetList:
            if old == 0:
                l = (name, (None, None),
                           (self.toVersion(new), self.toFlavor(newFlavor)),
                           absolute)
            else:
                l = (name, (self.toVersion(old), self.toFlavor(oldFlavor)),
                           (self.toVersion(new), self.toFlavor(newFlavor)),
                           absolute)
            csList.append(l)

        ret = self.repos.createChangeSet(csList,
                                recurse = recurse,
                                withFiles = withFiles,
                                withFileContents = withFileContents,
                                excludeAutoSource = excludeAutoSource)

        (cs, trovesNeeded, filesNeeded, removedTroveList) = ret
        assert(not filesNeeded)
        assert(not removedTroveList)

        # FIXME: we need a way to remove these temporary
        # files when we're done with them.
        fd, tmpFile = tempfile.mkstemp(suffix = '.ccs')
        os.close(fd)
        cs.writeToFile(tmpFile)
        size = os.stat(tmpFile).st_size
        return (tmpFile, [size], _cvtTroveList(trovesNeeded), [], [])
dataset/ETHPy150Open sassoftware/conary/conary/repository/shimclient.py/NetworkRepositoryServer.getChangeSet/original