# {py:mod}`zoomy_core.symsolver.hooks`

```{py:module} zoomy_core.symsolver.hooks
```

```{autodoc2-docstring} zoomy_core.symsolver.hooks
:parser: zoomy_docstrings
:allowtitles:
```

## Module Contents

### Classes

````{list-table}
:class: autosummary longtable
:align: left

* - {py:obj}`HookDerivative <zoomy_core.symsolver.hooks.HookDerivative>`
  - ```{autodoc2-docstring} zoomy_core.symsolver.hooks.HookDerivative
    :parser: zoomy_docstrings
    :summary:
    ```
* - {py:obj}`HookFunction <zoomy_core.symsolver.hooks.HookFunction>`
  - ```{autodoc2-docstring} zoomy_core.symsolver.hooks.HookFunction
    :parser: zoomy_docstrings
    :summary:
    ```
* - {py:obj}`FunctionsParam <zoomy_core.symsolver.hooks.FunctionsParam>`
  - ```{autodoc2-docstring} zoomy_core.symsolver.hooks.FunctionsParam
    :parser: zoomy_docstrings
    :summary:
    ```
* - {py:obj}`Hooks <zoomy_core.symsolver.hooks.Hooks>`
  - ```{autodoc2-docstring} zoomy_core.symsolver.hooks.Hooks
    :parser: zoomy_docstrings
    :summary:
    ```
````

### Functions

````{list-table}
:class: autosummary longtable
:align: left

* - {py:obj}`hook <zoomy_core.symsolver.hooks.hook>`
  - ```{autodoc2-docstring} zoomy_core.symsolver.hooks.hook
    :parser: zoomy_docstrings
    :summary:
    ```
* - {py:obj}`hook_function <zoomy_core.symsolver.hooks.hook_function>`
  - ```{autodoc2-docstring} zoomy_core.symsolver.hooks.hook_function
    :parser: zoomy_docstrings
    :summary:
    ```
* - {py:obj}`hook_names <zoomy_core.symsolver.hooks.hook_names>`
  - ```{autodoc2-docstring} zoomy_core.symsolver.hooks.hook_names
    :parser: zoomy_docstrings
    :summary:
    ```
* - {py:obj}`check_functions <zoomy_core.symsolver.hooks.check_functions>`
  - ```{autodoc2-docstring} zoomy_core.symsolver.hooks.check_functions
    :parser: zoomy_docstrings
    :summary:
    ```
* - {py:obj}`refuse_hooks <zoomy_core.symsolver.hooks.refuse_hooks>`
  - ```{autodoc2-docstring} zoomy_core.symsolver.hooks.refuse_hooks
    :parser: zoomy_docstrings
    :summary:
    ```
* - {py:obj}`refuse_used <zoomy_core.symsolver.hooks.refuse_used>`
  - ```{autodoc2-docstring} zoomy_core.symsolver.hooks.refuse_used
    :parser: zoomy_docstrings
    :summary:
    ```
````

### Data

````{list-table}
:class: autosummary longtable
:align: left

* - {py:obj}`HOOKS_KEY <zoomy_core.symsolver.hooks.HOOKS_KEY>`
  - ```{autodoc2-docstring} zoomy_core.symsolver.hooks.HOOKS_KEY
    :parser: zoomy_docstrings
    :summary:
    ```
````

### API

````{py:data} HOOKS_KEY
:canonical: zoomy_core.symsolver.hooks.HOOKS_KEY
:value: >
   '__zoomy_hooks__'

```{autodoc2-docstring} zoomy_core.symsolver.hooks.HOOKS_KEY
:parser: zoomy_docstrings
```

````

````{py:function} hook(name)
:canonical: zoomy_core.symsolver.hooks.hook

```{autodoc2-docstring} zoomy_core.symsolver.hooks.hook
:parser: zoomy_docstrings
```
````

`````{py:class} HookDerivative()
:canonical: zoomy_core.symsolver.hooks.HookDerivative

Bases: {py:obj}`zoomy_core.misc.options.Option`

```{autodoc2-docstring} zoomy_core.symsolver.hooks.HookDerivative
:parser: zoomy_docstrings
```

```{rubric} Initialization
```

```{autodoc2-docstring} zoomy_core.symsolver.hooks.HookDerivative.__init__
:parser: zoomy_docstrings
```

````{py:attribute} zero
:canonical: zoomy_core.symsolver.hooks.HookDerivative.zero
:value: >
   'zero'

```{autodoc2-docstring} zoomy_core.symsolver.hooks.HookDerivative.zero
:parser: zoomy_docstrings
```

````

````{py:attribute} auto
:canonical: zoomy_core.symsolver.hooks.HookDerivative.auto
:value: >
   'auto'

```{autodoc2-docstring} zoomy_core.symsolver.hooks.HookDerivative.auto
:parser: zoomy_docstrings
```

````

`````

`````{py:class} HookFunction(function, derivative=HookDerivative.auto)
:canonical: zoomy_core.symsolver.hooks.HookFunction

```{autodoc2-docstring} zoomy_core.symsolver.hooks.HookFunction
:parser: zoomy_docstrings
```

```{rubric} Initialization
```

```{autodoc2-docstring} zoomy_core.symsolver.hooks.HookFunction.__init__
:parser: zoomy_docstrings
```

````{py:property} symbolic
:canonical: zoomy_core.symsolver.hooks.HookFunction.symbolic

```{autodoc2-docstring} zoomy_core.symsolver.hooks.HookFunction.symbolic
:parser: zoomy_docstrings
```

````

`````

````{py:function} hook_function(derivative=HookDerivative.auto)
:canonical: zoomy_core.symsolver.hooks.hook_function

```{autodoc2-docstring} zoomy_core.symsolver.hooks.hook_function
:parser: zoomy_docstrings
```
````

````{py:class} FunctionsParam(default: dict[typing.Any, typing.Any] | None = t.cast('dict[t.Any, t.Any] | None', Undefined), *, allow_None: bool = t.cast('bool', Undefined), **params: typing_extensions.Unpack[param.parameters._ClassSelectorKwargs])
:canonical: zoomy_core.symsolver.hooks.FunctionsParam

Bases: {py:obj}`param.Dict`

```{autodoc2-docstring} zoomy_core.symsolver.hooks.FunctionsParam
:parser: zoomy_docstrings
```

```{rubric} Initialization
```

```{autodoc2-docstring} zoomy_core.symsolver.hooks.FunctionsParam.__init__
:parser: zoomy_docstrings
```

````

````{py:exception} HookError()
:canonical: zoomy_core.symsolver.hooks.HookError

Bases: {py:obj}`NotImplementedError`

```{autodoc2-docstring} zoomy_core.symsolver.hooks.HookError
:parser: zoomy_docstrings
```

```{rubric} Initialization
```

```{autodoc2-docstring} zoomy_core.symsolver.hooks.HookError.__init__
:parser: zoomy_docstrings
```

````

````{py:function} hook_names(expr)
:canonical: zoomy_core.symsolver.hooks.hook_names

```{autodoc2-docstring} zoomy_core.symsolver.hooks.hook_names
:parser: zoomy_docstrings
```
````

`````{py:class} Hooks(functions, grad=None)
:canonical: zoomy_core.symsolver.hooks.Hooks

```{autodoc2-docstring} zoomy_core.symsolver.hooks.Hooks
:parser: zoomy_docstrings
```

```{rubric} Initialization
```

```{autodoc2-docstring} zoomy_core.symsolver.hooks.Hooks.__init__
:parser: zoomy_docstrings
```

````{py:method} lower(expr)
:canonical: zoomy_core.symsolver.hooks.Hooks.lower

```{autodoc2-docstring} zoomy_core.symsolver.hooks.Hooks.lower
:parser: zoomy_docstrings
```

````

`````

````{py:function} check_functions(functions, systems)
:canonical: zoomy_core.symsolver.hooks.check_functions

```{autodoc2-docstring} zoomy_core.symsolver.hooks.check_functions
:parser: zoomy_docstrings
```
````

````{py:function} refuse_hooks(systems, backend, functions=None)
:canonical: zoomy_core.symsolver.hooks.refuse_hooks

```{autodoc2-docstring} zoomy_core.symsolver.hooks.refuse_hooks
:parser: zoomy_docstrings
```
````

````{py:function} refuse_used(refused, owner, source)
:canonical: zoomy_core.symsolver.hooks.refuse_used

```{autodoc2-docstring} zoomy_core.symsolver.hooks.refuse_used
:parser: zoomy_docstrings
```
````
