This page is only aimed at users that would like know what
ctc depends on under the hood.
If you just want to install
ctc then check out the Installation docs.
ctc requires python 3.7 or greater.
When using a fresh installation of Debian or Ubuntu, you may need to manually install
python-dev. These are libraries required by many python packages including
ctc. If you are an active python user it’s likely that these are already installed on your machine. If you are setting up a new machine or environment, you may need to install them according to your operating system and python version.
To install these os dependencies on a fresh Debian / Ubuntu machine, can use the following:
PYTHON_VERSION=$(python3 -c "import sys; print('python' + str(sys.version_info.major) + '.' + str(sys.version_info.minor))") python3 -m pip install $PYTHON_VERSION-dev sudo apt-get install build-essential
ctc depends on a few different types of external packages:
data science dependencies include standard python library packages including
IO dependencies include packages like
aiohttpfor network communication and
tomlfor file io.
toolsuite dependencies are general python utilities coming the
toolsuiteset of repos. These are written by the same authors as
EVM/Cryptography dependencies include
Each of these dependencies has its own dependencies.
Reliance on these packages will be minimized in future releases to minimize attack surface and to maximize the number of environments in which
ctc can be run. Some of the common libraries in the EVM ecosystem have incompatible requirements. For example,
ethereum-etl requires older versions of
eth_abi, and so a single environment cannot contain the most recent versions of all of these packages.
mypy for static analysis of type annotations. This helps catch errors before they can appear at runtime. Custom types used by
ctc can be found in the
Checks are currently performed using
mypy versions and features will be used as they become available. End users of
ctc do not need
mypy unless they are interested in running these type checks.
New python type annotation features will be used as they become available using
typing_extensions. By using
from __future__ import annotations, new typing features can be used as they are released without sacrificing backward compatibility.
ctc tests are run using
pytest 7.0.0 with the
pytest-asyncio extension. These can be run using
pytest . in the
ctc documentation is built using
sphinx 4.5.0. Source files and build instructions can be found in the Documentation Repository.
ctc stores much of the data it downloads in sql databases. Support for sqlite is currently in beta and support for postgresql is coming soon.
For more details see Data Storage