Start `piker.toolz` subpkg for all our tooling B)

Since there's a growing list of top level mods which are more or less
utils/tools for working with the runtime; begin to move them into a new
subpkg starting with a new `.toolz.debug`.

Start with,
- a new `open_crash_handller()` for doing breakpoints around blocks that
  might error.
- move in what was `piker._profile` into `.toolz.profile` and adjust all
  importing appropriately.
account_tests
Tyler Goodlet 2023-07-20 15:23:01 -04:00
parent 5eb310cac9
commit 5e7916a0df
18 changed files with 106 additions and 25 deletions

View File

@ -1,5 +1,5 @@
# piker: trading gear for hackers # piker: trading gear for hackers
# Copyright (C) 2018-present Tyler Goodlet (in stewardship of piker0) # Copyright (C) Tyler Goodlet (in stewardship for pikers)
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by # it under the terms of the GNU Affero General Public License as published by
@ -13,10 +13,10 @@
# You should have received a copy of the GNU Affero General Public License # You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>. # along with this program. If not, see <https://www.gnu.org/licenses/>.
""" '''
Pre-(path)-graphics formatted x/y nd/1d rendering subsystem. Pre-(path)-graphics formatted x/y nd/1d rendering subsystem.
""" '''
from __future__ import annotations from __future__ import annotations
from typing import ( from typing import (
Optional, Optional,
@ -39,7 +39,7 @@ if TYPE_CHECKING:
from ._dataviz import ( from ._dataviz import (
Viz, Viz,
) )
from .._profile import Profiler from piker.toolz import Profiler
class IncrementalFormatter(msgspec.Struct): class IncrementalFormatter(msgspec.Struct):

View File

@ -32,7 +32,7 @@ import numpy as np
import polars as pl import polars as pl
from ._sharedmem import ShmArray from ._sharedmem import ShmArray
from .._profile import ( from ..toolz.profile import (
Profiler, Profiler,
pg_profile_enabled, pg_profile_enabled,
ms_slower_then, ms_slower_then,

View File

@ -37,10 +37,6 @@ from ._sharedmem import (
ShmArray, ShmArray,
_Token, _Token,
) )
# from .._profile import (
# Profiler,
# pg_profile_enabled,
# )
if TYPE_CHECKING: if TYPE_CHECKING:
# from pyqtgraph import PlotItem # from pyqtgraph import PlotItem

View File

@ -51,7 +51,7 @@ from ._api import (
_load_builtins, _load_builtins,
_Token, _Token,
) )
from .._profile import Profiler from ..toolz import Profiler
log = get_logger(__name__) log = get_logger(__name__)

View File

@ -246,7 +246,7 @@ async def open_tsdb_client(
# * the original data feed arch blurb: # * the original data feed arch blurb:
# - https://github.com/pikers/piker/issues/98 # - https://github.com/pikers/piker/issues/98
# #
from .._profile import Profiler from ..toolz import Profiler
profiler = Profiler( profiler = Profiler(
disabled=True, # not pg_profile_enabled(), disabled=True, # not pg_profile_enabled(),
delayed=False, delayed=False,

View File

@ -59,7 +59,6 @@ from anyio_marketstore import ( # noqa
Params, Params,
) )
from piker.log import get_logger from piker.log import get_logger
# from .._profile import Profiler
log = get_logger(__name__) log = get_logger(__name__)

View File

@ -67,7 +67,6 @@ from piker import config
from piker.data import def_iohlcv_fields from piker.data import def_iohlcv_fields
from piker.data import ShmArray from piker.data import ShmArray
from piker.log import get_logger from piker.log import get_logger
# from .._profile import Profiler
log = get_logger('storage.nativedb') log = get_logger('storage.nativedb')

View File

@ -0,0 +1,38 @@
# piker: trading gear for hackers
# Copyright (C) Tyler Goodlet (in stewardship for pikers)
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
'''
Toolz for debug, profile and trace of the distributed runtime :surfer:
'''
from .debug import (
open_crash_handler,
)
from .profile import (
Profiler,
pg_profile_enabled,
ms_slower_then,
timeit,
)
__all__: list[str] = [
'open_crash_handler',
'pg_profile_enabled',
'ms_slower_then',
'Profiler',
'timeit',
]

View File

@ -0,0 +1,40 @@
# piker: trading gear for hackers
# Copyright (C) Tyler Goodlet (in stewardship for pikers)
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
'''
Debugger wrappers for `pdbp` as used by `tractor`.
'''
from contextlib import contextmanager as cm
import pdbp
# TODO: better naming and what additionals?
# - optional runtime plugging?
# - detection for sync vs. async code?
# - specialized REPL entry when in distributed mode?
@cm
def open_crash_handler():
'''
Super basic crash handler using `pdbp` debugger.
'''
try:
yield
except BaseException:
pdbp.xpm()
raise

View File

@ -34,10 +34,13 @@ from PyQt5.QtGui import (
QPainter, QPainter,
QPainterPath, QPainterPath,
) )
from .._profile import pg_profile_enabled, ms_slower_then
from ._style import hcolor from ._style import hcolor
from ..log import get_logger from ..log import get_logger
from .._profile import Profiler from ..toolz.profile import (
Profiler,
pg_profile_enabled,
ms_slower_then,
)
log = get_logger(__name__) log = get_logger(__name__)

View File

@ -62,7 +62,7 @@ from ._curve import (
) )
from ._render import Renderer from ._render import Renderer
from ..log import get_logger from ..log import get_logger
from .._profile import ( from ..toolz.profile import (
Profiler, Profiler,
pg_profile_enabled, pg_profile_enabled,
ms_slower_then, ms_slower_then,

View File

@ -79,12 +79,12 @@ from .order_mode import (
open_order_mode, open_order_mode,
OrderMode, OrderMode,
) )
from .._profile import ( from ..toolz import (
pg_profile_enabled, pg_profile_enabled,
ms_slower_then, ms_slower_then,
Profiler,
) )
from ..log import get_logger from ..log import get_logger
from .._profile import Profiler
if TYPE_CHECKING: if TYPE_CHECKING:
from ._interaction import ChartView from ._interaction import ChartView

View File

@ -66,7 +66,7 @@ from ..fsp._volume import (
flow_rates, flow_rates,
) )
from ..log import get_logger from ..log import get_logger
from .._profile import Profiler from ..toolz import Profiler
log = get_logger(__name__) log = get_logger(__name__)

View File

@ -39,8 +39,11 @@ import numpy as np
import trio import trio
from ..log import get_logger from ..log import get_logger
from .._profile import Profiler from ..toolz import (
from .._profile import pg_profile_enabled, ms_slower_then Profiler,
pg_profile_enabled,
ms_slower_then,
)
from .view_mode import overlay_viewlists from .view_mode import overlay_viewlists
# from ._style import _min_points_to_show # from ._style import _min_points_to_show
from ._editors import SelectRect from ._editors import SelectRect

View File

@ -31,9 +31,12 @@ from PyQt5.QtCore import (
from PyQt5.QtGui import QPainterPath from PyQt5.QtGui import QPainterPath
from ._curve import FlowGraphic from ._curve import FlowGraphic
from .._profile import pg_profile_enabled, ms_slower_then from ..toolz import (
Profiler,
pg_profile_enabled,
ms_slower_then,
)
from ..log import get_logger from ..log import get_logger
from .._profile import Profiler
log = get_logger(__name__) log = get_logger(__name__)

View File

@ -39,7 +39,7 @@ from ..data._pathops import (
xy_downsample, xy_downsample,
) )
from ..log import get_logger from ..log import get_logger
from .._profile import ( from ..toolz import (
Profiler, Profiler,
) )

View File

@ -33,7 +33,7 @@ import pyqtgraph as pg
from ..data.types import Struct from ..data.types import Struct
from ..data._timeseries import slice_from_time from ..data._timeseries import slice_from_time
from ..log import get_logger from ..log import get_logger
from .._profile import Profiler from ..toolz import Profiler
if TYPE_CHECKING: if TYPE_CHECKING:
from ._chart import ChartPlotWidget from ._chart import ChartPlotWidget