Mosaik API for Python
This is an implementation of version 3 of the mosaik API for simulators written in Python. It hides all the messaging and networking related stuff and provides a simple base class that you can implement.
Installation
Just use pip to install it:
$ pip install mosaik-api-v3
Documentation
Please refer to mosaik’s documentation of the API.
Example Simulator
This distribution contains an example simulator in the example_sim package.
It can be started via the pyexamplesim command; pyexamplesim --help shows you how to use it.
It can also be run in-process by importing and calling example_sim.mosaik.main().
Example MAS
This distribution contains an example “multi-agent system” that uses the asyncronous remote calls to mosaik (get_progress(), get_related_entities(), get_data(), set_data()).
It can be started via the pyexamplemas command; pyexamplemas --help shows you how to use it.
It can also be run in-process by importing and calling example_mas.mosaik.main().
Development setup
To setup a devleopment environment, create a virtualenv and install the packages from requirements.txt:
$ mkvirtualenv --python=/usr/bin/python3 mosaik-api-python
(mosaik-api-python)$ pip install -r requirements.txt
To run the tests for the Python version you are currently using, execute py.test. You should also add the test coverage check:
(mosaik-api-python)$ py.test --cov=example_mas --cov=example_sim --cov=mosaik_api_v3
To run the tests for all supported Python versions, run tox:
(mosaik-api-python)$ tox
Mosaik’s documentation contains more details.
Changelog
3.0.16 - 2026-08-25
[FIX] Simulators using Python’s script entrypoint now work when used in a directory with spaces in the path.
3.0.15 - 2026-06-18
[CHANGE] Replace unmaintained docopt dependency by docopt-ng.
3.0.14 - 2025-10-07
[NEW] Introduce the run_as_client and run_as_server functions to run simulators as part of larger programs. Unlike start_simulation, these functions don’t provide their own command-line interface and take the necessary settings as parameters.
3.0.13 - 2024-12-11
[CHANGE] The finalize method is now called before the connection to mosaik is closed.
3.0.12 - 2024-08-19
[FIX] Remote exceptions occurring during calls to mosaik are now correctly reported to the calling simulator.
3.0.11 - 2024-07-17
[CHANGE] Set default logging level back to info
[NEW] configure_logging flag on start_simulation to control automatic logger setup
3.0.10 - 2024-05-17
[CHANGE] Simulators return a stacktrace to mosaik when running into an exception
[FIX] Type for ModelDescription was missing fields
3.0.9 - 2024-03-28
[CHANGE] We don’t overwrite the logging system in start_simulation anymore, except when the user explicitly sets –log-level on the command line. This also changed the default level to debug.
3.0.8 - 2024-03-25
[FIX] Enable yielding coroutines in finalize
3.0.7 - 2023-12-19
[FIX] Make example_sim’s meta legal
3.0.6 - 2023-12-13
[FIX] Close asyncio.StreamWriters properly
3.0.5 - 2023-11-08
[CHANGE] Improve typing support: package is marked with py.typed file, types are exported from mosaik_api_v3, Meta and CreateResult are split into optional and required fields
3.0.4 - 2023-08-31
[NEW] Use loguru for logging
[CHANGE] Remove simpy.io
3.0.3 - 2022-12-14
[NEW] Add datetime utility
3.0.2 - 2022-06-01
[CHANGE] Use internal mosaik-simpy-io>=0.2.4 instead of simpy.io
3.0.1 - 2022-04-22
[CHANGE] Set external events via highlevel function call
3.0.0 - 2021-05-02
[CHANGE] Added time_resolution to init function
[CHANGE] Added max_advance to step function
[NEW] Implemented set_events capability (external events)
2.4.2 - 2020-11-24
[FIX] Constrain simpy to version <4 due to simpy.io incompatibility
2.4 - 2019-02-05
[NEW] Simulator can now be started on a different node than mosaik, using the remote flag “-r” and the timeout flag “-t”. Mosaik can the integrate the simulator using the “connect” method of the simmanager.
2.3 – 2019-01-24
[BugFix] Bugfix Tests
2.2 – 2016-02-15
[NEW] API version 2.2: Added an optional “setup_done()” method.
[CHANGE] API version validation: The API version is no longer an integer but a “major.minor” string. The major part has to math with mosaiks major version. The minor part may be lower or equal to mosaik’s minor version.
[FIX] Various minor fixes and stability improvements.
2.1 – 2014-10-24
[NEW] Allow extra API methods to be called. See http://mosaik.readthedocs.org/en/2.0/mosaik-api/high-level.html#mosaik_api.Simulator
[CHANGE] The rel entry in the entity description returned by create() is now optional.
2.0 – 2014-09-22
Initial release of the mosaik 2 Sim API for Python.
Metadata
Release files for mosaik-api-v3 3.0.16
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| mosaik_api_v3-3.0.16.tar.gz | 17.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mosaik_api_v3-3.0.16-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 38.6 kB
Release files / mosaik_api_v3-3.0.16.tar.gz
| Download URL | mosaik_api_v3-3.0.16.tar.gz |
|---|---|
| Size | 17.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
64881fbe735fbd3db0601a971937806e2c8f4a852755c1f6c9b815812e011eb2
|
|
BLAKE2b-256 checksum How to use checksums |
3e9982efc6b309145ed80c4025f00b1e6af48b46dbd2fbb1a51f9844654f486c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.1 {"installer":{"name":"uv","version":"0.12.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / mosaik_api_v3-3.0.16-py3-none-any.whl
| Download URL | mosaik_api_v3-3.0.16-py3-none-any.whl |
|---|---|
| Size | 21.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b66a5550b2a52b11d2a5805a8e3adbbf78ca3629fe6e2132accda9844c7ab64d
|
|
BLAKE2b-256 checksum How to use checksums |
8e2b183f9f03e69b434af489982ca214877f44f6c9f5072342ef4357690ba4bb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.1 {"installer":{"name":"uv","version":"0.12.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|