def METHOD_NAME(self, raw):
    # type: (str) -> Optional[str]
    # VoltDB does not include .0 patch numbers (eg 10.0, not 10.0.0).
    # Need to ensure they're present so the version is always in 3 parts: major.minor.patch.
    try:
        major, rest = raw.split('.', 1)
    except ValueError:
        self.log.debug('Malformed version string: %s', raw)
        return None
    minor, found, patch = rest.partition('.')
    if not found:
        patch = '0'
    return '{}.{}.{}'.format(major, minor, patch)