Код: Выделить всё
def chunk_load(filename: str, chunksize=1000, max_chunks:Optional[int]=None, expected_chunks=Optional[int]) -> pd.DataFrame:
display_string = f'Loading {os.path.basename(filename)}|chunksize={chunksize}'
if max_chunks is None:
df = pd.concat([chunk for chunk in tqdm(pd.read_csv(filename, chunksize=chunksize), desc=display_string, total=expected_chunks)]) # pylance says that `total` is not compatible
else:
chunks = []
for _ in tqdm(range(max_chunks), desc=display_string):
try:
chunk = next(pd.read_csv(filename, chunksize=chunksize))
chunks.append(chunk)
except StopIteration:
break
df = pd.concat(chunks)
return df

Я создал небольшой пример, который, как мне казалось, имитирует ту же динамику:
Код: Выделить всё
from typing import Optional
def foo(foo_val: Optional[float]) -> None:
pass
def trouble_foo(trouble_val: float | None) -> None:
pass
def bar(bar_val: Optional[int]) -> None:
return foo(bar_val)
def trouble_bar(trouble_bar_val: Optional[int]) -> None:
return trouble_foo(trouble_bar_val)
bar(35)
trouble_bar(42)
Почему для функции chunk_load передача в необязательном[int] для параметра total это неправильно, поскольку он ожидает число с плавающей запятой | Нет, но в простом примере это вполне нормально?
Подробнее здесь: https://stackoverflow.com/questions/786 ... float-none