Skip to main content

UPSTAGE

UPSTAGE is a Universal Platform for Simulating Tasks and Actors with Graphs and Events built atop SimPy 4.

✨ Try it in your browser ✨

➡️ https://gtri.github.io/upstage/demo

What is UPSTAGE for?

UPSTAGE is a Python framework for creating robust, behavior-driven Discrete Event Simulations (DES). The primary goal of UPSTAGE is to enable the quick creation of simulations at any desired level of abstraction with built-in data recording, simulation integrity and runtime checks, and assistance for the usual pitfalls in custom discrete-event simulation: interrupts and cancellations. It is designed is to simplify the development process for simulation models of complex systems of systems.

UPSTAGE leverages the extensible SimPy library and adds two concepts to accelerate the generation of complex discrete-event simulations.

  1. Actor - i.e., an entity that has State
  2. Task - i.e., actions actors can perform and that can be organized into a TaskNetwork.

Actors can have multiple networks running on them, their states can be shared, and there are features for interactions between task networks running on the same actor. Those tasks modify the states on their actor, with features for real-time states that update on request without requiring time-stepping or modifying the existing events.

image

Additional features include:

  1. Context-aware EnvironmentContext, accessed via UpstageBase, enabling thread-safe simulation globals for the Stage and Named Entities (see below).
  2. Active States (e.g.,LinearChangingState) represent continuous-time attributes of actors that can be queried at discrete points in time, or trigger events when they reach a certain level.
  3. Spatial-aware data types (e.g., CartesianLocation) and states like the waypoint-following GeodeticLocationChangingState.
  4. Geodetic and cartesian positions, distances, and motion - with ranged sensing.
  5. NamedEntity in a thread-safe global context, enabling easier "director" logic creation with less argument passing in your code
  6. The Stage: a global context variable for simulation properties and attributes. This enables under-the-hood coordination of motion, geography, and other features.
  7. Rehearsal: Write planning and simulation code in one place only, and "rehearse" an actor through a task network using planning factors to discover task feasibility before the actor attempts to complete the task.
  8. All States are recordable, and some record dataclass and dictionary values
  9. A Routine class for building reusable event behaviors to simplify Task coding.
  10. Point-To-Point and Routing Table communications handlers.
  11. Numerous runtime checks and error handling for typical DES pitfalls: based on more than a decade of custom DES-building experience.
  12. And more!

See the documentation for tutorials and details.

Requirements

UPSTAGE only requires Python 3.11+ and Simpy 4+.

Installation

In an environment (Python 3.11+) of your choice:

pip install upstage-des

Documentation

See the documentation for tutorials and additional details.

How do I contribute or set up a develpment environment?

See CONTRIBUTING for instructions on setting up an environment and contributing.

For information on how to style your code, see the Style Guide.

Metadata

Release files for upstage-des 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for upstage-des 0.4.0
File Size Uploaded
upstage_des-0.4.0.tar.gz 152.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for upstage-des 0.4.0
File Interpreter ABI Platform
upstage_des-0.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 353.6 kB

Release files / upstage_des-0.4.0.tar.gz

Download URL upstage_des-0.4.0.tar.gz
Size 152.9 kB
Tags Source
SHA-256 checksum
How to use checksums
7467b69c3c6ee0089780c4584a57bbebd434db7141e414ac4ba9c299745e8c32
BLAKE2b-256 checksum
How to use checksums
f633a5b6d96426d6c9b5f3159e9be9adf8d52099a8d4c5e7b75697d283b49ce2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2025.

Transparency log

Release files / upstage_des-0.4.0-py3-none-any.whl

Download URL upstage_des-0.4.0-py3-none-any.whl
Size 200.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b4ca0f0a55e530521620a127a8464e1316fb926d616ab09ba7f2320f738361d9
BLAKE2b-256 checksum
How to use checksums
018709f15846453034140df241d759e7d5fb4bf6204e8bc1566f428bd0d61f58
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

0.4.0 This release

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page