nautilus_common/python/
fifo.rs1use pyo3::prelude::*;
19
20use crate::cache::fifo::FifoCache;
21
22#[pyo3::pyclass(name = "FifoCache", module = "nautilus_trader.common")]
23#[pyo3_stub_gen::derive::gen_stub_pyclass(module = "nautilus_trader.common")]
24#[derive(Debug)]
25pub struct PyFifoCache {
26 inner: FifoCache<String, 10_000>,
27}
28
29#[pymethods]
30#[pyo3_stub_gen::derive::gen_stub_pymethods]
31impl PyFifoCache {
32 #[new]
33 fn py_new() -> Self {
34 Self {
35 inner: FifoCache::new(),
36 }
37 }
38
39 fn __repr__(&self) -> String {
40 format!(
41 "FifoCache(capacity={}, len={})",
42 self.inner.capacity(),
43 self.inner.len()
44 )
45 }
46
47 #[getter]
48 fn capacity(&self) -> usize {
49 self.inner.capacity()
50 }
51
52 fn __len__(&self) -> usize {
53 self.inner.len()
54 }
55
56 #[expect(clippy::needless_pass_by_value)]
57 fn __contains__(&self, key: String) -> bool {
58 self.inner.contains(&key)
59 }
60
61 fn add(&mut self, key: String) {
62 self.inner.add(key);
63 }
64
65 #[expect(clippy::needless_pass_by_value)]
66 fn remove(&mut self, key: String) {
67 self.inner.remove(&key);
68 }
69
70 fn clear(&mut self) {
71 self.inner.clear();
72 }
73}