Debugging#
Here we would like to describe possible techniques that could help you to find and understand issues in your code.
Show stack trace#
We provide ability to show line of code where the issue happens in case if code is written in onetick.py.
In code your set or otp.config['show_stack_info']
or the OTP_SHOW_STACK_INFO
env variable to enable this option (more about it is here)
In tests your could use the --show-stack-trace
option.
Dumping ticks#
The .dump()
method allows to print out incoming ticks, that might help to find
ticks that leads to incorrect behaviour and reproduce it then in tests.
onetick view#
onetick view
is a terminal UI for browsing OneTick databases and their content.
This tool is built on top of the onetick.py
and distributed
as a separate python package.
After installation a developer just needs to go to a folder with OneTick databases
and execute the onetick view
command in terminal – it automatically discovers
databases and shows them.
Usually it’s convenient to use this tool along with the --keep-generated
flag in tests,
because this flag provides all databases are used in tests with their content.
Save OTQ#
Any otp.Source
object has the .to_otq()
method that allows to save a query on the disk with goal to check the OTQ graph.
Note that this method has symbols and start/end query interval parameters that’s better to pass there the same as for otp.run
because these parameters could change graph calculation.
It’s often useful when you think the onetick.py
constructs the wrong calculation or you want to check some details.
Setting name of the query#
Method otp.Source.set_name
can be used to set the name of the source.
This name will be used as a part of the resulting .otq file name and as the name of the query inside this file.
Graph rendering#
Alternatively we could propose to use the .render()
method on the otp.Source
that draws a query as the graphviz DAG.
It could help with quick investigations because save OTQ requires a running tick server and connected to it OneTick client with necessary context.
Logging symbols#
Configuration parameter otp.config.log_symbol
and parameter log_symbol
of function otp.run
can be used to enable
printing of each processed symbol to the standard output.
Note that this method has some limitations: