> For the complete documentation index, see [llms.txt](https://docs.telys.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.telys.ai/operations/python-version-support.md).

# Python support

Telys requires **Python 3.10 or newer** (`requires-python >=3.10`). The published wheel is pure Python (`py3-none-any`), with no compiled extension pinned to an interpreter ABI — the native runtime loads separately via ctypes at call time. So Telys keeps working, without a rebuild, on Python releases newer than its trove classifiers list.

## Version matrix

| Python          | Status                                                |
| --------------- | ----------------------------------------------------- |
| 3.9 and earlier | Not supported (below `requires-python`).              |
| 3.10            | Supported — minimum version.                          |
| 3.11            | Supported.                                            |
| 3.12            | Supported.                                            |
| 3.13            | Supported.                                            |
| 3.14            | Runs (pure-Python wheel), not yet in the classifiers. |

The classifiers currently list Python 3.10 through 3.13. Because the wheel is architecture- and interpreter-agnostic, it installs and imports on 3.14 too; the classifiers just have not been extended yet.

## Why newer versions just work

A `py3-none-any` wheel contains only Python source — no C extension compiled against a particular CPython version. Telys never links the engine at build time; instead, `import telys` locates the verified runtime and loads it through ctypes. The interpreter version does not gate the runtime, so a new Python release runs the same wheel unchanged.

{% hint style="info" %}
The runtime is platform-specific (see [Supported platforms](/operations/supported-platforms.md)) even though the SDK is Python-version-agnostic. Python-version portability and OS portability are separate axes.
{% endhint %}

## Dependencies

Telys has two runtime dependencies, both supporting the Python versions above:

| Dependency     | Constraint |
| -------------- | ---------- |
| `numpy`        | `>=1.24`   |
| `cryptography` | `>=42`     |

`cryptography` backs the offline verification APIs in `telys.verify`; `numpy` backs vector handling and the `id_map.npy` sidecar.

## Installing on a supported interpreter

Use **pipx** so Telys lives in an isolated environment and the `telys` command stays on your `PATH`:

{% tabs %}
{% tab title="pipx" icon="terminal" %}

```bash
pipx install telys
telys version
```

To install against a specific interpreter:

```bash
pipx install --python python3.12 telys
```

{% endtab %}

{% tab title="pip" icon="python" %}

```bash
python3.12 -m pip install telys
python3.12 -m telys.cli version
```

{% endtab %}
{% endtabs %}

Check the interpreter before installing:

```bash
python3 --version   # expect 3.10 or newer
```

Under an interpreter older than 3.10, pip refuses the install — the version is below `requires-python`.

## See also

* [Supported platforms](/operations/supported-platforms.md) — the OS/arch axis of portability.
* [Install Telys](/start-here/install.md) — the full install and sign-in flow.
* [Upgrade Telys](/operations/upgrading.md) — moving to a newer Telys release.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.telys.ai/operations/python-version-support.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
