def parseFileAttrs(self, attributes): '''list(str) -> File Retrieves data from the attribute lines and creates File DO. @raise ValueError: If retrieved line count differs from required attribute count ''' name = self._getFileAttr(attributes, FileAttrs.NAME) path = self._getFileAttr(attributes, FileAttrs.PATH) isDirectory = self._getFileAttr(attributes, FileAttrs.IS_DIRECTORY) isDirectory = isDirectory and isDirectory.isdigit() and int(isDirectory) perms = self._getFileAttr(attributes, FileAttrs.PERMS) isDirectory = perms and perms[0] == 'd' or isDirectory #Cutting parent directory path parentPath = path and name and path.endswith(name) and path[:len(path) - (len(name) + 1)] file_ = File(name, isDirectory) file_.setPermissionsInText(perms) file_.path = path file_.parent = parentPath size = self._getFileAttr(attributes, FileAttrs.SIZE) owner = self._getFileAttr(attributes, FileAttrs.OWNER) if owner: owner = name and owner[:len(owner) - len(name)].strip() or owner owner = size and owner[owner.find(size) + len(size):].strip() or owner lastModificationTime = self._getFileAttr(attributes, FileAttrs.LAST_MODIFICATION_TIME) lastModificationTime = lastModificationTime and self._parseUTCTime(lastModificationTime) creationTime = self._getFileAttr(attributes, FileAttrs.CREATION_TIME) creationTime = creationTime and self._parseUTCTime(creationTime) version = self._getFileAttr(attributes, FileAttrs.VERSION) version = version and self._parseVersion(version) content = self._getFileAttr(attributes, FileAttrs.CONTENT) file_.owner = owner size and file_.setSizeInBytes(size) file_.version = version file_.content = content lastModificationTime and file_.setLastModificationTimeInUTC(lastModificationTime) creationTime and file_.setCreateTimeInUTC(creationTime) return file_