Zips the contents of this folder. If `target` is not provided,
        <name>.zip is used instead. `basepath` is used to specify the
        base path for files in the archive. The path stored along with
        the files in the archive will be relative to the `basepath`.

def zip(self, target=None, basepath=None):
        """
        Zips the contents of this folder. If `target` is not provided,
        <name>.zip is used instead. `basepath` is used to specify the
        base path for files in the archive. The path stored along with
        the files in the archive will be relative to the `basepath`.
        """
        target = self.parent.child(target or self.name + '.zip')
        basepath = basepath or self.path
        from zipfile import ZipFile
        with ZipFile(target, 'w') as zip:
            with self.walker as walker:
                @walker.file_visitor
                def add_file(f):
                    zip.write(f.path, f.get_relative_path(basepath))