def fetch_version(self, version, callback=None):
        if self.sudo_proxy is not None:
            for status in self.sudo_proxy.fetch_version_iter(version):
                if callback is not None:
                    callback(status)
            return self.version_finder.has_version(self, version)
        if self.version_finder is None:
            raise NoVersionFinderError
        #  Guard against malicious input (might be called with root privs)
        vsdir = self._get_versions_dir()
        target = join_app_version(self.name, version, self.platform)
        target = os.path.join(vsdir, target)
        assert os.path.dirname(target) == vsdir
        #  Get the new version using the VersionFinder
        loc = self.version_finder.has_version(self, version)
        if not loc:
            loc = self.version_finder.fetch_version(self, version, callback)
        #  Adjust permissions to match the current version
        vdir = join_app_version(self.name, self.version, self.platform)
        copy_ownership_info(os.path.join(vsdir, vdir), loc)
        return loc
Returns correct partition function depending on the MySQL column type.
dataset/ETHPy150Open cloudmatrix/esky/esky/__init__.py/Esky.fetch_version--crossover with--dataset/ETHPy150Open maxtepkeev/architect/architect/databases/mysql/partition.py/RangePartition._get_function