A Python library for using callbacks to resume your code.
resumeback
provides a utility function decorator
that enables using callback-based interfaces
in a single line of execution
-- a single function.
https://fichtefoll.github.io/resumeback/
$ pip install resumeback
from threading import Thread
from resumeback import send_self
def ask_for_user_input(question, on_done):
def watcher():
result = input(question)
on_done(result)
Thread(target=watcher).start()
@send_self
def main(this): # "this" is a reference to the created generator instance
arbitrary_value = 10
# Yield pauses execution until one of the generator methods is called,
# such as `.send`, which we provide as the callback parameter.
number = yield ask_for_user_input("Please enter a number", this.send)
number = int(number)
print("Result:", number * arbitrary_value)
if __name__ == "__main__":
main()
Requires Python, poetry, and GNU Make.
Use make help
to show the available targets.
- poetry is used for dependency and virtualenv management.
- tox is used as a test runner for multiple isolated environments.
- flake8 is used for code linting.
- Github Actions are used for CI.
Project started initially after a forum post from @Varriount on the Sublime Text forum. I just took his idea "to the next (abstraction) level" and made it more convenient to use.