-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add child class for single callable #46
Closed
Closed
Changes from all commits
Commits
Show all changes
2 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
from ._publisher import TQDMPublisher | ||
|
||
|
||
class TQDMProgressSubscriber(TQDMPublisher): | ||
def __init__(self, iterable, *, announcer: "?", request_id: str, message: dict, **tqdm_kwargs): | ||
super().__init__(iterable, **tqdm_kwargs) | ||
|
||
def on_progress_update(format_dict) -> None: | ||
""" | ||
Describe what this announcer is all about... | ||
""" | ||
announcer.announce(dict(request_id=request_id, **message)) | ||
|
||
self.subscribe(callback=on_progress_update) | ||
This file was deleted.
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oops, I meant to splinter this to a different PR/branch, my bad
What would you think about this structure?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Main question is, what is the announcer class (is it something from Flask?)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, the announcer is from the GUIDE server—so that has to be used within a user-provided callable to the
TQDMProgressSubscriber
.Unless you want to bring assumptions about the server-side event system implemented in the GUIDE (in contrast to the WebSockets used in our demos) to
tqdm_publisher
.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A fair amount of that listener logic seems quite general, so could very well be included along with this child class
What is the specific point at which it interacts with the GUIDE client?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
At the two locations defined above. The SSE handler waits for new messages to be generated by calling
MessageAnnouncer.announce
in other endpoints.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Response in NeurodataWithoutBorders/nwb-guide#695 and #49.
These introduce a
tqdm_publisher
global import, though, since thelisten_to_neuroconv_events
endpoint needs to have a reference to a singleMessageAnnouncer
instance used across progress updates when the user requests that they'd like to receive updates from that endpoint.If we can't tolerate that, then this line of inquiry is infeasible since whatever queue we use has to be available in several endpoints and the simplest way to use this queue (i.e. with the least assumptions, most flexibility) would be in a callback as the initial commit for this PR was already doing.