Spaces:
Sleeping
Sleeping
| from typing import Callable, Any, List, Optional, Union, TYPE_CHECKING | |
| from ding.data.buffer import BufferedData | |
| if TYPE_CHECKING: | |
| from ding.data.buffer.buffer import Buffer | |
| def sample_range_view(buffer_: 'Buffer', start: Optional[int] = None, end: Optional[int] = None) -> Callable: | |
| """ | |
| Overview: | |
| The middleware that places restrictions on the range of indices during sampling. | |
| Arguments: | |
| - start (:obj:`int`): The starting index. | |
| - end (:obj:`int`): One above the ending index. | |
| """ | |
| assert start is not None or end is not None | |
| if start and start < 0: | |
| start = buffer_.size + start | |
| if end and end < 0: | |
| end = buffer_.size + end | |
| sample_range = slice(start, end) | |
| def _sample_range_view(action: str, chain: Callable, *args, **kwargs) -> Any: | |
| if action == "sample": | |
| return chain(*args, sample_range=sample_range) | |
| return chain(*args, **kwargs) | |
| return _sample_range_view | |