Since Python 3.12 asyncio.as_completed accepts a generator of awaitables,
but the tqdm wrapper calls len(fs) unconditionally when total is omitted,
so the same input raises TypeError: object of type 'generator' has no len().
Fall back to an unknown total when fs has no length, mirroring how
tqdm.std.tqdm.__init__ derives total from an iterable. Sized inputs keep
reporting their exact total, and an explicit total is still honoured.
Fixes#1811