Skip to content
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 11 additions & 8 deletions pysus/management/inventory.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

from __future__ import annotations

import asyncio
import json
from datetime import datetime
from pathlib import Path
Expand Down Expand Up @@ -111,16 +112,18 @@ async def _walk_ftp_item(self, item: Any) -> list[FileRecord]:
return [record]

if isinstance(item, BaseRemoteGroup):
records: list[FileRecord] = []
for file in await item.files:
records.extend(await self._walk_ftp_item(file))
return records
files = await item.files
results = await asyncio.gather(
*(self._walk_ftp_item(file) for file in files)
)
return [record for sublist in results for record in sublist]

if isinstance(item, Directory):
dir_records: list[FileRecord] = []
for child in await item.content:
dir_records.extend(await self._walk_ftp_item(child))
return dir_records
children = await item.content
results = await asyncio.gather(
*(self._walk_ftp_item(child) for child in children)
)
return [record for sublist in results for record in sublist]

return []

Expand Down