Skill Tracer
Skills › Scientific Agent Skills › simpy › sources.md

sources.md

201 lines · skills/simpy/references/sources.md at 5f2bc03

Open on GitHub
1# Sources and verification record
2
3Current API/source/runtime review: **2026-10-01**, SimPy **4.1.2**, Python **3.13.3**.
4Official PyPI metadata still identifies 4.1.2 as the latest release. The 410,129-byte
5official source distribution and the cached installed release were inspected;
6core/event/resource/real-time signatures and implementation behavior agree.
7Versioned documentation is preferred over the moving `latest` build.
8
9The release and bibliographic notes below retain their original 2026-07-23 access
10dates where that historical review was not repeated. They are not fresh live-probe
11claims. On this refresh, the core/events/resources/rt/util/exceptions API pages,
12monitoring guide, and Law/L'Ecuyer/Sargent proceedings were opened directly.
13Several topical pages were inaccessible through the browser extraction tool;
14the corresponding official 4.1.2 sdist documentation/source supplied the fallback.

Sources and verification record

Current API/source/runtime review: 2026-10-01, SimPy 4.1.2, Python 3.13.3. Official PyPI metadata still identifies 4.1.2 as the latest release. The 410,129-byte official source distribution and the cached installed release were inspected; core/event/resource/real-time signatures and implementation behavior agree. Versioned documentation is preferred over the moving latest build.

The release and bibliographic notes below retain their original 2026-07-23 access dates where that historical review was not repeated. They are not fresh live-probe claims. On this refresh, the core/events/resources/rt/util/exceptions API pages, monitoring guide, and Law/L'Ecuyer/Sargent proceedings were opened directly. Several topical pages were inaccessible through the browser extraction tool; the corresponding official 4.1.2 sdist documentation/source supplied the fallback.

Raw lines 1 to 15
16## Current audit findings
18| Surface | Verified behavior / correction |
19|---|---|
20| `Environment(initial_time)`, `run`, `step`, `peek`, `schedule`, `now`, `active_process` | Queue minimum chosen at each step; callbacks can insert urgent same-time work. Numeric horizon excludes ordinary boundary events. Stop callback reschedules remaining callbacks at priority -1. |
21| `Event`, `Timeout`, `Process`, `AnyOf`, `AllOf`, `ConditionValue`, `Interrupt` | Values, failure propagation, conditions and interrupt lifecycle reproduced. `Event.trigger()` returns None despite an inconsistent prose docstring; `fail()` source accepts BaseException despite its Exception annotation. |
22| Resource/Priority/Preemptive, Request/Release, `Preempted`, Put/Get cancellation | Resource request key includes `(priority, time, not preempt)`; context exit cancels pending requests and releases acquired slots. |
23| Container/Store/FilterStore/PriorityStore/`PriorityItem` | Blocked requests wait; filtering can bypass earlier unmatched gets. PriorityStore is a heap and equal-priority items are not FIFO without an explicit tie-breaker. |
24| `RealtimeEnvironment`, `factor`, `strict`, `sync` | Mapping and lag check inspected in released `rt.py`. Constructor does not enforce positive finite factor. `sync` resets wall origin, not the initial simulation origin. |
25| Monitoring | Native deterministic checks cover urgent trace insertion, final time weighting, warm-up windows, cancellation, and monitor non-interference. |
26| Queue/replication helpers | Schema 1.2 counts throughput by window departures and loss by window arrivals; arrival-cohort completed customer means remain censored. Runtime version and metric definitions are recorded. |
28There are **no service/API endpoints, credentials, request bodies, pagination, or
29remote mutations** in these helpers. The URLs here are package documentation,
30source, and methodological references. Native discrete-event fixtures verify
31software mechanics, not a calibrated operational system. Real-time strict/sync
32unit checks use a controlled clock; a short wall-clock smoke is only a timing
33sanity check, not a hardware-in-the-loop performance claim.
35The isolated suite is under repository-level `tests/simpy/`. CLI round trips use
36tiny local JSON/JSONL/CSV files; no user data or live service was exercised.
37The complete minimal model in `SKILL.md` and ten CLI workflows were executed.
38All 46 Python documentation fragments parsed; context-dependent reference snippets
39are illustrative patterns, with representative behaviors exercised by the native
40suite rather than every fragment executed independently.

Current audit findings

SurfaceVerified behavior / correction
Environment(initial_time), run, step, peek, schedule, now, active_processQueue minimum chosen at each step; callbacks can insert urgent same-time work. Numeric horizon excludes ordinary boundary events. Stop callback reschedules remaining callbacks at priority -1.
Event, Timeout, Process, AnyOf, AllOf, ConditionValue, InterruptValues, failure propagation, conditions and interrupt lifecycle reproduced. Event.trigger() returns None despite an inconsistent prose docstring; fail() source accepts BaseException despite its Exception annotation.
Resource/Priority/Preemptive, Request/Release, Preempted, Put/Get cancellationResource request key includes (priority, time, not preempt); context exit cancels pending requests and releases acquired slots.
Container/Store/FilterStore/PriorityStore/PriorityItemBlocked requests wait; filtering can bypass earlier unmatched gets. PriorityStore is a heap and equal-priority items are not FIFO without an explicit tie-breaker.
RealtimeEnvironment, factor, strict, syncMapping and lag check inspected in released rt.py. Constructor does not enforce positive finite factor. sync resets wall origin, not the initial simulation origin.
MonitoringNative deterministic checks cover urgent trace insertion, final time weighting, warm-up windows, cancellation, and monitor non-interference.
Queue/replication helpersSchema 1.2 counts throughput by window departures and loss by window arrivals; arrival-cohort completed customer means remain censored. Runtime version and metric definitions are recorded.

There are no service/API endpoints, credentials, request bodies, pagination, or remote mutations in these helpers. The URLs here are package documentation, source, and methodological references. Native discrete-event fixtures verify software mechanics, not a calibrated operational system. Real-time strict/sync unit checks use a controlled clock; a short wall-clock smoke is only a timing sanity check, not a hardware-in-the-loop performance claim.

The isolated suite is under repository-level tests/simpy/. CLI round trips use tiny local JSON/JSONL/CSV files; no user data or live service was exercised. The complete minimal model in SKILL.md and ten CLI workflows were executed. All 46 Python documentation fragments parsed; context-dependent reference snippets are illustrative patterns, with representative behaviors exercised by the native suite rather than every fragment executed independently.

Raw lines 16 to 41
42## Release, packaging, and source
44- [SimPy on PyPI](https://pypi.org/project/simpy/) — **4.1.2**, released
45 **2026-05-24**; `Requires-Python >=3.8`; classifiers list Python 3.8-3.14,
46 CPython, and PyPy; MIT; no runtime dependencies. Verified 2026-07-23.
47- [GitLab source project](https://gitlab.com/team-simpy/simpy/) — canonical
48 repository, MIT license, tagged source, tests, and documentation. Accessed
49 2026-07-23.
50- [GitLab tag 4.1.2](https://gitlab.com/team-simpy/simpy/-/tags/4.1.2) —
51 protected/verified tag, commit `f43816490c6f76f336ad6e457d3cab9f386894af`,
52 dated **2026-05-24**.
53- [Tagged CHANGES.rst](https://gitlab.com/team-simpy/simpy/-/blob/4.1.2/CHANGES.rst)
54 — 4.1.2 entry dated **2026-05-23**: Python 3.13/3.14 support,
55 modern-interpreter test/doc fixes, `ConditionValue` explicitly unhashable,
56 lint/type cleanup.
57- [Tagged pyproject.toml](https://gitlab.com/team-simpy/simpy/-/blob/4.1.2/pyproject.toml)
58 — Python requirement/classifiers, no dependencies, setuptools build, pytest,
59 mypy, and ruff configuration. Dated 2026-05-23; accessed 2026-07-23.
60- [Tagged tox.ini](https://gitlab.com/team-simpy/simpy/-/blob/4.1.2/tox.ini) and
61 [tagged tests](https://gitlab.com/team-simpy/simpy/-/tree/4.1.2/tests) —
62 upstream test matrix and behavior tests. Accessed 2026-07-23.
63- [Tagged `simpy/core.py`](https://gitlab.com/team-simpy/simpy/-/blob/4.1.2/src/simpy/core.py)
64 — authoritative `Environment.run()`, `step()`, queue tuple, and
65 `StopSimulation` implementation. Accessed 2026-07-23.
67PyPI file hashes observed 2026-07-23:
69- wheel `simpy-4.1.2-py3-none-any.whl` SHA-256
70 `43071f84b6512c9b4fcb33ef057f240ccb1d1f3b263f9b4f9229d072e310b372`;
71- sdist `simpy-4.1.2.tar.gz` SHA-256
72 `76ef36b71e0436ba94e55febc001c78879e493a323f045bbcfbb0b216e9b1fbc`.
74Use the pinned package command in `SKILL.md`; hashes are recorded for provenance,
75not embedded into `uv pip install` syntax.

Release, packaging, and source

  • SimPy on PyPI — 4.1.2, released 2026-05-24; Requires-Python >=3.8; classifiers list Python 3.8-3.14, CPython, and PyPy; MIT; no runtime dependencies. Verified 2026-07-23.
  • GitLab source project — canonical repository, MIT license, tagged source, tests, and documentation. Accessed 2026-07-23.
  • GitLab tag 4.1.2 — protected/verified tag, commit f43816490c6f76f336ad6e457d3cab9f386894af, dated 2026-05-24.
  • Tagged CHANGES.rst — 4.1.2 entry dated 2026-05-23: Python 3.13/3.14 support, modern-interpreter test/doc fixes, ConditionValue explicitly unhashable, lint/type cleanup.
  • Tagged pyproject.toml — Python requirement/classifiers, no dependencies, setuptools build, pytest, mypy, and ruff configuration. Dated 2026-05-23; accessed 2026-07-23.
  • Tagged tox.ini and tagged tests — upstream test matrix and behavior tests. Accessed 2026-07-23.
  • [Tagged simpy/core.py](https://gitlab.com/team-simpy/simpy/-/blob/4.1.2/src/simpy/core.py) — authoritative Environment.run(), step(), queue tuple, and StopSimulation implementation. Accessed 2026-07-23.

PyPI file hashes observed 2026-07-23:

  • wheel simpy-4.1.2-py3-none-any.whl SHA-256 43071f84b6512c9b4fcb33ef057f240ccb1d1f3b263f9b4f9229d072e310b372;
  • sdist simpy-4.1.2.tar.gz SHA-256 76ef36b71e0436ba94e55febc001c78879e493a323f045bbcfbb0b216e9b1fbc.

Use the pinned package command in SKILL.md; hashes are recorded for provenance, not embedded into uv pip install syntax.

Raw lines 42 to 76
77## Official SimPy 4.1.2 documentation

Official SimPy 4.1.2 documentation

Raw lines 77 to 78
79### Entry points
81- [4.1.2 documentation contents](https://simpy.readthedocs.io/en/4.1.2/contents.html)
82- [4.1.2 tutorial](https://simpy.readthedocs.io/en/4.1.2/simpy_intro/index.html)
83- [4.1.2 topical guides](https://simpy.readthedocs.io/en/4.1.2/topical_guides/index.html)
84- [4.1.2 examples](https://simpy.readthedocs.io/en/4.1.2/examples/index.html)
85- [4.1.2 API reference](https://simpy.readthedocs.io/en/4.1.2/api_reference/index.html)
86- [history/change log](https://simpy.readthedocs.io/en/4.1.2/about/history.html)
87- [license](https://simpy.readthedocs.io/en/4.1.2/about/license.html)
89All accessed 2026-07-23. The examples index covers condition events, interrupts,
90Resource, PreemptiveResource, Container, Store, shared events, and process waiting.

Entry points

All accessed 2026-07-23. The examples index covers condition events, interrupts, Resource, PreemptiveResource, Container, Store, shared events, and process waiting.

Raw lines 79 to 91
92### Core topical guides
94- [SimPy basics](https://simpy.readthedocs.io/en/4.1.2/topical_guides/simpy_basics.html)
95- [Environments](https://simpy.readthedocs.io/en/4.1.2/topical_guides/environments.html)
96- [Events](https://simpy.readthedocs.io/en/4.1.2/topical_guides/events.html)
97- [Process Interaction](https://simpy.readthedocs.io/en/4.1.2/topical_guides/process_interaction.html)
98- [Shared Resources](https://simpy.readthedocs.io/en/4.1.2/topical_guides/resources.html)
99- [Monitoring](https://simpy.readthedocs.io/en/4.1.2/topical_guides/monitoring.html)
100- [Time and Scheduling](https://simpy.readthedocs.io/en/4.1.2/topical_guides/time_and_scheduling.html)
101- [Real-time simulations](https://simpy.readthedocs.io/en/4.1.2/topical_guides/real-time-simulations.html)
103All accessed 2026-07-23.
105### API pages
107- [`simpy.core`](https://simpy.readthedocs.io/en/4.1.2/api_reference/simpy.core.html)
108 — `Environment`, `run`, `schedule`, `peek`, `step`, `EmptySchedule`.
109- [`simpy.events`](https://simpy.readthedocs.io/en/4.1.2/api_reference/simpy.events.html)
110 — `Event`, `Timeout`, `Process`, `Condition`, `AnyOf`, `AllOf`, priorities.
111- [`simpy.exceptions`](https://simpy.readthedocs.io/en/4.1.2/api_reference/simpy.exceptions.html)
112 — `Interrupt`.
113- [`simpy.resources`](https://simpy.readthedocs.io/en/4.1.2/api_reference/simpy.resources.html)
114 — Resource/Priority/Preemptive, Container, Store/Filter/Priority, base events.
115- [`simpy.rt`](https://simpy.readthedocs.io/en/4.1.2/api_reference/simpy.rt.html)
116 — `RealtimeEnvironment`.
117- [`simpy.util`](https://simpy.readthedocs.io/en/4.1.2/api_reference/simpy.util.html)
118 — helper processes.
120All accessed 2026-07-23.

API pages

  • [simpy.core](https://simpy.readthedocs.io/en/4.1.2/api_reference/simpy.core.html) — Environment, run, schedule, peek, step, EmptySchedule.
  • [simpy.events](https://simpy.readthedocs.io/en/4.1.2/api_reference/simpy.events.html) — Event, Timeout, Process, Condition, AnyOf, AllOf, priorities.
  • [simpy.exceptions](https://simpy.readthedocs.io/en/4.1.2/api_reference/simpy.exceptions.html) — Interrupt.
  • [simpy.resources](https://simpy.readthedocs.io/en/4.1.2/api_reference/simpy.resources.html) — Resource/Priority/Preemptive, Container, Store/Filter/Priority, base events.
  • [simpy.rt](https://simpy.readthedocs.io/en/4.1.2/api_reference/simpy.rt.html) — RealtimeEnvironment.
  • [simpy.util](https://simpy.readthedocs.io/en/4.1.2/api_reference/simpy.util.html) — helper processes.

All accessed 2026-07-23.

Raw lines 105 to 121
122## Source-level semantic finding
124The 4.1.2 Environments topical guide informally says Event-based `run()` returns
125when the Event has been processed. The 4.1.2 API docstring says "triggered."
126Tagged `core.py` is decisive:
128- `run(until=event)` appends `StopSimulation.callback`;
129- `step()` sets callbacks to `None`, executes them, catches `StopSimulation`,
130 restores callbacks remaining after the stopping callback, and reschedules that
131 Event at priority `-1`.
133Therefore the target value can be returned while `target.processed` is still false,
134until one more step processes the rescheduled empty-callback Event. This was
135reproduced under the exact PyPI 4.1.2 wheel on Python 3.13 and is covered by
136the repository-level `tests/simpy/test_scripts.py`.
138Numeric `run(until=time)` creates an urgent internal stop Event, so normal Events at
139that exact time are excluded. This was verified from both tagged source and runtime
140tests.

Source-level semantic finding

The 4.1.2 Environments topical guide informally says Event-based run() returns when the Event has been processed. The 4.1.2 API docstring says "triggered." Tagged core.py is decisive:

  • run(until=event) appends StopSimulation.callback;
  • step() sets callbacks to None, executes them, catches StopSimulation, restores callbacks remaining after the stopping callback, and reschedules that Event at priority -1.

Therefore the target value can be returned while target.processed is still false, until one more step processes the rescheduled empty-callback Event. This was reproduced under the exact PyPI 4.1.2 wheel on Python 3.13 and is covered by the repository-level tests/simpy/test_scripts.py.

Numeric run(until=time) creates an urgent internal stop Event, so normal Events at that exact time are excluded. This was verified from both tagged source and runtime tests.

Raw lines 122 to 141
142## Primary simulation-method sources
144These sources describe simulation-study design and output analysis. They are not
145SimPy API documentation.
147- Averill M. Law, ["Statistical Analysis of Simulation Output Data"](https://informs-sim.org/wsc20papers/134.pdf),
148 *Proceedings of the 2020 Winter Simulation Conference*, 2020. Defines
149 terminating/nonterminating analyses; independent replications;
150 replication/deletion; warm-up/run length; Student-t intervals; and warns against
151 naive single-run IID intervals. Accessed 2026-07-23.
152- Pierre L'Ecuyer, ["Random Number Generation with Multiple Streams for Sequential and Parallel Computing"](https://informs-sim.org/wsc15papers/003.pdf),
153 *Proceedings of the 2015 Winter Simulation Conference*, 2015,
154 DOI `10.1109/WSC.2015.7408151`. Covers streams/substreams, one stream per random
155 source, replication separation, common random numbers, testing, and exact
156 reproducibility. Accessed 2026-07-23.
157- Robert G. Sargent, ["Verification and Validation of Simulation Models"](https://www.informs-sim.org/wsc10papers/016.pdf),
158 *Proceedings of the 2010 Winter Simulation Conference*, 2010. Defines model
159 verification, conceptual/data/operational validity, intended-purpose/domain
160 framing, sensitivity analysis, and validation evidence. Accessed 2026-07-23.
161- Stewart Robinson, ["Conceptual Modelling for Simulation Part I: Definition and Requirements"](https://doi.org/10.1057/palgrave.jors.2602368),
162 *Journal of the Operational Research Society* 59, 278-290, 2008. Identifies
163 validity, credibility, utility, feasibility, and simplest-adequate-model
164 requirements. Publisher page accessed 2026-07-23.
165- Lee W. Schruben, ["Detecting Initialization Bias in Simulation Output"](https://doi.org/10.1287/opre.30.3.569),
166 *Operations Research* 30(3), 569-590, **June 1982**. Original initialization-bias
167 testing method. Metadata/abstract verified via
168 [IDEAS/RePEc](https://ideas.repec.org/a/inm/oropre/v30y1982i3p569-590.html)
169 on 2026-07-23.
170- Stewart Robinson, ["A Statistical Process Control Approach to Selecting a Warm-up Period for a Discrete-event Simulation"](https://ideas.repec.org/a/eee/ejores/v176y2007i1p332-346.html),
171 *European Journal of Operational Research* 176(1), 332-346, **January 2007**.
172 Accessed 2026-07-23.
173- Kathryn Hoad, Stewart Robinson, Ruth Davies,
174 ["Automated Selection of the Number of Replications for a Discrete-event Simulation"](https://doi.org/10.1057/jors.2009.121),
175 *Journal of the Operational Research Society* 61(11), 1632-1644,
176 **November 2010**. Replication-count/precision methodology; metadata verified
177 2026-07-23.
178- Thomas Monks et al.,
179 ["Strengthening the Reporting of Empirical Simulation Studies: Introducing the STRESS Guidelines"](https://doi.org/10.1080/17477778.2018.1442155),
180 *Journal of Simulation*, 2018/2019 publication record. Reporting checklists for
181 objectives, logic, data, experimentation, implementation, and code access.
182 [EQUATOR record](https://www.equator-network.org/reporting-guidelines/strengthening-the-reporting-of-empirical-simulation-studies-introducing-the-stress-guidelines/)
183 last updated 2021-11-19; both accessed 2026-07-23.
184- Averill M. Law and W. David Kelton,
185 ["Confidence Intervals for Steady-State Simulations: I. A Survey of Fixed Sample Size Procedures"](https://doi.org/10.1287/opre.32.6.1221),
186 *Operations Research* 32(6), 1221-1239, **December 1984**. Surveys replication,
187 batch means, autoregressive, spectral, and regenerative fixed-run methods and
188 cautions that adequate run length is model-dependent. Accessed 2026-07-23.

Primary simulation-method sources

These sources describe simulation-study design and output analysis. They are not SimPy API documentation.

Raw lines 142 to 189
190## Research queries used
192Parallel searches/extractions covered:
194- latest SimPy stable version, Python support, PyPI files, GitLab tags/changelog;
195- Environment/Event/Process/Timeout/Condition and scheduling;
196- all Resource, Container, and Store variants;
197- interrupts, monitoring, stepping, real-time, examples, API, and testing config;
198- independent replications, confidence intervals, warm-up/transient bias,
199 random streams, conceptual modeling, V&V, sensitivity, and reproducibility.
201No Parallel JSON artifacts were written into the repository.

Research queries used

Parallel searches/extractions covered:

  • latest SimPy stable version, Python support, PyPI files, GitLab tags/changelog;
  • Environment/Event/Process/Timeout/Condition and scheduling;
  • all Resource, Container, and Store variants;
  • interrupts, monitoring, stepping, real-time, examples, API, and testing config;
  • independent replications, confidence intervals, warm-up/transient bias, random streams, conceptual modeling, V&V, sensitivity, and reproducibility.

No Parallel JSON artifacts were written into the repository.

Raw lines 190 to 201