Installation
============
Pyccolo is published on PyPI and installs with a single command:
.. code-block:: console
$ pip install pyccolo
This pulls in only two runtime dependencies — `traitlets
`_ and `typing_extensions
`_ — and installs two console
scripts, ``pyc`` and ``pyccolo`` (they are aliases), for running scripts under
instrumentation from the command line. See :doc:`/reference/cli` for details.
To install the latest development version straight from GitHub:
.. code-block:: console
$ pip install git+https://github.com/smacke/pyccolo.git
Supported Python versions
-------------------------
Because Pyccolo embeds instrumentation at the level of *source code* rather than
bytecode, the same tracer code runs across **Python 3.6 through 3.14**, with two
feature caveats:
- **Syntax augmentation** (defining new surface syntax) requires Python **3.8+**.
- **Opcode tracing** (the ``opcode`` ``sys.settrace`` event) requires Python
**3.7+**.
Everything else — AST events, handlers, guards, composition, source-to-source —
works on the full range.
Working from a source checkout
------------------------------
If you are hacking on Pyccolo itself, clone the repository and install it in
editable mode with the relevant extras:
.. code-block:: console
$ git clone https://github.com/smacke/pyccolo.git
$ cd pyccolo
$ pip install -e '.[test]' # test/lint/type-check toolchain
$ pip install -e '.[docs]' # Sphinx toolchain for building these docs
You can then build this documentation locally:
.. code-block:: console
$ make -C docs html
The rendered site lands in ``docs/_build/html``.
Next steps
----------
With Pyccolo installed, head to :doc:`/getting_started/first_tracer` to build
something that runs.