profile
viewpoint
If you are wondering where the data of this site comes from, please visit https://api.github.com/users/erikkemperman/events. GitMemory does not store any data, but only uses NGINX to cache data for a period of time. The idea behind GitMemory is simply to give users a better reading experience.
Erik Kemperman erikkemperman Rotterdam, the Netherlands

erikkemperman/antlr4 0

ANTLR (ANother Tool for Language Recognition) is a powerful parser generator for reading, processing, executing, or translating structured text or binary files.

erikkemperman/async-done 0

Handles completion and errors for callbacks, promises, observables, child processes and streams.

erikkemperman/async-once 0

Guarantee a node-style async function is only executed once

erikkemperman/async-settle 0

Settle your async functions - when you need to know all your parallel functions are complete (success or failure)

erikkemperman/ava 0

:rocket: Futuristic JavaScript test runner

erikkemperman/bach 0

Compose your async functions with elegance

erikkemperman/better-stats 0

A replacement for node's fs.Stats with more utility

erikkemperman/bootcamps 0

Examples to be used at EUR bootcamps

erikkemperman/clone-buffer 0

Easier Buffer cloning in node.

erikkemperman/conventional-changelog-gulp 0

conventional-changelog gulp preset

create barnchpowertac/powertac-server

branch : i1084

created branch time in 11 hours

push eventpowertac/powertac-experiment-scheduler

Frederik Milkau

commit sha fb68d236ff9dc9ba35c8cf5075a1fba7d505cd6c

added log persistence for broker containers

view details

Frederik Milkau

commit sha 0aa3d56f34f1c35c479191bcaeb1239644d2718f

Merge branch 'master' of https://github.com/powertac/powertac-experiment-scheduler

view details

push time in 3 days

delete branch powertac/powertac-core

delete branch : dependabot/maven/com.thoughtworks.xstream-xstream-1.4.16

delete time in 3 days

push eventpowertac/powertac-core

dependabot[bot]

commit sha 182d71556780cd823d9247b747e35df336090698

Bump xstream from 1.4.15 to 1.4.16 Bumps [xstream](https://github.com/x-stream/xstream) from 1.4.15 to 1.4.16. - [Release notes](https://github.com/x-stream/xstream/releases) - [Commits](https://github.com/x-stream/xstream/commits) Signed-off-by: dependabot[bot] <support@github.com>

view details

John Collins

commit sha 971e9e2d96f95cfabc6cbaf046efc4fd306090c9

Merge pull request #23 from powertac/dependabot/maven/com.thoughtworks.xstream-xstream-1.4.16 Bump xstream from 1.4.15 to 1.4.16

view details

push time in 3 days

PR merged powertac/powertac-core

Bump xstream from 1.4.15 to 1.4.16 dependencies

Bumps xstream from 1.4.15 to 1.4.16. <details> <summary>Commits</summary> <ul> <li>See full diff in <a href="https://github.com/x-stream/xstream/commits">compare view</a></li> </ul> </details> <br />

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


<details> <summary>Dependabot commands and options</summary> <br />

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
  • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
  • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
  • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

You can disable automated security fix PRs for this repo from the Security Alerts page.

</details>

+1 -1

0 comment

1 changed file

dependabot[bot]

pr closed time in 3 days

push eventpowertac/powertac-server

John Collins

commit sha c83e7976afcd336ac7fc3ce0e583aec7e93a7438

update version of caniuse-lite based on dependabot recommendation

view details

John Collins

commit sha aa8bb608cedd08eaecdff0170be8cc47a8aa46d6

Merge branch 'master' of github.com:powertac/powertac-server

view details

John Collins

commit sha e749b52aa6d7380a11dd60de57547ee55af4eaa9

Closes #1091 - make Default Broker and MISO buyer pay attention to minimum order quantity

view details

push time in 3 days

issue closedpowertac/powertac-server

Large numbers of BFAULT log entries due to orders below minimum size from default broker and miso buyer

This makes it hard to spot BFAULT entries caused by external brokers.

closed time in 3 days

jecollins

issue openedpowertac/powertac-server

Large numbers of BFAULT log entries due to orders below minimum size from default broker and miso buyer

This makes it hard to spot BFAULT entries caused by external brokers.

created time in 3 days

delete branch powertac/powertac-server

delete branch : dependabot/npm_and_yarn/visualizer2/lodash-4.17.21

delete time in 3 days

push eventpowertac/powertac-server

dependabot[bot]

commit sha 06705089f48fef0b9ab0492065e8591612ebcef6

Bump lodash from 4.17.19 to 4.17.21 in /visualizer2 Bumps [lodash](https://github.com/lodash/lodash) from 4.17.19 to 4.17.21. - [Release notes](https://github.com/lodash/lodash/releases) - [Commits](https://github.com/lodash/lodash/compare/4.17.19...4.17.21) Signed-off-by: dependabot[bot] <support@github.com>

view details

John Collins

commit sha 398ad4a0d4a3fed5e9e43e8ad6f0576deddbc84b

Merge pull request #1087 from powertac/dependabot/npm_and_yarn/visualizer2/lodash-4.17.21 Bump lodash from 4.17.19 to 4.17.21 in /visualizer2

view details

push time in 3 days

PR merged powertac/powertac-server

Bump lodash from 4.17.19 to 4.17.21 in /visualizer2 dependencies javascript

Bumps lodash from 4.17.19 to 4.17.21. <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/lodash/lodash/commit/f299b52f39486275a9e6483b60a410e06520c538"><code>f299b52</code></a> Bump to v4.17.21</li> <li><a href="https://github.com/lodash/lodash/commit/c4847ebe7d14540bb28a8b932a9ce1b9ecbfee1a"><code>c4847eb</code></a> Improve performance of <code>toNumber</code>, <code>trim</code> and <code>trimEnd</code> on large input strings</li> <li><a href="https://github.com/lodash/lodash/commit/3469357cff396a26c363f8c1b5a91dde28ba4b1c"><code>3469357</code></a> Prevent command injection through <code>_.template</code>'s <code>variable</code> option</li> <li><a href="https://github.com/lodash/lodash/commit/ded9bc66583ed0b4e3b7dc906206d40757b4a90a"><code>ded9bc6</code></a> Bump to v4.17.20.</li> <li><a href="https://github.com/lodash/lodash/commit/63150ef7645ac07961b63a86490f419f356429aa"><code>63150ef</code></a> Documentation fixes.</li> <li><a href="https://github.com/lodash/lodash/commit/00f0f62a979d2f5fa0287c06eae70cf9a62d8794"><code>00f0f62</code></a> test.js: Remove trailing comma.</li> <li><a href="https://github.com/lodash/lodash/commit/846e434c7a5b5692c55ebf5715ed677b70a32389"><code>846e434</code></a> Temporarily use a custom fork of <code>lodash-cli</code>.</li> <li><a href="https://github.com/lodash/lodash/commit/5d046f39cbd27f573914768e3b36eeefcc4f1229"><code>5d046f3</code></a> Re-enable Travis tests on <code>4.17</code> branch.</li> <li><a href="https://github.com/lodash/lodash/commit/aa816b36d402a1ad9385142ce7188f17dae514fd"><code>aa816b3</code></a> Remove <code>/npm-package</code>.</li> <li>See full diff in <a href="https://github.com/lodash/lodash/compare/4.17.19...4.17.21">compare view</a></li> </ul> </details> <details> <summary>Maintainer changes</summary> <p>This version was pushed to npm by <a href="https://www.npmjs.com/~bnjmnt4n">bnjmnt4n</a>, a new releaser for lodash since your current version.</p> </details> <br />

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


<details> <summary>Dependabot commands and options</summary> <br />

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
  • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
  • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
  • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

You can disable automated security fix PRs for this repo from the Security Alerts page.

</details>

+5 -5

0 comment

2 changed files

dependabot[bot]

pr closed time in 3 days

delete branch powertac/powertac-server

delete branch : dependabot/npm_and_yarn/visualizer2/handlebars-4.7.7

delete time in 3 days

PR merged powertac/powertac-server

Bump handlebars from 4.7.6 to 4.7.7 in /visualizer2 dependencies javascript

Bumps handlebars from 4.7.6 to 4.7.7. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/handlebars-lang/handlebars.js/blob/master/release-notes.md">handlebars's changelog</a>.</em></p> <blockquote> <h2>v4.7.7 - February 15th, 2021</h2> <ul> <li>fix weird error in integration tests - eb860c0</li> <li>fix: check prototype property access in strict-mode (<a href="https://github-redirect.dependabot.com/wycats/handlebars.js/issues/1736">#1736</a>) - b6d3de7</li> <li>fix: escape property names in compat mode (<a href="https://github-redirect.dependabot.com/wycats/handlebars.js/issues/1736">#1736</a>) - f058970</li> <li>refactor: In spec tests, use expectTemplate over equals and shouldThrow (<a href="https://github-redirect.dependabot.com/wycats/handlebars.js/issues/1683">#1683</a>) - 77825f8</li> <li>chore: start testing on Node.js 12 and 13 - 3789a30</li> </ul> <p>(POSSIBLY) BREAKING CHANGES:</p> <ul> <li>the changes from version <a href="https://github.com/handlebars-lang/handlebars.js/blob/master/release-notes.md#v460---january-8th-2020">4.6.0</a> now also apply in when using the compile-option "strict: true". Access to prototype properties is forbidden completely by default, specific properties or methods can be allowed via runtime-options. See <a href="https://github-redirect.dependabot.com/wycats/handlebars.js/issues/1633">#1633</a> for details. If you are using Handlebars as documented, you should not be accessing prototype properties from your template anyway, so the changes should not be a problem for you. Only the use of undocumented features can break your build.</li> </ul> <p>That is why we only bump the patch version despite mentioning breaking changes.</p> <p><a href="https://github.com/wycats/handlebars.js/compare/v4.7.6...v4.7.7">Commits</a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/handlebars-lang/handlebars.js/commit/a9a8e403213583ca90cb7c872d3a22796c37d961"><code>a9a8e40</code></a> v4.7.7</li> <li><a href="https://github.com/handlebars-lang/handlebars.js/commit/e66aed5b99c1b6c93564f37d627e34e5d60eb76e"><code>e66aed5</code></a> Update release notes</li> <li><a href="https://github.com/handlebars-lang/handlebars.js/commit/7d4d170ce46a53084a41920c5c7387c131357989"><code>7d4d170</code></a> disable IE in Saucelabs tests</li> <li><a href="https://github.com/handlebars-lang/handlebars.js/commit/eb860c08998f8f506360d305d89e1f4b40f72a0a"><code>eb860c0</code></a> fix weird error in integration tests</li> <li><a href="https://github.com/handlebars-lang/handlebars.js/commit/b6d3de7123eebba603e321f04afdbae608e8fea8"><code>b6d3de7</code></a> fix: check prototype property access in strict-mode (<a href="https://github-redirect.dependabot.com/wycats/handlebars.js/issues/1736">#1736</a>)</li> <li><a href="https://github.com/handlebars-lang/handlebars.js/commit/f0589701698268578199be25285b2ebea1c1e427"><code>f058970</code></a> fix: escape property names in compat mode (<a href="https://github-redirect.dependabot.com/wycats/handlebars.js/issues/1736">#1736</a>)</li> <li><a href="https://github.com/handlebars-lang/handlebars.js/commit/77825f8d3522356feb8e4160fac16344104d192b"><code>77825f8</code></a> refator: In spec tests, use expectTemplate over equals and shouldThrow (<a href="https://github-redirect.dependabot.com/wycats/handlebars.js/issues/1683">#1683</a>)</li> <li><a href="https://github.com/handlebars-lang/handlebars.js/commit/3789a309554fd600caeae442f40881cf93eb3b54"><code>3789a30</code></a> chore: start testing on Node.js 12 and 13</li> <li>See full diff in <a href="https://github.com/wycats/handlebars.js/compare/v4.7.6...v4.7.7">compare view</a></li> </ul> </details> <br />

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


<details> <summary>Dependabot commands and options</summary> <br />

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
  • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
  • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
  • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

You can disable automated security fix PRs for this repo from the Security Alerts page.

</details>

+6 -6

0 comment

1 changed file

dependabot[bot]

pr closed time in 3 days

push eventpowertac/powertac-server

dependabot[bot]

commit sha 4be7582b34ceafb31c2fa5a9aa999fa995309b03

Bump handlebars from 4.7.6 to 4.7.7 in /visualizer2 Bumps [handlebars](https://github.com/wycats/handlebars.js) from 4.7.6 to 4.7.7. - [Release notes](https://github.com/wycats/handlebars.js/releases) - [Changelog](https://github.com/handlebars-lang/handlebars.js/blob/master/release-notes.md) - [Commits](https://github.com/wycats/handlebars.js/compare/v4.7.6...v4.7.7) Signed-off-by: dependabot[bot] <support@github.com>

view details

John Collins

commit sha 0453e59def7d7c264bd3286c1fdb0a52478c16c7

Merge pull request #1086 from powertac/dependabot/npm_and_yarn/visualizer2/handlebars-4.7.7 Bump handlebars from 4.7.6 to 4.7.7 in /visualizer2

view details

push time in 3 days

delete branch powertac/powertac-server

delete branch : dependabot/npm_and_yarn/visualizer2/ua-parser-js-0.7.28

delete time in 3 days

push eventpowertac/powertac-server

dependabot[bot]

commit sha 05219962905b79032eeb9ef1dfdf2d5e05294e59

Bump ua-parser-js from 0.7.22 to 0.7.28 in /visualizer2 Bumps [ua-parser-js](https://github.com/faisalman/ua-parser-js) from 0.7.22 to 0.7.28. - [Release notes](https://github.com/faisalman/ua-parser-js/releases) - [Commits](https://github.com/faisalman/ua-parser-js/compare/0.7.22...0.7.28) Signed-off-by: dependabot[bot] <support@github.com>

view details

John Collins

commit sha 628e1e301bf965bcbb57977afabafcf00732fb4f

Merge pull request #1085 from powertac/dependabot/npm_and_yarn/visualizer2/ua-parser-js-0.7.28 Bump ua-parser-js from 0.7.22 to 0.7.28 in /visualizer2

view details

push time in 3 days

PR merged powertac/powertac-server

Bump ua-parser-js from 0.7.22 to 0.7.28 in /visualizer2 dependencies javascript

Bumps ua-parser-js from 0.7.22 to 0.7.28. <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/faisalman/ua-parser-js/commit/1d3c98a10c23915046a362c4e3b3b503fb40d611"><code>1d3c98a</code></a> Revert breaking fix <a href="https://github-redirect.dependabot.com/faisalman/ua-parser-js/issues/279">#279</a> and release as 0.7.28</li> <li><a href="https://github.com/faisalman/ua-parser-js/commit/535f11bd2403910f29dabe6f90adb014ad016747"><code>535f11b</code></a> Delete redundant code</li> <li><a href="https://github.com/faisalman/ua-parser-js/commit/642c0399e831e27c5c86c3b7afee02e876250d01"><code>642c039</code></a> Fix <a href="https://github-redirect.dependabot.com/faisalman/ua-parser-js/issues/492">#492</a> LG TV WebOS detection</li> <li><a href="https://github.com/faisalman/ua-parser-js/commit/3edacddb2474429c55fa39d1e6222d50bbf9266f"><code>3edacdd</code></a> Merge branch 'master' into develop</li> <li><a href="https://github.com/faisalman/ua-parser-js/commit/acc0b91ff5defa2ca9a722874e27277879292907"><code>acc0b91</code></a> Update contributor list</li> <li><a href="https://github.com/faisalman/ua-parser-js/commit/f726dcd1ae4fea51e99b8ca574a1be51fbd70e1a"><code>f726dcd</code></a> Merge branch 'master' into develop</li> <li><a href="https://github.com/faisalman/ua-parser-js/commit/383ca587ef9b8daffcf652ac39fc9b8f3708572e"><code>383ca58</code></a> More test for tablet devices</li> <li><a href="https://github.com/faisalman/ua-parser-js/commit/7c8aa435b26cb14537423cd5fe4ce077e0661db2"><code>7c8aa43</code></a> Minor rearrangement</li> <li><a href="https://github.com/faisalman/ua-parser-js/commit/09aa9105dc370ded9275f70eae1f4eb67394966c"><code>09aa910</code></a> Add new device & browser: Tesla</li> <li><a href="https://github.com/faisalman/ua-parser-js/commit/557cc2198d88068892eec6b61f2b2f4fe6e96314"><code>557cc21</code></a> More test for latest phones with unique form factor (fold/flip/qwerty/swivel)</li> <li>Additional commits viewable in <a href="https://github.com/faisalman/ua-parser-js/compare/0.7.22...0.7.28">compare view</a></li> </ul> </details> <br />

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


<details> <summary>Dependabot commands and options</summary> <br />

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
  • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
  • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
  • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

You can disable automated security fix PRs for this repo from the Security Alerts page.

</details>

+3 -3

0 comment

1 changed file

dependabot[bot]

pr closed time in 3 days

issue commentpowertac/powertac-server

Sample broker should allow for naming of logs

sample-broker (actually it's broker-core) now takes a command-line argument --log-suffix to modify logfile names. It also only appends the count just in case it's running multiple sessions.

jecollins

comment created time in 4 days

issue closedpowertac/powertac-server

Sample broker should allow for naming of logs

Currently, broker logs are simply numbered. The first one after activation is "broker1" so if you run the broker twice, the first logs get overwritten. Most of the time that's OK, but it's quite annoying if you need to keep logs around for debugging or analysis. Flexible log names will be very important for running experiments.

closed time in 4 days

jecollins

push eventpowertac/powertac-core

John Collins

commit sha bd08b7981616f8eabd45e70610a8b8b88d5ac4a8

#1088 - allow command-line specification of flogfile suffix

view details

John Collins

commit sha b5722ba8d0dc9174374c4cee598552c65086bfae

#1084 - log TimeslotComplete instances

view details

John Collins

commit sha 7ae053eaf2b5612cdda3515bae53b2c3985274d9

#1084 - log TimeslotComplete instances

view details

John Collins

commit sha 113d0ba24591ff6e6da96d5dcb1f9b4e53c3d787

minor cleanup and doc improvement

view details

push time in 4 days

issue commentReactiveX/RxPY

Exceptions get silently dropped when using from_iterable()

Thanks for raising this inconsistency. The difference comes from the fact that when the error is raised, fromiterable catches it and tries to re-notify the on_error handler. As a consequence, the exception is not forwarded up to the subscription (the observer is already stopped). On the other hand, returnvalue does not catch exceptions, so they are forwarded to the subscribe caller.

To be honest I am not sure on the behavior that should be considered as correct: Should the exception be raised or dropped? Errors must be handled with the on_error handler. Moreover, the exception raised with the just operator is raised only with the immediatescheduler or trampolinescheduler. Any other scheduler will not propagate errors since the subscribe call is non-blocking on them.

@dbrattli any idea on this ?

vgklein

comment created time in 4 days

GollumEvent

issue closedReactiveX/RxPY

Synchronize/sequence item processing in a stream

Hello, I'm trying to sequence an asyncio worker which is receiving its work through a subject. The worker is running as a side effect in a pipe operator. By sequencing I mean that no new work should start before the previous work is done.

I've managed to do this partially when the work is added "nicely" with await add(1). Unfortunately this will not always be the case in a bigger async project. Multiple callbacks could be called shortly after each other, and even though each of them awaits, the work would get overlapped. I simulate this with asyncio.gather() in the example.

I would like to delay the emitted items until previous items are done processing.

Example

import asyncio
from asyncio.futures import Future
import time
from typing import NamedTuple
import rx.operators as ops
from rx.subject import Subject
from rx.scheduler.eventloop import AsyncIOScheduler


start = time.time()
def ts():
    return f"{time.time() - start:.3f}"

ACTION_DURATION = 2.0
Data = NamedTuple('Data', [('id', int), ('future', Future[int])])
subject = Subject()

async def async_action(id: int = 0):
    """ Some async processing, like sending/writing data. """
    print(f"{ts()} Async action  started {id}")
    await asyncio.sleep(ACTION_DURATION)
    print(f"{ts()} Async action finished {id}")
    return id


async def setup():
    """ Setting up the Rx subject to make sure all work is done
        in sequence without overlaps.
    """

    def sequencer(data: Data):
        task = asyncio.create_task(async_action(data.id))
        task.add_done_callback(
            lambda f: data.future.set_result(f.result())
        )
        return task

    subject.pipe(
        ops.flat_map(sequencer)
    ).subscribe(
        scheduler=AsyncIOScheduler(asyncio.get_event_loop())
    )


async def add(id: int):
    """ Add "some work" and await until it is done. """
    future = asyncio.Future()
    subject.on_next(Data(id, future))
    return await future


async def main():
    await setup()

    # add work in any fashion (code I cannot influence)
    print(f"{ts()} before 1")
    await add(1)
    print(f"{ts()} after  1")

    await asyncio.sleep(0.1)

    print(f"{ts()} before 2")
    await add(2)
    print(f"{ts()} after  2")

    print(f"{ts()} before 4, 5, 6")
    await asyncio.gather(add(4), add(5), add(6))
    print(f"{ts()} after  4, 5, 6")


asyncio.run(main())

Output

$ python3 rxsync.py
0.007 before 1
0.010 Async action  started 1
2.014 Async action finished 1
2.014 after  1
2.114 before 2
2.115 Async action  started 2
4.117 Async action finished 2
4.117 after  2
4.117 before 4, 5, 6
4.119 Async action  started 4
4.119 Async action  started 5
4.119 Async action  started 6
6.120 Async action finished 4
6.120 Async action finished 5
6.120 Async action finished 6
6.121 after  4, 5, 6

The problem is 4, 5, 6. What I would like, is to postpone 5 until 4 is done, and to postpone 6 until 5 is done... so there are no overlaps.

Thank you for any help.

Note: In RxJs I've managed to solve this with the concatMap operator and awaiting inside its function. But in RxPY there is no concat_map and the only operator I've found that accepts a Future is flat_map. I went through the docs and also issues here on GitHub, but everything I've found and tried didn't seem to solve my issue. I saw a note that concat_map() == map().concat() in #129, tried using rx.from_future but still couldn't figure this out. Maybe it is a feature request, not sure :-).

closed time in 5 days

petrusek

issue commentReactiveX/RxPY

Synchronize/sequence item processing in a stream

Wow, wonderful, thank you very much... it works perfectly. And thank you for the insight too.

petrusek

comment created time in 5 days

pull request commentReactiveX/RxPY

Fix problem with "delay_subscription" and "delay_with_mapper"

I can see the fix for this is now released in v3.2.0. Thanks @MainRo.

pormr

comment created time in 5 days

issue commentReactiveX/RxPY

Synchronize/sequence item processing in a stream

I looked a little bit further. I missed the fact that you actually control the emission rate of the source event by awaiting the "add" coroutines. I think you need a dedicated operator in this case. Here is an example that should work:

import asyncio
from asyncio.futures import Future
import time
from collections import namedtuple
import rx
import rx.operators as ops
from rx.disposable import Disposable
from rx.subject import Subject
from rx.scheduler.eventloop import AsyncIOScheduler


start = time.time()
def ts():
    return f"{time.time() - start:.3f}"

ACTION_DURATION = 2.0
Data = namedtuple('Data', ['id', 'future'])
subject = Subject()

async def async_action(id: int = 0):
    """ Some async processing, like sending/writing data. """
    print(f"{ts()} Async action  started {id}")
    await asyncio.sleep(ACTION_DURATION)
    print(f"{ts()} Async action finished {id}")
    return id


def serialize_map_async(mapper):
    def _serialize_map_async(source):
        def on_subscribe(observer, scheduler):
            q = asyncio.Queue()            

            async def map_async(q):
                try: 
                    while True:
                        i = await q.get()
                        ii = await mapper(i.id)
                        observer.on_next(ii)
                        i.future.set_result(ii)
                except Exception as e:
                    observer.on_error(e)

            def on_next(i):
                try:
                    q.put_nowait(i)
                except Exception as e:
                    observer.on_error(e)
                        
            task = asyncio.create_task(map_async(q))
            d = source.subscribe(
                on_next=on_next,
                on_error=observer.on_error,
                on_completed=observer.on_completed,
            )

            def dispose():
                d.dispose()
                task.cancel()

            return Disposable(dispose)
        return rx.create(on_subscribe)
    return _serialize_map_async


async def setup():
    """ Setting up the Rx subject to make sure all work is done
        in sequence without overlaps.
    """

    subject.pipe(
        serialize_map_async(async_action),
    ).subscribe(
        scheduler=AsyncIOScheduler(asyncio.get_event_loop())
    )


async def add(id: int):
    """ Add "some work" and await until it is done. """
    future = asyncio.Future()
    subject.on_next(Data(id, future))
    return await future


async def main():
    await setup()

    # add work in any fashion (code I cannot influence)
    print(f"{ts()} before 1")
    await add(1)
    print(f"{ts()} after  1")

    await asyncio.sleep(0.1)

    print(f"{ts()} before 2")
    await add(2)
    print(f"{ts()} after  2")

    print(f"{ts()} before 4, 5, 6")
    await asyncio.gather(add(4), add(5), add(6))
    print(f"{ts()} after  4, 5, 6")


asyncio.run(main())

The serialize_map_async customer operator does the following:

  • buffer incoming events
  • await for the asynchronous mapper (async_action)
  • forward the result on the pipeline
  • set the future, so that the source can emit the next event

An asyncio queue is used to switch from a sync context (rxpy subscription) to an async context. In your case, the queue will contain at most one entry because the emission is controlled by Data's future. Since the future is set after calling observer.on_next, all the operators in the subject pipe will be called before the future is set.

The fact that there is not a lot of support of asyncio in rxpy is mostly due to a lack of time to add it. There are some other open issues on asyncio support like #422. Things should improve in the future.

petrusek

comment created time in 5 days

issue openedpowertac/powertac-server

System fail under Java 16

Not sure what's failing, server starts but broker cannot connect. Switching to Java 11 solves the problem.

created time in 5 days

PR opened powertac/powertac-server

Bump hosted-git-info from 2.8.4 to 2.8.9 in /visualizer2

Bumps hosted-git-info from 2.8.4 to 2.8.9. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/npm/hosted-git-info/blob/v2.8.9/CHANGELOG.md">hosted-git-info's changelog</a>.</em></p> <blockquote> <h2><a href="https://github.com/npm/hosted-git-info/compare/v2.8.8...v2.8.9">2.8.9</a> (2021-04-07)</h2> <h3>Bug Fixes</h3> <ul> <li>backport regex fix from <a href="https://github-redirect.dependabot.com/npm/hosted-git-info/issues/76">#76</a> (<a href="https://github.com/npm/hosted-git-info/commit/29adfe5">29adfe5</a>), closes <a href="https://github-redirect.dependabot.com/npm/hosted-git-info/issues/84">#84</a></li> </ul> <p><!-- raw HTML omitted --><!-- raw HTML omitted --></p> <h2><a href="https://github.com/npm/hosted-git-info/compare/v2.8.7...v2.8.8">2.8.8</a> (2020-02-29)</h2> <h3>Bug Fixes</h3> <ul> <li><a href="https://github-redirect.dependabot.com/npm/hosted-git-info/issues/61">#61</a> & <a href="https://github-redirect.dependabot.com/npm/hosted-git-info/issues/65">#65</a> addressing issues w/ url.URL implmentation which regressed node 6 support (<a href="https://github.com/npm/hosted-git-info/commit/5038b18">5038b18</a>), closes <a href="https://github-redirect.dependabot.com/npm/hosted-git-info/issues/66">#66</a></li> </ul> <p><!-- raw HTML omitted --><!-- raw HTML omitted --></p> <h2><a href="https://github.com/npm/hosted-git-info/compare/v2.8.6...v2.8.7">2.8.7</a> (2020-02-26)</h2> <h3>Bug Fixes</h3> <ul> <li>Do not attempt to use url.URL when unavailable (<a href="https://github.com/npm/hosted-git-info/commit/2d0bb66">2d0bb66</a>), closes <a href="https://github-redirect.dependabot.com/npm/hosted-git-info/issues/61">#61</a> <a href="https://github-redirect.dependabot.com/npm/hosted-git-info/issues/62">#62</a></li> <li>Do not pass scp-style URLs to the WhatWG url.URL (<a href="https://github.com/npm/hosted-git-info/commit/f2cdfcf">f2cdfcf</a>), closes <a href="https://github-redirect.dependabot.com/npm/hosted-git-info/issues/60">#60</a></li> </ul> <p><!-- raw HTML omitted --><!-- raw HTML omitted --></p> <h2><a href="https://github.com/npm/hosted-git-info/compare/v2.8.5...v2.8.6">2.8.6</a> (2020-02-25)</h2> <p><!-- raw HTML omitted --><!-- raw HTML omitted --></p> <h2><a href="https://github.com/npm/hosted-git-info/compare/v2.8.4...v2.8.5">2.8.5</a> (2019-10-07)</h2> <h3>Bug Fixes</h3> <ul> <li>updated pathmatch for gitlab (<a href="https://github.com/npm/hosted-git-info/commit/e8325b5">e8325b5</a>), closes <a href="https://github-redirect.dependabot.com/npm/hosted-git-info/issues/51">#51</a></li> <li>updated pathmatch for gitlab (<a href="https://github.com/npm/hosted-git-info/commit/ffe056f">ffe056f</a>)</li> </ul> <p><!-- raw HTML omitted --><!-- raw HTML omitted --></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/npm/hosted-git-info/commit/8d4b3697d79bcd89cdb36d1db165e3696c783a01"><code>8d4b369</code></a> chore(release): 2.8.9</li> <li><a href="https://github.com/npm/hosted-git-info/commit/29adfe5ef789784c861b2cdeb15051ec2ba651a7"><code>29adfe5</code></a> fix: backport regex fix from <a href="https://github-redirect.dependabot.com/npm/hosted-git-info/issues/76">#76</a></li> <li><a href="https://github.com/npm/hosted-git-info/commit/afeaefdd86ba9bb5044be3c1554a666d007cf19a"><code>afeaefd</code></a> chore(release): 2.8.8</li> <li><a href="https://github.com/npm/hosted-git-info/commit/5038b1891a61ca3cd7453acbf85d7011fe0086bb"><code>5038b18</code></a> fix: <a href="https://github-redirect.dependabot.com/npm/hosted-git-info/issues/61">#61</a> & <a href="https://github-redirect.dependabot.com/npm/hosted-git-info/issues/65">#65</a> addressing issues w/ url.URL implmentation which regressed nod...</li> <li><a href="https://github.com/npm/hosted-git-info/commit/7440afa859162051c191e55d8ecfaf69a193b026"><code>7440afa</code></a> chore(release): 2.8.7</li> <li><a href="https://github.com/npm/hosted-git-info/commit/2d0bb6615ecb8f9ef1019bc0737aab7f6449641f"><code>2d0bb66</code></a> fix: Do not attempt to use url.URL when unavailable</li> <li><a href="https://github.com/npm/hosted-git-info/commit/f2cdfcf33ad2bd3bd1acdba0326281089f53c5b1"><code>f2cdfcf</code></a> fix: Do not pass scp-style URLs to the WhatWG url.URL</li> <li><a href="https://github.com/npm/hosted-git-info/commit/e1b83df5d9cb1f8bb220352e20565560548d2292"><code>e1b83df</code></a> chore(release): 2.8.6</li> <li><a href="https://github.com/npm/hosted-git-info/commit/ff259a6117c62df488e927820e30bec2f7ee453f"><code>ff259a6</code></a> Ensure passwords in hosted Git URLs are correctly escaped</li> <li><a href="https://github.com/npm/hosted-git-info/commit/624fd6f301dd5a1fd7ad1b333d6f8921a12ff98c"><code>624fd6f</code></a> chore(release): 2.8.5</li> <li>Additional commits viewable in <a href="https://github.com/npm/hosted-git-info/compare/v2.8.4...v2.8.9">compare view</a></li> </ul> </details> <details> <summary>Maintainer changes</summary> <p>This version was pushed to npm by <a href="https://www.npmjs.com/~nlf">nlf</a>, a new releaser for hosted-git-info since your current version.</p> </details> <br />

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


<details> <summary>Dependabot commands and options</summary> <br />

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
  • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
  • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
  • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

You can disable automated security fix PRs for this repo from the Security Alerts page.

</details>

+3 -3

0 comment

1 changed file

pr created time in 6 days

issue commentpowertac/powertac-server

Configuration of "fast" games is unnecessarily complicated and error-prone

It's worse than being complicated, it's wrong. The server can change the rate (in CompetiionControlService.setTimeParameters() without informing the broker, so the two no longer agree on the time.

jecollins

comment created time in 6 days