def get_files(self):
     """returns {root: Container}"""
     # lazy initialisation
     if self.files != {}:
         return FileSharingMixin.get_files(self)
     # full init
     for repo in self.init_repos():
         try:
             self.files[repo] = create_container(repo, checked=False)
         except AssertionError:
             display_status("non valid repo '%s'"% repo)
     # if no valid repo found, does not try any further...
     if self.files == {}:
         return self.files
     for option in self.config.options(SECTION_FILE):
         # get share & tag
         try:
             o_description = self.config.get(SECTION_FILE, option)
             o_file, o_share, o_size, o_tag = o_description.split(',', 3)
             o_file = (o_file == 'F') and True or False
             o_share = (o_share == SHARED_TAG)
             o_tag = force_unicode(o_tag)
             o_size = int(o_size)
         except (ValueError, ConfigParser.NoSectionError,
                 ConfigParser.NoOptionError), err:
             log("option '%s' not well formated: %s"% (o_description, err))
             o_file, o_share, o_tag, o_size = False, False, DEFAULT_TAG, 0
         # add container
         try:
             file_container = o_file and self.get_file(option) \
                              or self.get_container(option)
             file_container.share(o_share)
             file_container.tag(o_tag)
             file_container.size = o_size
         except KeyError:
             log("non valid file '%s'"% option)