MaxFilesCount#

class onetl.file.limit.max_files_count.MaxFilesCount(limit: int)#

Limits the total number of files handled by File Downloader or File Mover.

Parameters:
limitint

All files until limit (including) will be downloaded/moved, but limit+1 will not.

Examples

Create filter which allows to handle 100 files, but stops on 101:

from onetl.file.limit import MaxFilesCount

limit = MaxFilesCount(100)
property is_reached: bool#

Check if limit is reached.

Returns:
True if limit is reached, False otherwise.

Examples

from onetl.impl import LocalPath

assert not limit.is_reached

assert not limit.stops_at(LocalPath("/path/to/file.csv"))
assert not limit.is_reached

assert limit.stops_at(LocalPath("/path/to/file.csv"))
assert limit.is_reached
reset()#

Resets the internal limit state.

Returns:
Returns a filter of the same type, but with non-reached state.
It could be the same filter or a new one, this is an implementation detail.

Examples

assert limit.is_reached

new_limit = limit.reset()
assert not new_limit.is_reached
stops_at(path: PathProtocol) bool#

Update internal state and return current state.

Parameters:
pathonetl.base.path_protocol.PathProtocol

Path to check

Returns:
True if limit is reached, False otherwise.

Examples

from onetl.impl import LocalPath

assert not limit.stops_at(LocalPath("/path/to/file.csv"))
# do this multiple times
...

# stopped on some input
assert limit.stops_at(LocalPath("/path/to/another.csv"))

# at this point, .stops_at() and .is_reached will always return True,
# even on inputs that returned False before.
# it will be in the same state until .reset() is called
assert limit.stops_at(LocalPath("/path/to/file.csv"))