Skip to content

Commit c1833a0

Browse files
committed
Add pyo3 enum conversion functions
1 parent 4becfeb commit c1833a0

File tree

3 files changed

+14
-1
lines changed

3 files changed

+14
-1
lines changed

nautilus_trader/model/functions.pxd

+1
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@ cpdef str trailing_offset_type_to_str(TrailingOffsetType value)
120120
cpdef TriggerType trigger_type_from_str(str value)
121121
cpdef str trigger_type_to_str(TriggerType value)
122122

123+
cpdef order_side_to_pyo3(OrderSide value)
123124
cpdef order_type_to_pyo3(OrderType value)
124125
cpdef order_status_to_pyo3(OrderStatus value)
125126
cpdef time_in_force_to_pyo3(TimeInForce value)

nautilus_trader/model/functions.pyx

+11
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,17 @@ cpdef str trigger_type_to_str(TriggerType value):
281281
return cstr_to_pystr(trigger_type_to_cstr(value))
282282

283283

284+
cpdef order_side_to_pyo3(OrderSide value):
285+
if value == OrderSide.BUY:
286+
return nautilus_pyo3.OrderSide.BUY
287+
if value == OrderSide.SELL:
288+
return nautilus_pyo3.OrderSide.SELL
289+
if value == OrderSide.NO_ORDER_SIDE:
290+
return nautilus_pyo3.OrderSide.NO_ORDER_SIDE
291+
292+
raise ValueError(f"Unsupported `OrderSide`, was '{order_side_to_str(value)}'")
293+
294+
284295
cpdef order_type_to_pyo3(OrderType value):
285296
if value == OrderType.MARKET:
286297
return nautilus_pyo3.OrderType.MARKET

nautilus_trader/model/orders/base.pyx

+2-1
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ from nautilus_trader.model.events.order cimport OrderSubmitted
4848
from nautilus_trader.model.events.order cimport OrderTriggered
4949
from nautilus_trader.model.events.order cimport OrderUpdated
5050
from nautilus_trader.model.functions cimport contingency_type_to_str
51+
from nautilus_trader.model.functions cimport order_side_to_pyo3
5152
from nautilus_trader.model.functions cimport order_side_to_str
5253
from nautilus_trader.model.functions cimport order_status_to_pyo3
5354
from nautilus_trader.model.functions cimport order_type_to_pyo3
@@ -449,7 +450,7 @@ cdef class Order:
449450
trader_id=nautilus_pyo3.TraderId(self.trader_id.value),
450451
client_order_id=nautilus_pyo3.ClientOrderId(self.client_order_id.value),
451452
venue_order_id=nautilus_pyo3.VenueOrderId(self.venue_order_id.value) if self.venue_order_id else None,
452-
side=nautilus_pyo3.OrderSide.BUY if self.side == OrderSide.BUY else nautilus_pyo3.OrderSide.SELL,
453+
side=order_side_to_pyo3(self.side),
453454
price=nautilus_pyo3.Price(price.as_f64_c(), price._mem.precision),
454455
size=nautilus_pyo3.Quantity(self.leaves_qty.as_f64_c(), self.leaves_qty._mem.precision),
455456
order_type=order_type_to_pyo3(self.order_type),

0 commit comments

Comments
 (0)