Skip to content

Enable inspection of fail_at/fail_after attributes #3090

@jakkdl

Description

@jakkdl

After #3010 we will have the following functionality:

my_move_on_at = move_on_at(5)
assert my_move_on_at.deadline == 5
my_move_on_after = move_on_after(5)
assert my_move_on_after.deadline == 5

# but these return Generator[CancelScope], so you can't inspect/modify the objects
my_fail_at = fail_at(5)
assert my_fail_at.deadline == 5 # AttributeError
my_fail_after = fail_after(5)
assert my_fail_after.deadline == 5 # AttributeError

Since separating initialization & entry has been weird previously the current demand might be low for this functionality, but it might become more common.
The two ways I see of fixing this are:

  1. Add a wrapper class that defines __exit__ to raise TooSlowError if cancelled_caught, but otherwise passes __getattr__ and __setattr__ onto CancelScope
  2. Add a fail=True parameter to CancelScope that makes it raise TooSlowError upon being cancelled.

Split out from #3010 (comment)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions