NeXosim-py
NeXosim-py is a python interface for the NeXosim simulation server.
The library provides:
- an interface to control and monitor simulations over HTTP/2 or unix domain sockets,
- an API for the (de)serialization of Rust types,
asynciosupport.
Compatibility
| NeXosim-Py | NeXosim |
|---|---|
| 0.1.0 | >=0.3.2 <0.4.0 |
| 0.2.x | 1.0.0 |
Supported python versions: 3.11, 3.12, 3.13, 3.14
Installation
To install the package, use pip:
Example
Here's a minimal example with a simple server implementation:
use std::error::Error;
use nexosim::model::Model;
use nexosim::ports::{EventSource, Output, SinkState, event_queue_endpoint};
use nexosim::server;
use nexosim::simulation::{Mailbox, SimInit};
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, Default)]
pub(crate) struct AddOne {
pub(crate) output: Output<u16>,
}
#[Model]
impl AddOne {
pub async fn input(&mut self, value: u16) {
self.output.send(value + 1).await;
}
}
fn bench(_cfg: ()) -> Result<SimInit, Box<dyn Error>> {
let mut model = AddOne::default();
let model_mbox = Mailbox::new();
let mut bench = SimInit::new();
let output = event_queue_endpoint(&mut bench, SinkState::Enabled, "add_1_output")?;
model.output.connect_sink(output);
EventSource::new()
.connect(AddOne::input, &model_mbox)
.bind_endpoint(&mut bench, "add_1_input")?;
Ok(bench.add_model(model, model_mbox, "Adder"))
}
fn main() {
server::run(bench, "0.0.0.0:41633".parse().unwrap()).unwrap();
}
Learn more
-
The user guide contains information on general usage of the interface. If you are new to NeXosim-py, we recommend you start here.
-
A detailed description of the NeXosim-py API can be found here.