asimpy 0.4.1__tar.gz → 0.5.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (161) hide show
  1. {asimpy-0.4.1 → asimpy-0.5.0}/.gitignore +1 -0
  2. {asimpy-0.4.1 → asimpy-0.5.0}/PKG-INFO +2 -15
  3. {asimpy-0.4.1 → asimpy-0.5.0}/README.md +1 -3
  4. {asimpy-0.4.1 → asimpy-0.5.0}/docs/index.html +1 -2
  5. asimpy-0.5.0/docs/objects.inv +0 -0
  6. {asimpy-0.4.1 → asimpy-0.5.0}/docs/reference/allof/index.html +1 -1
  7. {asimpy-0.4.1 → asimpy-0.5.0}/docs/reference/barrier/index.html +1 -1
  8. {asimpy-0.4.1 → asimpy-0.5.0}/docs/reference/environment/index.html +135 -0
  9. {asimpy-0.4.1 → asimpy-0.5.0}/docs/reference/event/index.html +69 -25
  10. {asimpy-0.4.1 → asimpy-0.5.0}/docs/reference/firstof/index.html +1 -1
  11. {asimpy-0.4.1 → asimpy-0.5.0}/docs/reference/process/index.html +1 -1
  12. {asimpy-0.4.1 → asimpy-0.5.0}/docs/reference/resource/index.html +1 -1
  13. {asimpy-0.4.1 → asimpy-0.5.0}/docs/reference/simqueue/index.html +110 -13
  14. {asimpy-0.4.1 → asimpy-0.5.0}/docs/reference/timeout/index.html +16 -4
  15. {asimpy-0.4.1 → asimpy-0.5.0}/docs/sitemap.xml.gz +0 -0
  16. {asimpy-0.4.1 → asimpy-0.5.0}/pyproject.toml +23 -30
  17. {asimpy-0.4.1 → asimpy-0.5.0}/src/asimpy/environment.py +6 -2
  18. {asimpy-0.4.1 → asimpy-0.5.0}/src/asimpy/event.py +4 -0
  19. {asimpy-0.4.1 → asimpy-0.5.0}/src/asimpy/simqueue.py +13 -0
  20. {asimpy-0.4.1 → asimpy-0.5.0}/src/asimpy/timeout.py +8 -2
  21. asimpy-0.5.0/tests/test_allof.py +63 -0
  22. asimpy-0.5.0/tests/test_barrier.py +74 -0
  23. asimpy-0.5.0/tests/test_complex.py +64 -0
  24. asimpy-0.5.0/tests/test_environment.py +93 -0
  25. asimpy-0.5.0/tests/test_event.py +110 -0
  26. asimpy-0.5.0/tests/test_firstof.py +56 -0
  27. asimpy-0.5.0/tests/test_interrupt.py +21 -0
  28. asimpy-0.5.0/tests/test_priqueue.py +56 -0
  29. asimpy-0.5.0/tests/test_process.py +166 -0
  30. asimpy-0.5.0/tests/test_queue.py +129 -0
  31. asimpy-0.5.0/tests/test_resource.py +117 -0
  32. asimpy-0.5.0/tests/test_timeout.py +58 -0
  33. {asimpy-0.4.1 → asimpy-0.5.0}/uv.lock +229 -117
  34. asimpy-0.4.1/docs/objects.inv +0 -0
  35. {asimpy-0.4.1 → asimpy-0.5.0}/.readthedocs.yaml +0 -0
  36. {asimpy-0.4.1 → asimpy-0.5.0}/CODE_OF_CONDUCT.md +0 -0
  37. {asimpy-0.4.1 → asimpy-0.5.0}/CONTRIBUTING.md +0 -0
  38. {asimpy-0.4.1 → asimpy-0.5.0}/LICENSE.md +0 -0
  39. {asimpy-0.4.1 → asimpy-0.5.0}/docs/.nojekyll +0 -0
  40. {asimpy-0.4.1 → asimpy-0.5.0}/docs/404.html +0 -0
  41. {asimpy-0.4.1 → asimpy-0.5.0}/docs/assets/_mkdocstrings.css +0 -0
  42. {asimpy-0.4.1 → asimpy-0.5.0}/docs/assets/images/favicon.png +0 -0
  43. {asimpy-0.4.1 → asimpy-0.5.0}/docs/assets/javascripts/bundle.79ae519e.min.js +0 -0
  44. {asimpy-0.4.1 → asimpy-0.5.0}/docs/assets/javascripts/bundle.79ae519e.min.js.map +0 -0
  45. {asimpy-0.4.1 → asimpy-0.5.0}/docs/assets/javascripts/lunr/min/lunr.ar.min.js +0 -0
  46. {asimpy-0.4.1 → asimpy-0.5.0}/docs/assets/javascripts/lunr/min/lunr.da.min.js +0 -0
  47. {asimpy-0.4.1 → asimpy-0.5.0}/docs/assets/javascripts/lunr/min/lunr.de.min.js +0 -0
  48. {asimpy-0.4.1 → asimpy-0.5.0}/docs/assets/javascripts/lunr/min/lunr.du.min.js +0 -0
  49. {asimpy-0.4.1 → asimpy-0.5.0}/docs/assets/javascripts/lunr/min/lunr.el.min.js +0 -0
  50. {asimpy-0.4.1 → asimpy-0.5.0}/docs/assets/javascripts/lunr/min/lunr.es.min.js +0 -0
  51. {asimpy-0.4.1 → asimpy-0.5.0}/docs/assets/javascripts/lunr/min/lunr.fi.min.js +0 -0
  52. {asimpy-0.4.1 → asimpy-0.5.0}/docs/assets/javascripts/lunr/min/lunr.fr.min.js +0 -0
  53. {asimpy-0.4.1 → asimpy-0.5.0}/docs/assets/javascripts/lunr/min/lunr.he.min.js +0 -0
  54. {asimpy-0.4.1 → asimpy-0.5.0}/docs/assets/javascripts/lunr/min/lunr.hi.min.js +0 -0
  55. {asimpy-0.4.1 → asimpy-0.5.0}/docs/assets/javascripts/lunr/min/lunr.hu.min.js +0 -0
  56. {asimpy-0.4.1 → asimpy-0.5.0}/docs/assets/javascripts/lunr/min/lunr.hy.min.js +0 -0
  57. {asimpy-0.4.1 → asimpy-0.5.0}/docs/assets/javascripts/lunr/min/lunr.it.min.js +0 -0
  58. {asimpy-0.4.1 → asimpy-0.5.0}/docs/assets/javascripts/lunr/min/lunr.ja.min.js +0 -0
  59. {asimpy-0.4.1 → asimpy-0.5.0}/docs/assets/javascripts/lunr/min/lunr.jp.min.js +0 -0
  60. {asimpy-0.4.1 → asimpy-0.5.0}/docs/assets/javascripts/lunr/min/lunr.kn.min.js +0 -0
  61. {asimpy-0.4.1 → asimpy-0.5.0}/docs/assets/javascripts/lunr/min/lunr.ko.min.js +0 -0
  62. {asimpy-0.4.1 → asimpy-0.5.0}/docs/assets/javascripts/lunr/min/lunr.multi.min.js +0 -0
  63. {asimpy-0.4.1 → asimpy-0.5.0}/docs/assets/javascripts/lunr/min/lunr.nl.min.js +0 -0
  64. {asimpy-0.4.1 → asimpy-0.5.0}/docs/assets/javascripts/lunr/min/lunr.no.min.js +0 -0
  65. {asimpy-0.4.1 → asimpy-0.5.0}/docs/assets/javascripts/lunr/min/lunr.pt.min.js +0 -0
  66. {asimpy-0.4.1 → asimpy-0.5.0}/docs/assets/javascripts/lunr/min/lunr.ro.min.js +0 -0
  67. {asimpy-0.4.1 → asimpy-0.5.0}/docs/assets/javascripts/lunr/min/lunr.ru.min.js +0 -0
  68. {asimpy-0.4.1 → asimpy-0.5.0}/docs/assets/javascripts/lunr/min/lunr.sa.min.js +0 -0
  69. {asimpy-0.4.1 → asimpy-0.5.0}/docs/assets/javascripts/lunr/min/lunr.stemmer.support.min.js +0 -0
  70. {asimpy-0.4.1 → asimpy-0.5.0}/docs/assets/javascripts/lunr/min/lunr.sv.min.js +0 -0
  71. {asimpy-0.4.1 → asimpy-0.5.0}/docs/assets/javascripts/lunr/min/lunr.ta.min.js +0 -0
  72. {asimpy-0.4.1 → asimpy-0.5.0}/docs/assets/javascripts/lunr/min/lunr.te.min.js +0 -0
  73. {asimpy-0.4.1 → asimpy-0.5.0}/docs/assets/javascripts/lunr/min/lunr.th.min.js +0 -0
  74. {asimpy-0.4.1 → asimpy-0.5.0}/docs/assets/javascripts/lunr/min/lunr.tr.min.js +0 -0
  75. {asimpy-0.4.1 → asimpy-0.5.0}/docs/assets/javascripts/lunr/min/lunr.vi.min.js +0 -0
  76. {asimpy-0.4.1 → asimpy-0.5.0}/docs/assets/javascripts/lunr/min/lunr.zh.min.js +0 -0
  77. {asimpy-0.4.1 → asimpy-0.5.0}/docs/assets/javascripts/lunr/tinyseg.js +0 -0
  78. {asimpy-0.4.1 → asimpy-0.5.0}/docs/assets/javascripts/lunr/wordcut.js +0 -0
  79. {asimpy-0.4.1 → asimpy-0.5.0}/docs/assets/javascripts/workers/search.2c215733.min.js +0 -0
  80. {asimpy-0.4.1 → asimpy-0.5.0}/docs/assets/javascripts/workers/search.2c215733.min.js.map +0 -0
  81. {asimpy-0.4.1 → asimpy-0.5.0}/docs/assets/stylesheets/main.484c7ddc.min.css +0 -0
  82. {asimpy-0.4.1 → asimpy-0.5.0}/docs/assets/stylesheets/main.484c7ddc.min.css.map +0 -0
  83. {asimpy-0.4.1 → asimpy-0.5.0}/docs/assets/stylesheets/palette.ab4e12ef.min.css +0 -0
  84. {asimpy-0.4.1 → asimpy-0.5.0}/docs/assets/stylesheets/palette.ab4e12ef.min.css.map +0 -0
  85. {asimpy-0.4.1 → asimpy-0.5.0}/docs/conduct/index.html +0 -0
  86. {asimpy-0.4.1 → asimpy-0.5.0}/docs/contributing/index.html +0 -0
  87. {asimpy-0.4.1 → asimpy-0.5.0}/docs/examples/index.html +0 -0
  88. {asimpy-0.4.1 → asimpy-0.5.0}/docs/license/index.html +0 -0
  89. {asimpy-0.4.1 → asimpy-0.5.0}/docs/reference/interrupt/index.html +0 -0
  90. {asimpy-0.4.1 → asimpy-0.5.0}/docs/requirements.txt +0 -0
  91. {asimpy-0.4.1 → asimpy-0.5.0}/docs/sitemap.xml +0 -0
  92. {asimpy-0.4.1 → asimpy-0.5.0}/docs/tutorial/01_minimal/index.html +0 -0
  93. {asimpy-0.4.1 → asimpy-0.5.0}/docs/tutorial/02_queue/index.html +0 -0
  94. {asimpy-0.4.1 → asimpy-0.5.0}/docs/tutorial/03_interrupt/index.html +0 -0
  95. {asimpy-0.4.1 → asimpy-0.5.0}/docs/tutorial/04_combine/index.html +0 -0
  96. {asimpy-0.4.1 → asimpy-0.5.0}/docs-requirements.txt +0 -0
  97. {asimpy-0.4.1 → asimpy-0.5.0}/examples/allof.py +0 -0
  98. {asimpy-0.4.1 → asimpy-0.5.0}/examples/barrier.py +0 -0
  99. {asimpy-0.4.1 → asimpy-0.5.0}/examples/firstof_queue.py +0 -0
  100. {asimpy-0.4.1 → asimpy-0.5.0}/examples/firstof_timeout.py +0 -0
  101. {asimpy-0.4.1 → asimpy-0.5.0}/examples/interrupt.py +0 -0
  102. {asimpy-0.4.1 → asimpy-0.5.0}/examples/priqueue.py +0 -0
  103. {asimpy-0.4.1 → asimpy-0.5.0}/examples/queue.py +0 -0
  104. {asimpy-0.4.1 → asimpy-0.5.0}/examples/resource.py +0 -0
  105. {asimpy-0.4.1 → asimpy-0.5.0}/examples/timeout.py +0 -0
  106. {asimpy-0.4.1 → asimpy-0.5.0}/mkdocs.yml +0 -0
  107. {asimpy-0.4.1 → asimpy-0.5.0}/output/allof.txt +0 -0
  108. {asimpy-0.4.1 → asimpy-0.5.0}/output/barrier.txt +0 -0
  109. {asimpy-0.4.1 → asimpy-0.5.0}/output/firstof_queue.txt +0 -0
  110. {asimpy-0.4.1 → asimpy-0.5.0}/output/firstof_timeout.txt +0 -0
  111. {asimpy-0.4.1 → asimpy-0.5.0}/output/interrupt.txt +0 -0
  112. {asimpy-0.4.1 → asimpy-0.5.0}/output/priqueue.txt +0 -0
  113. {asimpy-0.4.1 → asimpy-0.5.0}/output/queue.txt +0 -0
  114. {asimpy-0.4.1 → asimpy-0.5.0}/output/resource.txt +0 -0
  115. {asimpy-0.4.1 → asimpy-0.5.0}/output/timeout.txt +0 -0
  116. {asimpy-0.4.1 → asimpy-0.5.0}/pages/.pages +0 -0
  117. {asimpy-0.4.1 → asimpy-0.5.0}/pages/conduct.md +0 -0
  118. {asimpy-0.4.1 → asimpy-0.5.0}/pages/contributing.md +0 -0
  119. {asimpy-0.4.1 → asimpy-0.5.0}/pages/examples.md +0 -0
  120. {asimpy-0.4.1 → asimpy-0.5.0}/pages/index.md +0 -0
  121. {asimpy-0.4.1 → asimpy-0.5.0}/pages/license.md +0 -0
  122. {asimpy-0.4.1 → asimpy-0.5.0}/pages/reference/allof.md +0 -0
  123. {asimpy-0.4.1 → asimpy-0.5.0}/pages/reference/barrier.md +0 -0
  124. {asimpy-0.4.1 → asimpy-0.5.0}/pages/reference/environment.md +0 -0
  125. {asimpy-0.4.1 → asimpy-0.5.0}/pages/reference/event.md +0 -0
  126. {asimpy-0.4.1 → asimpy-0.5.0}/pages/reference/firstof.md +0 -0
  127. {asimpy-0.4.1 → asimpy-0.5.0}/pages/reference/interrupt.md +0 -0
  128. {asimpy-0.4.1 → asimpy-0.5.0}/pages/reference/process.md +0 -0
  129. {asimpy-0.4.1 → asimpy-0.5.0}/pages/reference/resource.md +0 -0
  130. {asimpy-0.4.1 → asimpy-0.5.0}/pages/reference/simqueue.md +0 -0
  131. {asimpy-0.4.1 → asimpy-0.5.0}/pages/reference/timeout.md +0 -0
  132. {asimpy-0.4.1 → asimpy-0.5.0}/pages/tutorial/01_minimal.md +0 -0
  133. {asimpy-0.4.1 → asimpy-0.5.0}/pages/tutorial/02_queue.md +0 -0
  134. {asimpy-0.4.1 → asimpy-0.5.0}/pages/tutorial/03_interrupt.md +0 -0
  135. {asimpy-0.4.1 → asimpy-0.5.0}/pages/tutorial/04_combine.md +0 -0
  136. {asimpy-0.4.1 → asimpy-0.5.0}/src/asimpy/__init__.py +0 -0
  137. {asimpy-0.4.1 → asimpy-0.5.0}/src/asimpy/_adapt.py +0 -0
  138. {asimpy-0.4.1 → asimpy-0.5.0}/src/asimpy/allof.py +0 -0
  139. {asimpy-0.4.1 → asimpy-0.5.0}/src/asimpy/barrier.py +0 -0
  140. {asimpy-0.4.1 → asimpy-0.5.0}/src/asimpy/firstof.py +0 -0
  141. {asimpy-0.4.1 → asimpy-0.5.0}/src/asimpy/interrupt.py +0 -0
  142. {asimpy-0.4.1 → asimpy-0.5.0}/src/asimpy/process.py +0 -0
  143. {asimpy-0.4.1 → asimpy-0.5.0}/src/asimpy/resource.py +0 -0
  144. {asimpy-0.4.1 → asimpy-0.5.0}/tutorial/01_minimal/environment.py +0 -0
  145. {asimpy-0.4.1 → asimpy-0.5.0}/tutorial/01_minimal/event.py +0 -0
  146. {asimpy-0.4.1 → asimpy-0.5.0}/tutorial/01_minimal/example_timeout.py +0 -0
  147. {asimpy-0.4.1 → asimpy-0.5.0}/tutorial/01_minimal/process.py +0 -0
  148. {asimpy-0.4.1 → asimpy-0.5.0}/tutorial/01_minimal/timeout.py +0 -0
  149. {asimpy-0.4.1 → asimpy-0.5.0}/tutorial/02_queue/environment.py +0 -0
  150. {asimpy-0.4.1 → asimpy-0.5.0}/tutorial/02_queue/event.py +0 -0
  151. {asimpy-0.4.1 → asimpy-0.5.0}/tutorial/02_queue/example_queue.py +0 -0
  152. {asimpy-0.4.1 → asimpy-0.5.0}/tutorial/02_queue/process.py +0 -0
  153. {asimpy-0.4.1 → asimpy-0.5.0}/tutorial/02_queue/simqueue.py +0 -0
  154. {asimpy-0.4.1 → asimpy-0.5.0}/tutorial/02_queue/timeout.py +0 -0
  155. {asimpy-0.4.1 → asimpy-0.5.0}/tutorial/03_interrupt/environment.py +0 -0
  156. {asimpy-0.4.1 → asimpy-0.5.0}/tutorial/03_interrupt/event.py +0 -0
  157. {asimpy-0.4.1 → asimpy-0.5.0}/tutorial/03_interrupt/example_interrupt.py +0 -0
  158. {asimpy-0.4.1 → asimpy-0.5.0}/tutorial/03_interrupt/interrupt.py +0 -0
  159. {asimpy-0.4.1 → asimpy-0.5.0}/tutorial/03_interrupt/process.py +0 -0
  160. {asimpy-0.4.1 → asimpy-0.5.0}/tutorial/03_interrupt/simqueue.py +0 -0
  161. {asimpy-0.4.1 → asimpy-0.5.0}/tutorial/03_interrupt/timeout.py +0 -0
@@ -21,3 +21,4 @@ coverage.json
21
21
 
22
22
  # MacOS
23
23
  .DS_store
24
+ .aider*
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: asimpy
3
- Version: 0.4.1
3
+ Version: 0.5.0
4
4
  Summary: A simple discrete event simulator using async/await
5
5
  Author-email: Greg Wilson <gvwilson@third-bit.com>
6
6
  Maintainer-email: Greg Wilson <gvwilson@third-bit.com>
@@ -10,17 +10,6 @@ Classifier: License :: OSI Approved :: MIT License
10
10
  Classifier: Operating System :: OS Independent
11
11
  Classifier: Programming Language :: Python :: 3
12
12
  Requires-Python: >=3.12
13
- Provides-Extra: dev
14
- Requires-Dist: build>=1.4.0; extra == 'dev'
15
- Requires-Dist: markdown-include>=0.8.1; extra == 'dev'
16
- Requires-Dist: mkdocs-awesome-pages-plugin>=2.10.1; extra == 'dev'
17
- Requires-Dist: mkdocs-material>=9.7.1; extra == 'dev'
18
- Requires-Dist: mkdocs>=1.6.1; extra == 'dev'
19
- Requires-Dist: mkdocstrings[python]>=1.0.0; extra == 'dev'
20
- Requires-Dist: ruff>=0.14.10; extra == 'dev'
21
- Requires-Dist: taskipy>=1.14.1; extra == 'dev'
22
- Requires-Dist: twine>=6.2.0; extra == 'dev'
23
- Requires-Dist: ty>=0.0.11; extra == 'dev'
24
13
  Description-Content-Type: text/markdown
25
14
 
26
15
  # asimpy
@@ -30,7 +19,6 @@ A simple discrete event simulation framework in Python using `async`/`await`.
30
19
  - [Documentation][docs]
31
20
  - [Package][package]
32
21
  - [Repository][repo]
33
- - [Examples][examples]
34
22
 
35
23
  *Thanks to the creators of [SimPy][simpy] for inspiration.*
36
24
 
@@ -234,8 +222,7 @@ The sequence of events is:
234
222
  | FirstOf succeeds with winner | q1=[], q2=["B"] | _value=("a","A"), _triggered=True | Processes waiting on FirstOf resumed | `Tester` receives ("a","A") |
235
223
  | `Tester` continues execution | q1=[], q2=["B"] | - | - | Remaining queue items untouched; correct order guaranteed |
236
224
 
237
- [docs]: https://gvwilson.github.io/asimpy
238
- [examples]: https://gvwilson.github.io/asimpy/examples/
225
+ [docs]: https://asimpy.readthedocs.io/
239
226
  [package]: https://pypi.org/project/asimpy/
240
227
  [repo]: https://github.com/gvwilson/asimpy
241
228
  [simpy]: https://simpy.readthedocs.io/
@@ -5,7 +5,6 @@ A simple discrete event simulation framework in Python using `async`/`await`.
5
5
  - [Documentation][docs]
6
6
  - [Package][package]
7
7
  - [Repository][repo]
8
- - [Examples][examples]
9
8
 
10
9
  *Thanks to the creators of [SimPy][simpy] for inspiration.*
11
10
 
@@ -209,8 +208,7 @@ The sequence of events is:
209
208
  | FirstOf succeeds with winner | q1=[], q2=["B"] | _value=("a","A"), _triggered=True | Processes waiting on FirstOf resumed | `Tester` receives ("a","A") |
210
209
  | `Tester` continues execution | q1=[], q2=["B"] | - | - | Remaining queue items untouched; correct order guaranteed |
211
210
 
212
- [docs]: https://gvwilson.github.io/asimpy
213
- [examples]: https://gvwilson.github.io/asimpy/examples/
211
+ [docs]: https://asimpy.readthedocs.io/
214
212
  [package]: https://pypi.org/project/asimpy/
215
213
  [repo]: https://github.com/gvwilson/asimpy
216
214
  [simpy]: https://simpy.readthedocs.io/
@@ -1109,10 +1109,9 @@
1109
1109
  <h1 id="asimpy">asimpy</h1>
1110
1110
  <p>A simple discrete event simulation framework in Python using <code>async</code>/<code>await</code>.</p>
1111
1111
  <ul>
1112
- <li><a href="https://gvwilson.github.io/asimpy">Documentation</a></li>
1112
+ <li><a href="https://asimpy.readthedocs.io/">Documentation</a></li>
1113
1113
  <li><a href="https://pypi.org/project/asimpy/">Package</a></li>
1114
1114
  <li><a href="https://github.com/gvwilson/asimpy">Repository</a></li>
1115
- <li><a href="https://gvwilson.github.io/asimpy/examples/">Examples</a></li>
1116
1115
  </ul>
1117
1116
  <p><em>Thanks to the creators of <a href="https://simpy.readthedocs.io/">SimPy</a> for inspiration.</em></p>
1118
1117
  <h2 id="what-this-is">What This Is</h2>
Binary file
@@ -1117,7 +1117,7 @@
1117
1117
  <code>env</code>
1118
1118
  </td>
1119
1119
  <td>
1120
- <code><span title="asimpy.environment.Environment">Environment</span></code>
1120
+ <code><a class="autorefs autorefs-internal" title="Environment (asimpy.environment.Environment)" href="../environment/#asimpy.environment.Environment">Environment</a></code>
1121
1121
  </td>
1122
1122
  <td>
1123
1123
  <div class="doc-md-description">
@@ -1143,7 +1143,7 @@
1143
1143
  <code>env</code>
1144
1144
  </td>
1145
1145
  <td>
1146
- <code><span title="asimpy.environment.Environment">Environment</span></code>
1146
+ <code><a class="autorefs autorefs-internal" title="Environment (asimpy.environment.Environment)" href="../environment/#asimpy.environment.Environment">Environment</a></code>
1147
1147
  </td>
1148
1148
  <td>
1149
1149
  <div class="doc-md-description">
@@ -462,6 +462,17 @@
462
462
  </span>
463
463
  </a>
464
464
 
465
+ </li>
466
+
467
+ <li class="md-nav__item">
468
+ <a href="#asimpy.environment.Environment" class="md-nav__link">
469
+ <span class="md-ellipsis">
470
+
471
+ Environment
472
+
473
+ </span>
474
+ </a>
475
+
465
476
  </li>
466
477
 
467
478
  </ul>
@@ -875,6 +886,17 @@
875
886
  </span>
876
887
  </a>
877
888
 
889
+ </li>
890
+
891
+ <li class="md-nav__item">
892
+ <a href="#asimpy.environment.Environment" class="md-nav__link">
893
+ <span class="md-ellipsis">
894
+
895
+ Environment
896
+
897
+ </span>
898
+ </a>
899
+
878
900
  </li>
879
901
 
880
902
  </ul>
@@ -924,6 +946,119 @@
924
946
 
925
947
 
926
948
 
949
+ <div class="doc doc-object doc-class">
950
+
951
+
952
+
953
+ <h2 id="asimpy.environment.Environment" class="doc doc-heading">
954
+ <code>Environment</code>
955
+
956
+
957
+ </h2>
958
+
959
+
960
+ <div class="doc doc-contents ">
961
+
962
+
963
+
964
+ <p>Simulation environment.</p>
965
+
966
+
967
+
968
+
969
+
970
+
971
+
972
+
973
+ <details class="mkdocstrings-source">
974
+ <summary>Source code in <code>src/asimpy/environment.py</code></summary>
975
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">12</span>
976
+ <span class="normal">13</span>
977
+ <span class="normal">14</span>
978
+ <span class="normal">15</span>
979
+ <span class="normal">16</span>
980
+ <span class="normal">17</span>
981
+ <span class="normal">18</span>
982
+ <span class="normal">19</span>
983
+ <span class="normal">20</span>
984
+ <span class="normal">21</span>
985
+ <span class="normal">22</span>
986
+ <span class="normal">23</span>
987
+ <span class="normal">24</span>
988
+ <span class="normal">25</span>
989
+ <span class="normal">26</span>
990
+ <span class="normal">27</span>
991
+ <span class="normal">28</span>
992
+ <span class="normal">29</span>
993
+ <span class="normal">30</span>
994
+ <span class="normal">31</span>
995
+ <span class="normal">32</span>
996
+ <span class="normal">33</span>
997
+ <span class="normal">34</span>
998
+ <span class="normal">35</span>
999
+ <span class="normal">36</span>
1000
+ <span class="normal">37</span>
1001
+ <span class="normal">38</span>
1002
+ <span class="normal">39</span>
1003
+ <span class="normal">40</span>
1004
+ <span class="normal">41</span>
1005
+ <span class="normal">42</span>
1006
+ <span class="normal">43</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">Environment</span><span class="p">:</span>
1007
+ <span class="w"> </span><span class="sd">&quot;&quot;&quot;Simulation environment.&quot;&quot;&quot;</span>
1008
+
1009
+ <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">logging</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
1010
+ <span class="bp">self</span><span class="o">.</span><span class="n">_now</span> <span class="o">=</span> <span class="mi">0</span>
1011
+ <span class="bp">self</span><span class="o">.</span><span class="n">_logging</span> <span class="o">=</span> <span class="n">logging</span>
1012
+ <span class="bp">self</span><span class="o">.</span><span class="n">_pending</span> <span class="o">=</span> <span class="p">[]</span>
1013
+
1014
+ <span class="nd">@property</span>
1015
+ <span class="k">def</span><span class="w"> </span><span class="nf">now</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
1016
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_now</span>
1017
+
1018
+ <span class="k">def</span><span class="w"> </span><span class="nf">schedule</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">time</span><span class="p">,</span> <span class="n">callback</span><span class="p">):</span>
1019
+ <span class="n">heapq</span><span class="o">.</span><span class="n">heappush</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_pending</span><span class="p">,</span> <span class="n">_Pending</span><span class="p">(</span><span class="n">time</span><span class="p">,</span> <span class="n">callback</span><span class="p">))</span>
1020
+
1021
+ <span class="k">def</span><span class="w"> </span><span class="nf">timeout</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">delay</span><span class="p">):</span>
1022
+ <span class="k">return</span> <span class="n">Timeout</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">delay</span><span class="p">)</span>
1023
+
1024
+ <span class="k">def</span><span class="w"> </span><span class="nf">run</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">until</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
1025
+ <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_pending</span><span class="p">:</span>
1026
+ <span class="n">pending</span> <span class="o">=</span> <span class="n">heapq</span><span class="o">.</span><span class="n">heappop</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_pending</span><span class="p">)</span>
1027
+ <span class="k">if</span> <span class="n">until</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">pending</span><span class="o">.</span><span class="n">time</span> <span class="o">&gt;</span> <span class="n">until</span><span class="p">:</span>
1028
+ <span class="k">break</span>
1029
+ <span class="n">result</span> <span class="o">=</span> <span class="n">pending</span><span class="o">.</span><span class="n">callback</span><span class="p">()</span>
1030
+ <span class="k">if</span> <span class="p">(</span><span class="n">result</span> <span class="ow">is</span> <span class="ow">not</span> <span class="n">NO_TIME</span><span class="p">)</span> <span class="ow">and</span> <span class="p">(</span><span class="n">pending</span><span class="o">.</span><span class="n">time</span> <span class="o">&gt;</span> <span class="bp">self</span><span class="o">.</span><span class="n">_now</span><span class="p">):</span>
1031
+ <span class="bp">self</span><span class="o">.</span><span class="n">_now</span> <span class="o">=</span> <span class="n">pending</span><span class="o">.</span><span class="n">time</span>
1032
+
1033
+ <span class="k">def</span><span class="w"> </span><span class="nf">_immediate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">callback</span><span class="p">):</span>
1034
+ <span class="bp">self</span><span class="o">.</span><span class="n">schedule</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_now</span><span class="p">,</span> <span class="n">callback</span><span class="p">)</span>
1035
+
1036
+ <span class="k">def</span><span class="w"> </span><span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
1037
+ <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;Env(t=</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_now</span><span class="si">}</span><span class="s2">)&quot;</span>
1038
+ </code></pre></div></td></tr></table></div>
1039
+ </details>
1040
+
1041
+
1042
+
1043
+ <div class="doc doc-children">
1044
+
1045
+
1046
+
1047
+
1048
+
1049
+
1050
+
1051
+
1052
+
1053
+
1054
+
1055
+
1056
+ </div>
1057
+
1058
+ </div>
1059
+
1060
+ </div>
1061
+
927
1062
 
928
1063
 
929
1064
 
@@ -490,6 +490,17 @@
490
490
  </span>
491
491
  </a>
492
492
 
493
+ </li>
494
+
495
+ <li class="md-nav__item">
496
+ <a href="#asimpy.event.NO_TIME" class="md-nav__link">
497
+ <span class="md-ellipsis">
498
+
499
+ NO_TIME
500
+
501
+ </span>
502
+ </a>
503
+
493
504
  </li>
494
505
 
495
506
  <li class="md-nav__item">
@@ -925,6 +936,17 @@
925
936
  </span>
926
937
  </a>
927
938
 
939
+ </li>
940
+
941
+ <li class="md-nav__item">
942
+ <a href="#asimpy.event.NO_TIME" class="md-nav__link">
943
+ <span class="md-ellipsis">
944
+
945
+ NO_TIME
946
+
947
+ </span>
948
+ </a>
949
+
928
950
  </li>
929
951
 
930
952
  <li class="md-nav__item">
@@ -1022,6 +1044,28 @@
1022
1044
 
1023
1045
 
1024
1046
 
1047
+ <div class="doc doc-object doc-attribute">
1048
+
1049
+
1050
+
1051
+ <h2 id="asimpy.event.NO_TIME" class="doc doc-heading">
1052
+ <code class="highlight language-python"><span class="n">NO_TIME</span> <span class="o">=</span> <span class="nb">object</span><span class="p">()</span></code>
1053
+
1054
+ <span class="doc doc-labels">
1055
+ <small class="doc doc-label doc-label-module-attribute"><code>module-attribute</code></small>
1056
+ </span>
1057
+
1058
+ </h2>
1059
+
1060
+
1061
+ <div class="doc doc-contents ">
1062
+
1063
+ <p>Sentinel indicating that time should not advance.</p>
1064
+
1065
+ </div>
1066
+
1067
+ </div>
1068
+
1025
1069
 
1026
1070
 
1027
1071
  <div class="doc doc-object doc-class">
@@ -1050,11 +1094,7 @@
1050
1094
 
1051
1095
  <details class="mkdocstrings-source">
1052
1096
  <summary>Source code in <code>src/asimpy/event.py</code></summary>
1053
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 9</span>
1054
- <span class="normal">10</span>
1055
- <span class="normal">11</span>
1056
- <span class="normal">12</span>
1057
- <span class="normal">13</span>
1097
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">13</span>
1058
1098
  <span class="normal">14</span>
1059
1099
  <span class="normal">15</span>
1060
1100
  <span class="normal">16</span>
@@ -1099,7 +1139,11 @@
1099
1139
  <span class="normal">55</span>
1100
1140
  <span class="normal">56</span>
1101
1141
  <span class="normal">57</span>
1102
- <span class="normal">58</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">Event</span><span class="p">:</span>
1142
+ <span class="normal">58</span>
1143
+ <span class="normal">59</span>
1144
+ <span class="normal">60</span>
1145
+ <span class="normal">61</span>
1146
+ <span class="normal">62</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">Event</span><span class="p">:</span>
1103
1147
  <span class="w"> </span><span class="sd">&quot;&quot;&quot;Manage an event.&quot;&quot;&quot;</span>
1104
1148
 
1105
1149
  <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">env</span><span class="p">:</span> <span class="s2">&quot;Environment&quot;</span><span class="p">):</span>
@@ -1195,7 +1239,7 @@
1195
1239
  <code>env</code>
1196
1240
  </td>
1197
1241
  <td>
1198
- <code><span title="asimpy.environment.Environment">Environment</span></code>
1242
+ <code><a class="autorefs autorefs-internal" title="Environment (asimpy.environment.Environment)" href="../environment/#asimpy.environment.Environment">Environment</a></code>
1199
1243
  </td>
1200
1244
  <td>
1201
1245
  <div class="doc-md-description">
@@ -1212,11 +1256,7 @@
1212
1256
 
1213
1257
  <details class="mkdocstrings-source">
1214
1258
  <summary>Source code in <code>src/asimpy/event.py</code></summary>
1215
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">12</span>
1216
- <span class="normal">13</span>
1217
- <span class="normal">14</span>
1218
- <span class="normal">15</span>
1219
- <span class="normal">16</span>
1259
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">16</span>
1220
1260
  <span class="normal">17</span>
1221
1261
  <span class="normal">18</span>
1222
1262
  <span class="normal">19</span>
@@ -1224,7 +1264,11 @@
1224
1264
  <span class="normal">21</span>
1225
1265
  <span class="normal">22</span>
1226
1266
  <span class="normal">23</span>
1227
- <span class="normal">24</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">env</span><span class="p">:</span> <span class="s2">&quot;Environment&quot;</span><span class="p">):</span>
1267
+ <span class="normal">24</span>
1268
+ <span class="normal">25</span>
1269
+ <span class="normal">26</span>
1270
+ <span class="normal">27</span>
1271
+ <span class="normal">28</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">env</span><span class="p">:</span> <span class="s2">&quot;Environment&quot;</span><span class="p">):</span>
1228
1272
  <span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
1229
1273
  <span class="sd"> Construct a new event.</span>
1230
1274
 
@@ -1259,14 +1303,14 @@
1259
1303
 
1260
1304
  <details class="mkdocstrings-source">
1261
1305
  <summary>Source code in <code>src/asimpy/event.py</code></summary>
1262
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">41</span>
1263
- <span class="normal">42</span>
1264
- <span class="normal">43</span>
1265
- <span class="normal">44</span>
1266
- <span class="normal">45</span>
1306
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">45</span>
1267
1307
  <span class="normal">46</span>
1268
1308
  <span class="normal">47</span>
1269
- <span class="normal">48</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">cancel</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
1309
+ <span class="normal">48</span>
1310
+ <span class="normal">49</span>
1311
+ <span class="normal">50</span>
1312
+ <span class="normal">51</span>
1313
+ <span class="normal">52</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">cancel</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
1270
1314
  <span class="w"> </span><span class="sd">&quot;&quot;&quot;Cancel event.&quot;&quot;&quot;</span>
1271
1315
  <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_triggered</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cancelled</span><span class="p">:</span>
1272
1316
  <span class="k">return</span>
@@ -1327,11 +1371,7 @@
1327
1371
 
1328
1372
  <details class="mkdocstrings-source">
1329
1373
  <summary>Source code in <code>src/asimpy/event.py</code></summary>
1330
- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">26</span>
1331
- <span class="normal">27</span>
1332
- <span class="normal">28</span>
1333
- <span class="normal">29</span>
1334
- <span class="normal">30</span>
1374
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">30</span>
1335
1375
  <span class="normal">31</span>
1336
1376
  <span class="normal">32</span>
1337
1377
  <span class="normal">33</span>
@@ -1340,7 +1380,11 @@
1340
1380
  <span class="normal">36</span>
1341
1381
  <span class="normal">37</span>
1342
1382
  <span class="normal">38</span>
1343
- <span class="normal">39</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">succeed</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">:</span> <span class="n">Any</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span>
1383
+ <span class="normal">39</span>
1384
+ <span class="normal">40</span>
1385
+ <span class="normal">41</span>
1386
+ <span class="normal">42</span>
1387
+ <span class="normal">43</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">succeed</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">:</span> <span class="n">Any</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span>
1344
1388
  <span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
1345
1389
  <span class="sd"> Handle case of event succeeding.</span>
1346
1390
 
@@ -1129,7 +1129,7 @@
1129
1129
  <code>env</code>
1130
1130
  </td>
1131
1131
  <td>
1132
- <code><span title="asimpy.environment.Environment">Environment</span></code>
1132
+ <code><a class="autorefs autorefs-internal" title="Environment (asimpy.environment.Environment)" href="../environment/#asimpy.environment.Environment">Environment</a></code>
1133
1133
  </td>
1134
1134
  <td>
1135
1135
  <div class="doc-md-description">
@@ -1347,7 +1347,7 @@
1347
1347
  <code>env</code>
1348
1348
  </td>
1349
1349
  <td>
1350
- <code><span title="asimpy.environment.Environment">Environment</span></code>
1350
+ <code><a class="autorefs autorefs-internal" title="Environment (asimpy.environment.Environment)" href="../environment/#asimpy.environment.Environment">Environment</a></code>
1351
1351
  </td>
1352
1352
  <td>
1353
1353
  <div class="doc-md-description">
@@ -1217,7 +1217,7 @@
1217
1217
  <code>env</code>
1218
1218
  </td>
1219
1219
  <td>
1220
- <code><span title="asimpy.environment.Environment">Environment</span></code>
1220
+ <code><a class="autorefs autorefs-internal" title="Environment (asimpy.environment.Environment)" href="../environment/#asimpy.environment.Environment">Environment</a></code>
1221
1221
  </td>
1222
1222
  <td>
1223
1223
  <div class="doc-md-description">