# Why signature is an unrecognized option?

**URL:** <https://numba.discourse.group/t/why-signature-is-an-unrecognized-option/2984>\
**Category:** Support: What is this error message?\
**Created:** [April 18, 2025, 7:25am UTC](https://numba.discourse.group/t/why-signature-is-an-unrecognized-option/2984 "2025-04-18T07:25:47Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![pauljurczak](https://yyz2.discourse-cdn.com/free1/user_avatar/numba.discourse.group/pauljurczak/32/479_2.png) [@pauljurczak](https://numba.discourse.group/u/pauljurczak)\
**Post date:** [April 18, 2025, 7:25am UTC](https://numba.discourse.group/t/why-signature-is-an-unrecognized-option/2984/1 "2025-04-18T07:25:48Z")

</div>

This script:

```auto
import numba

@numba.jit(signature='f4(f4)')
def g(x):
  return x**3

print(g(2))

```

produces this error:

```auto
KeyError: "Unrecognized options: {'signature'}.

```

The documentation at [Just-in-Time compilation — Numba 0+untagged.1510.g1e70d8c.dirty documentation](https://numba.readthedocs.io/en/stable/reference/jit-compilation.html#numba.jit) shows that `signature` is available:

```auto
@numba.jit(signature=None, nopython=False, nogil=False, cache=False, forceobj=False, parallel=False, error_model='python', fastmath=False, locals={}, boundscheck=False)

```

Am I reading it incorrectly? I’m using Numba 0.61.2 with Python 3.12.7.

Incidentally, using `signature` as a positional argument works, e.g.:

```auto
@numba.jit('f4(f4)', fastmath=True, inline='always')
def g(x):
  return x**3

```

---

<div class="post-metadata">

**Author:** ![Oyibo](https://avatars.discourse-cdn.com/v4/letter/o/4af34b/32.png) [@Oyibo](https://numba.discourse.group/u/Oyibo)\
**Post date:** [April 18, 2025, 7:55am UTC](https://numba.discourse.group/t/why-signature-is-an-unrecognized-option/2984/2 "2025-04-18T07:55:16Z")

</div>

@pauljurczak the documentation is probably not up to date.

The jit decorator can be used with signatures as positional argument:  
`jit(signatures, **targetoptions) -> jit(function)`

You could use a keyword argument “signature\_or\_function”, too:

```auto
@numba.jit(signature_or_function='f4(f4)')
def g(x):
  return x**3

print(g(2))
# 8.0

```

This is the description:

```auto
def jit(signature_or_function=None, locals=MappingProxyType({}), cache=False,
        pipeline_class=None, boundscheck=None, **options):
    """
    This decorator is used to compile a Python function into native code.

    Args
    -----
    signature_or_function:
        The (optional) signature or list of signatures to be compiled.
        If not passed, required signatures will be compiled when the
        decorated function is called, depending on the argument values.
        As a convenience, you can directly pass the function to be compiled
        instead.

```

---

<div class="post-metadata">

**Author:** ![pauljurczak](https://yyz2.discourse-cdn.com/free1/user_avatar/numba.discourse.group/pauljurczak/32/479_2.png) [@pauljurczak](https://numba.discourse.group/u/pauljurczak)\
**Post date:** [April 18, 2025, 8:36am UTC](https://numba.discourse.group/t/why-signature-is-an-unrecognized-option/2984/3 "2025-04-18T08:36:28Z")

</div>

> [@Oyibo](#):
>
> `signature_or_function`

Thank you, this solution works. Interestingly, the full error message for `signature` keyword doesn’t list `signature_or_function`:

```auto
KeyError: "Unrecognized options: {'signature'}. Known options are dict_keys(['_dbg_extend_lifetimes', '_dbg_optnone', '_nrt', 'boundscheck', 'debug', 'error_model', 'fastmath', 'forceinline', 'forceobj', 'inline', 'looplift', 'no_cfunc_wrapper', 'no_cpython_wrapper', 'no_rewrites', 'nogil', 'nopython', 'parallel'])"

```

---

<div class="post-metadata">

**Author:** ![Oyibo](https://avatars.discourse-cdn.com/v4/letter/o/4af34b/32.png) [@Oyibo](https://numba.discourse.group/u/Oyibo)\
**Post date:** [April 18, 2025, 11:36am UTC](https://numba.discourse.group/t/why-signature-is-an-unrecognized-option/2984/4 "2025-04-18T11:36:54Z")

</div>

It is probably missing on purpose. The users should treat signatures as a positional argument.  
Have you considered opening an issue on Github to update the documentation?

---

<div class="post-metadata">

**Author:** ![pauljurczak](https://yyz2.discourse-cdn.com/free1/user_avatar/numba.discourse.group/pauljurczak/32/479_2.png) [@pauljurczak](https://numba.discourse.group/u/pauljurczak)\
**Post date:** [April 18, 2025, 7:03pm UTC](https://numba.discourse.group/t/why-signature-is-an-unrecognized-option/2984/5 "2025-04-18T19:03:36Z")

</div>

Done: [Signature is an unrecognized option for @jit [documentation issue] · Issue #10049 · numba/numba · GitHub](https://github.com/numba/numba/issues/10049)
