Remove `BaseModel` use from all dataclass-like uses
							parent
							
								
									6cc02bd8f5
								
							
						
					
					
						commit
						9d176c2dda
					
				| 
						 | 
					@ -34,7 +34,6 @@ from typing import (
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from bidict import bidict
 | 
					from bidict import bidict
 | 
				
			||||||
import pendulum
 | 
					import pendulum
 | 
				
			||||||
# from pydantic import BaseModel
 | 
					 | 
				
			||||||
import trio
 | 
					import trio
 | 
				
			||||||
import tractor
 | 
					import tractor
 | 
				
			||||||
import wsproto
 | 
					import wsproto
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -26,7 +26,6 @@ import time
 | 
				
			||||||
from typing import AsyncIterator, Callable
 | 
					from typing import AsyncIterator, Callable
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from bidict import bidict
 | 
					from bidict import bidict
 | 
				
			||||||
from pydantic import BaseModel
 | 
					 | 
				
			||||||
import trio
 | 
					import trio
 | 
				
			||||||
from trio_typing import TaskStatus
 | 
					from trio_typing import TaskStatus
 | 
				
			||||||
import tractor
 | 
					import tractor
 | 
				
			||||||
| 
						 | 
					@ -34,6 +33,7 @@ import tractor
 | 
				
			||||||
from ..log import get_logger
 | 
					from ..log import get_logger
 | 
				
			||||||
from ..data._normalize import iterticks
 | 
					from ..data._normalize import iterticks
 | 
				
			||||||
from ..data.feed import Feed, maybe_open_feed
 | 
					from ..data.feed import Feed, maybe_open_feed
 | 
				
			||||||
 | 
					from ..data.types import Struct
 | 
				
			||||||
from .._daemon import maybe_spawn_brokerd
 | 
					from .._daemon import maybe_spawn_brokerd
 | 
				
			||||||
from . import _paper_engine as paper
 | 
					from . import _paper_engine as paper
 | 
				
			||||||
from ._messages import (
 | 
					from ._messages import (
 | 
				
			||||||
| 
						 | 
					@ -304,7 +304,7 @@ class TradesRelay:
 | 
				
			||||||
    consumers: int = 0
 | 
					    consumers: int = 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class Router(BaseModel):
 | 
					class Router(Struct):
 | 
				
			||||||
    '''
 | 
					    '''
 | 
				
			||||||
    Order router which manages and tracks per-broker dark book,
 | 
					    Order router which manages and tracks per-broker dark book,
 | 
				
			||||||
    alerts, clearing and related data feed management.
 | 
					    alerts, clearing and related data feed management.
 | 
				
			||||||
| 
						 | 
					@ -325,10 +325,6 @@ class Router(BaseModel):
 | 
				
			||||||
    # brokername to trades-dialogues streams with ``brokerd`` actors
 | 
					    # brokername to trades-dialogues streams with ``brokerd`` actors
 | 
				
			||||||
    relays: dict[str, TradesRelay] = {}
 | 
					    relays: dict[str, TradesRelay] = {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    class Config:
 | 
					 | 
				
			||||||
        arbitrary_types_allowed = True
 | 
					 | 
				
			||||||
        underscore_attrs_are_private = False
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def get_dark_book(
 | 
					    def get_dark_book(
 | 
				
			||||||
        self,
 | 
					        self,
 | 
				
			||||||
        brokername: str,
 | 
					        brokername: str,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -42,7 +42,6 @@ from trio_typing import TaskStatus
 | 
				
			||||||
import trimeter
 | 
					import trimeter
 | 
				
			||||||
import tractor
 | 
					import tractor
 | 
				
			||||||
from tractor.trionics import maybe_open_context
 | 
					from tractor.trionics import maybe_open_context
 | 
				
			||||||
from pydantic import BaseModel
 | 
					 | 
				
			||||||
import pendulum
 | 
					import pendulum
 | 
				
			||||||
import numpy as np
 | 
					import numpy as np
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -59,6 +58,7 @@ from ._sharedmem import (
 | 
				
			||||||
    ShmArray,
 | 
					    ShmArray,
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
from .ingest import get_ingestormod
 | 
					from .ingest import get_ingestormod
 | 
				
			||||||
 | 
					from .types import Struct
 | 
				
			||||||
from ._source import (
 | 
					from ._source import (
 | 
				
			||||||
    base_iohlc_dtype,
 | 
					    base_iohlc_dtype,
 | 
				
			||||||
    Symbol,
 | 
					    Symbol,
 | 
				
			||||||
| 
						 | 
					@ -84,7 +84,7 @@ if TYPE_CHECKING:
 | 
				
			||||||
log = get_logger(__name__)
 | 
					log = get_logger(__name__)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class _FeedsBus(BaseModel):
 | 
					class _FeedsBus(Struct):
 | 
				
			||||||
    '''
 | 
					    '''
 | 
				
			||||||
    Data feeds broadcaster and persistence management.
 | 
					    Data feeds broadcaster and persistence management.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -100,10 +100,6 @@ class _FeedsBus(BaseModel):
 | 
				
			||||||
          a dedicated cancel scope.
 | 
					          a dedicated cancel scope.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    '''
 | 
					    '''
 | 
				
			||||||
    class Config:
 | 
					 | 
				
			||||||
        arbitrary_types_allowed = True
 | 
					 | 
				
			||||||
        underscore_attrs_are_private = False
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    brokername: str
 | 
					    brokername: str
 | 
				
			||||||
    nursery: trio.Nursery
 | 
					    nursery: trio.Nursery
 | 
				
			||||||
    feeds: dict[str, tuple[dict, dict]] = {}
 | 
					    feeds: dict[str, tuple[dict, dict]] = {}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -21,7 +21,6 @@ Qt event proxying and processing using ``trio`` mem chans.
 | 
				
			||||||
from contextlib import asynccontextmanager, AsyncExitStack
 | 
					from contextlib import asynccontextmanager, AsyncExitStack
 | 
				
			||||||
from typing import Callable
 | 
					from typing import Callable
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from pydantic import BaseModel
 | 
					 | 
				
			||||||
import trio
 | 
					import trio
 | 
				
			||||||
from PyQt5 import QtCore
 | 
					from PyQt5 import QtCore
 | 
				
			||||||
from PyQt5.QtCore import QEvent, pyqtBoundSignal
 | 
					from PyQt5.QtCore import QEvent, pyqtBoundSignal
 | 
				
			||||||
| 
						 | 
					@ -30,6 +29,8 @@ from PyQt5.QtWidgets import (
 | 
				
			||||||
    QGraphicsSceneMouseEvent as gs_mouse,
 | 
					    QGraphicsSceneMouseEvent as gs_mouse,
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from ..data.types import Struct
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
MOUSE_EVENTS = {
 | 
					MOUSE_EVENTS = {
 | 
				
			||||||
    gs_mouse.GraphicsSceneMousePress,
 | 
					    gs_mouse.GraphicsSceneMousePress,
 | 
				
			||||||
| 
						 | 
					@ -43,13 +44,10 @@ MOUSE_EVENTS = {
 | 
				
			||||||
# TODO: maybe consider some constrained ints down the road?
 | 
					# TODO: maybe consider some constrained ints down the road?
 | 
				
			||||||
# https://pydantic-docs.helpmanual.io/usage/types/#constrained-types
 | 
					# https://pydantic-docs.helpmanual.io/usage/types/#constrained-types
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class KeyboardMsg(BaseModel):
 | 
					class KeyboardMsg(Struct):
 | 
				
			||||||
    '''Unpacked Qt keyboard event data.
 | 
					    '''Unpacked Qt keyboard event data.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    '''
 | 
					    '''
 | 
				
			||||||
    class Config:
 | 
					 | 
				
			||||||
        arbitrary_types_allowed = True
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    event: QEvent
 | 
					    event: QEvent
 | 
				
			||||||
    etype: int
 | 
					    etype: int
 | 
				
			||||||
    key: int
 | 
					    key: int
 | 
				
			||||||
| 
						 | 
					@ -57,16 +55,13 @@ class KeyboardMsg(BaseModel):
 | 
				
			||||||
    txt: str
 | 
					    txt: str
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def to_tuple(self) -> tuple:
 | 
					    def to_tuple(self) -> tuple:
 | 
				
			||||||
        return tuple(self.dict().values())
 | 
					        return tuple(self.to_dict().values())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class MouseMsg(BaseModel):
 | 
					class MouseMsg(Struct):
 | 
				
			||||||
    '''Unpacked Qt keyboard event data.
 | 
					    '''Unpacked Qt keyboard event data.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    '''
 | 
					    '''
 | 
				
			||||||
    class Config:
 | 
					 | 
				
			||||||
        arbitrary_types_allowed = True
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    event: QEvent
 | 
					    event: QEvent
 | 
				
			||||||
    etype: int
 | 
					    etype: int
 | 
				
			||||||
    button: int
 | 
					    button: int
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -22,12 +22,9 @@ from __future__ import annotations
 | 
				
			||||||
from typing import (
 | 
					from typing import (
 | 
				
			||||||
    Optional, Generic,
 | 
					    Optional, Generic,
 | 
				
			||||||
    TypeVar, Callable,
 | 
					    TypeVar, Callable,
 | 
				
			||||||
    Literal,
 | 
					 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
import enum
 | 
					 | 
				
			||||||
import sys
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
from pydantic import BaseModel, validator
 | 
					# from pydantic import BaseModel, validator
 | 
				
			||||||
from pydantic.generics import GenericModel
 | 
					from pydantic.generics import GenericModel
 | 
				
			||||||
from PyQt5.QtWidgets import (
 | 
					from PyQt5.QtWidgets import (
 | 
				
			||||||
    QWidget,
 | 
					    QWidget,
 | 
				
			||||||
| 
						 | 
					@ -38,6 +35,7 @@ from ._forms import (
 | 
				
			||||||
    # FontScaledDelegate,
 | 
					    # FontScaledDelegate,
 | 
				
			||||||
    Edit,
 | 
					    Edit,
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					from ..data.types import Struct
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DataType = TypeVar('DataType')
 | 
					DataType = TypeVar('DataType')
 | 
				
			||||||
| 
						 | 
					@ -62,7 +60,7 @@ class Selection(Field[DataType], Generic[DataType]):
 | 
				
			||||||
    options: dict[str, DataType]
 | 
					    options: dict[str, DataType]
 | 
				
			||||||
    # value: DataType = None
 | 
					    # value: DataType = None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @validator('value')  # , always=True)
 | 
					    # @validator('value')  # , always=True)
 | 
				
			||||||
    def set_value_first(
 | 
					    def set_value_first(
 | 
				
			||||||
        cls,
 | 
					        cls,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -100,7 +98,7 @@ class Edit(Field[DataType], Generic[DataType]):
 | 
				
			||||||
    widget_factory = Edit
 | 
					    widget_factory = Edit
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class AllocatorPane(BaseModel):
 | 
					class AllocatorPane(Struct):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    account = Selection[str](
 | 
					    account = Selection[str](
 | 
				
			||||||
        options=dict.fromkeys(
 | 
					        options=dict.fromkeys(
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -27,7 +27,6 @@ import time
 | 
				
			||||||
from typing import Optional, Dict, Callable, Any
 | 
					from typing import Optional, Dict, Callable, Any
 | 
				
			||||||
import uuid
 | 
					import uuid
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from pydantic import BaseModel
 | 
					 | 
				
			||||||
import tractor
 | 
					import tractor
 | 
				
			||||||
import trio
 | 
					import trio
 | 
				
			||||||
from PyQt5.QtCore import Qt
 | 
					from PyQt5.QtCore import Qt
 | 
				
			||||||
| 
						 | 
					@ -41,6 +40,7 @@ from ..clearing._allocate import (
 | 
				
			||||||
from ._style import _font
 | 
					from ._style import _font
 | 
				
			||||||
from ..data._source import Symbol
 | 
					from ..data._source import Symbol
 | 
				
			||||||
from ..data.feed import Feed
 | 
					from ..data.feed import Feed
 | 
				
			||||||
 | 
					from ..data.types import Struct
 | 
				
			||||||
from ..log import get_logger
 | 
					from ..log import get_logger
 | 
				
			||||||
from ._editors import LineEditor, ArrowEditor
 | 
					from ._editors import LineEditor, ArrowEditor
 | 
				
			||||||
from ._lines import order_line, LevelLine
 | 
					from ._lines import order_line, LevelLine
 | 
				
			||||||
| 
						 | 
					@ -58,7 +58,7 @@ from ._forms import open_form_input_handling
 | 
				
			||||||
log = get_logger(__name__)
 | 
					log = get_logger(__name__)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class OrderDialog(BaseModel):
 | 
					class OrderDialog(Struct):
 | 
				
			||||||
    '''
 | 
					    '''
 | 
				
			||||||
    Trade dialogue meta-data describing the lifetime
 | 
					    Trade dialogue meta-data describing the lifetime
 | 
				
			||||||
    of an order submission to ``emsd`` from a chart.
 | 
					    of an order submission to ``emsd`` from a chart.
 | 
				
			||||||
| 
						 | 
					@ -73,10 +73,6 @@ class OrderDialog(BaseModel):
 | 
				
			||||||
    msgs: dict[str, dict] = {}
 | 
					    msgs: dict[str, dict] = {}
 | 
				
			||||||
    fills: Dict[str, Any] = {}
 | 
					    fills: Dict[str, Any] = {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    class Config:
 | 
					 | 
				
			||||||
        arbitrary_types_allowed = True
 | 
					 | 
				
			||||||
        underscore_attrs_are_private = False
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
def on_level_change_update_next_order_info(
 | 
					def on_level_change_update_next_order_info(
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -858,7 +854,9 @@ async def process_trades_and_update_ui(
 | 
				
			||||||
            # delete level line from view
 | 
					            # delete level line from view
 | 
				
			||||||
            mode.on_cancel(oid)
 | 
					            mode.on_cancel(oid)
 | 
				
			||||||
            broker_msg = msg['brokerd_msg']
 | 
					            broker_msg = msg['brokerd_msg']
 | 
				
			||||||
            log.warning(f'Order {oid} failed with:\n{pformat(broker_msg)}')
 | 
					            log.warning(
 | 
				
			||||||
 | 
					                f'Order {oid} failed with:\n{pformat(broker_msg)}'
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        elif resp in (
 | 
					        elif resp in (
 | 
				
			||||||
            'dark_triggered'
 | 
					            'dark_triggered'
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue