> ## Documentation Index
> Fetch the complete documentation index at: /docs/llms.txt
> Use this file to discover all available pages before exploring further.

# cache_policies

# `prefect.cache_policies`

## Classes

### `CachePolicy` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache\_policies.py#L54](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache_policies.py#L54)</sup>

Base class for all cache policies.

**Methods:**

#### `compute_key` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache\_policies.py#L107](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache_policies.py#L107)</sup>

```python theme={null}
compute_key(self, task_ctx: TaskRunContext, inputs: dict[str, Any], flow_parameters: dict[str, Any], **kwargs: Any) -> Optional[str]
```

#### `configure` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache\_policies.py#L76](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache_policies.py#L76)</sup>

```python theme={null}
configure(self, key_storage: Union['WritableFileSystem', str, Path, None] = None, lock_manager: Optional['LockManager'] = None, isolation_level: Union[Literal['READ_COMMITTED', 'SERIALIZABLE'], 'IsolationLevel', None] = None) -> Self
```

Configure the cache policy with the given key storage, lock manager, and isolation level.

**Args:**

* `key_storage`: The storage to use for cache keys. If not provided,
  the current key storage will be used.
* `lock_manager`: The lock manager to use for the cache policy. If not provided,
  the current lock manager will be used.
* `isolation_level`: The isolation level to use for the cache policy. If not provided,
  the current isolation level will be used.

**Returns:**

* A new cache policy with the given key storage, lock manager, and isolation level.

#### `from_cache_key_fn` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache\_policies.py#L68](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache_policies.py#L68)</sup>

```python theme={null}
from_cache_key_fn(cls, cache_key_fn: Callable[['TaskRunContext', Dict[str, Any]], Optional[str]]) -> 'CacheKeyFnPolicy'
```

Given a function generates a key policy.

### `CacheKeyFnPolicy` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache\_policies.py#L163](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache_policies.py#L163)</sup>

This policy accepts a custom function with signature f(task\_run\_context, task\_parameters, flow\_parameters) -> str
and uses it to compute a task run cache key.

**Methods:**

#### `compute_key` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache\_policies.py#L174](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache_policies.py#L174)</sup>

```python theme={null}
compute_key(self, task_ctx: TaskRunContext, inputs: dict[str, Any], flow_parameters: dict[str, Any], **kwargs: Any) -> Optional[str]
```

#### `compute_key` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache\_policies.py#L107](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache_policies.py#L107)</sup>

```python theme={null}
compute_key(self, task_ctx: TaskRunContext, inputs: dict[str, Any], flow_parameters: dict[str, Any], **kwargs: Any) -> Optional[str]
```

#### `configure` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache\_policies.py#L76](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache_policies.py#L76)</sup>

```python theme={null}
configure(self, key_storage: Union['WritableFileSystem', str, Path, None] = None, lock_manager: Optional['LockManager'] = None, isolation_level: Union[Literal['READ_COMMITTED', 'SERIALIZABLE'], 'IsolationLevel', None] = None) -> Self
```

Configure the cache policy with the given key storage, lock manager, and isolation level.

**Args:**

* `key_storage`: The storage to use for cache keys. If not provided,
  the current key storage will be used.
* `lock_manager`: The lock manager to use for the cache policy. If not provided,
  the current lock manager will be used.
* `isolation_level`: The isolation level to use for the cache policy. If not provided,
  the current isolation level will be used.

**Returns:**

* A new cache policy with the given key storage, lock manager, and isolation level.

#### `from_cache_key_fn` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache\_policies.py#L68](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache_policies.py#L68)</sup>

```python theme={null}
from_cache_key_fn(cls, cache_key_fn: Callable[['TaskRunContext', Dict[str, Any]], Optional[str]]) -> 'CacheKeyFnPolicy'
```

Given a function generates a key policy.

### `CompoundCachePolicy` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache\_policies.py#L186](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache_policies.py#L186)</sup>

This policy is constructed from two or more other cache policies and works by computing the keys
for each policy individually, and then hashing a sorted tuple of all computed keys.

Any keys that return `None` will be ignored.

**Methods:**

#### `compute_key` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache\_policies.py#L213](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache_policies.py#L213)</sup>

```python theme={null}
compute_key(self, task_ctx: TaskRunContext, inputs: dict[str, Any], flow_parameters: dict[str, Any], **kwargs: Any) -> Optional[str]
```

#### `compute_key` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache\_policies.py#L107](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache_policies.py#L107)</sup>

```python theme={null}
compute_key(self, task_ctx: TaskRunContext, inputs: dict[str, Any], flow_parameters: dict[str, Any], **kwargs: Any) -> Optional[str]
```

#### `configure` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache\_policies.py#L76](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache_policies.py#L76)</sup>

```python theme={null}
configure(self, key_storage: Union['WritableFileSystem', str, Path, None] = None, lock_manager: Optional['LockManager'] = None, isolation_level: Union[Literal['READ_COMMITTED', 'SERIALIZABLE'], 'IsolationLevel', None] = None) -> Self
```

Configure the cache policy with the given key storage, lock manager, and isolation level.

**Args:**

* `key_storage`: The storage to use for cache keys. If not provided,
  the current key storage will be used.
* `lock_manager`: The lock manager to use for the cache policy. If not provided,
  the current lock manager will be used.
* `isolation_level`: The isolation level to use for the cache policy. If not provided,
  the current isolation level will be used.

**Returns:**

* A new cache policy with the given key storage, lock manager, and isolation level.

#### `from_cache_key_fn` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache\_policies.py#L68](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache_policies.py#L68)</sup>

```python theme={null}
from_cache_key_fn(cls, cache_key_fn: Callable[['TaskRunContext', Dict[str, Any]], Optional[str]]) -> 'CacheKeyFnPolicy'
```

Given a function generates a key policy.

### `TaskSource` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache\_policies.py#L286](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache_policies.py#L286)</sup>

Policy for computing a cache key based on the source code of the task.

This policy only considers raw lines of code in the task, and not the source code of nested tasks.

**Methods:**

#### `compute_key` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache\_policies.py#L293](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache_policies.py#L293)</sup>

```python theme={null}
compute_key(self, task_ctx: TaskRunContext, inputs: Optional[dict[str, Any]], flow_parameters: Optional[dict[str, Any]], **kwargs: Any) -> Optional[str]
```

#### `compute_key` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache\_policies.py#L107](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache_policies.py#L107)</sup>

```python theme={null}
compute_key(self, task_ctx: TaskRunContext, inputs: dict[str, Any], flow_parameters: dict[str, Any], **kwargs: Any) -> Optional[str]
```

#### `configure` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache\_policies.py#L76](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache_policies.py#L76)</sup>

```python theme={null}
configure(self, key_storage: Union['WritableFileSystem', str, Path, None] = None, lock_manager: Optional['LockManager'] = None, isolation_level: Union[Literal['READ_COMMITTED', 'SERIALIZABLE'], 'IsolationLevel', None] = None) -> Self
```

Configure the cache policy with the given key storage, lock manager, and isolation level.

**Args:**

* `key_storage`: The storage to use for cache keys. If not provided,
  the current key storage will be used.
* `lock_manager`: The lock manager to use for the cache policy. If not provided,
  the current lock manager will be used.
* `isolation_level`: The isolation level to use for the cache policy. If not provided,
  the current isolation level will be used.

**Returns:**

* A new cache policy with the given key storage, lock manager, and isolation level.

#### `from_cache_key_fn` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache\_policies.py#L68](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache_policies.py#L68)</sup>

```python theme={null}
from_cache_key_fn(cls, cache_key_fn: Callable[['TaskRunContext', Dict[str, Any]], Optional[str]]) -> 'CacheKeyFnPolicy'
```

Given a function generates a key policy.

### `FlowParameters` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache\_policies.py#L323](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache_policies.py#L323)</sup>

Policy that computes the cache key based on a hash of the flow parameters.

**Methods:**

#### `compute_key` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache\_policies.py#L328](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache_policies.py#L328)</sup>

```python theme={null}
compute_key(self, task_ctx: TaskRunContext, inputs: dict[str, Any], flow_parameters: dict[str, Any], **kwargs: Any) -> Optional[str]
```

#### `compute_key` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache\_policies.py#L107](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache_policies.py#L107)</sup>

```python theme={null}
compute_key(self, task_ctx: TaskRunContext, inputs: dict[str, Any], flow_parameters: dict[str, Any], **kwargs: Any) -> Optional[str]
```

#### `configure` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache\_policies.py#L76](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache_policies.py#L76)</sup>

```python theme={null}
configure(self, key_storage: Union['WritableFileSystem', str, Path, None] = None, lock_manager: Optional['LockManager'] = None, isolation_level: Union[Literal['READ_COMMITTED', 'SERIALIZABLE'], 'IsolationLevel', None] = None) -> Self
```

Configure the cache policy with the given key storage, lock manager, and isolation level.

**Args:**

* `key_storage`: The storage to use for cache keys. If not provided,
  the current key storage will be used.
* `lock_manager`: The lock manager to use for the cache policy. If not provided,
  the current lock manager will be used.
* `isolation_level`: The isolation level to use for the cache policy. If not provided,
  the current isolation level will be used.

**Returns:**

* A new cache policy with the given key storage, lock manager, and isolation level.

#### `from_cache_key_fn` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache\_policies.py#L68](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache_policies.py#L68)</sup>

```python theme={null}
from_cache_key_fn(cls, cache_key_fn: Callable[['TaskRunContext', Dict[str, Any]], Optional[str]]) -> 'CacheKeyFnPolicy'
```

Given a function generates a key policy.

### `RunId` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache\_policies.py#L341](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache_policies.py#L341)</sup>

Returns either the prevailing flow run ID, or if not found, the prevailing task
run ID.

**Methods:**

#### `compute_key` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache\_policies.py#L347](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache_policies.py#L347)</sup>

```python theme={null}
compute_key(self, task_ctx: TaskRunContext, inputs: dict[str, Any], flow_parameters: dict[str, Any], **kwargs: Any) -> Optional[str]
```

#### `compute_key` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache\_policies.py#L107](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache_policies.py#L107)</sup>

```python theme={null}
compute_key(self, task_ctx: TaskRunContext, inputs: dict[str, Any], flow_parameters: dict[str, Any], **kwargs: Any) -> Optional[str]
```

#### `configure` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache\_policies.py#L76](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache_policies.py#L76)</sup>

```python theme={null}
configure(self, key_storage: Union['WritableFileSystem', str, Path, None] = None, lock_manager: Optional['LockManager'] = None, isolation_level: Union[Literal['READ_COMMITTED', 'SERIALIZABLE'], 'IsolationLevel', None] = None) -> Self
```

Configure the cache policy with the given key storage, lock manager, and isolation level.

**Args:**

* `key_storage`: The storage to use for cache keys. If not provided,
  the current key storage will be used.
* `lock_manager`: The lock manager to use for the cache policy. If not provided,
  the current lock manager will be used.
* `isolation_level`: The isolation level to use for the cache policy. If not provided,
  the current isolation level will be used.

**Returns:**

* A new cache policy with the given key storage, lock manager, and isolation level.

#### `from_cache_key_fn` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache\_policies.py#L68](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache_policies.py#L68)</sup>

```python theme={null}
from_cache_key_fn(cls, cache_key_fn: Callable[['TaskRunContext', Dict[str, Any]], Optional[str]]) -> 'CacheKeyFnPolicy'
```

Given a function generates a key policy.

### `Inputs` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache\_policies.py#L363](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache_policies.py#L363)</sup>

Policy that computes a cache key based on a hash of the runtime inputs provided to the task..

**Methods:**

#### `compute_key` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache\_policies.py#L370](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache_policies.py#L370)</sup>

```python theme={null}
compute_key(self, task_ctx: TaskRunContext, inputs: dict[str, Any], flow_parameters: dict[str, Any], **kwargs: Any) -> Optional[str]
```

#### `compute_key` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache\_policies.py#L107](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache_policies.py#L107)</sup>

```python theme={null}
compute_key(self, task_ctx: TaskRunContext, inputs: dict[str, Any], flow_parameters: dict[str, Any], **kwargs: Any) -> Optional[str]
```

#### `configure` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache\_policies.py#L76](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache_policies.py#L76)</sup>

```python theme={null}
configure(self, key_storage: Union['WritableFileSystem', str, Path, None] = None, lock_manager: Optional['LockManager'] = None, isolation_level: Union[Literal['READ_COMMITTED', 'SERIALIZABLE'], 'IsolationLevel', None] = None) -> Self
```

Configure the cache policy with the given key storage, lock manager, and isolation level.

**Args:**

* `key_storage`: The storage to use for cache keys. If not provided,
  the current key storage will be used.
* `lock_manager`: The lock manager to use for the cache policy. If not provided,
  the current lock manager will be used.
* `isolation_level`: The isolation level to use for the cache policy. If not provided,
  the current isolation level will be used.

**Returns:**

* A new cache policy with the given key storage, lock manager, and isolation level.

#### `from_cache_key_fn` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache\_policies.py#L68](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/cache_policies.py#L68)</sup>

```python theme={null}
from_cache_key_fn(cls, cache_key_fn: Callable[['TaskRunContext', Dict[str, Any]], Optional[str]]) -> 'CacheKeyFnPolicy'
```

Given a function generates a key policy.
