Give file system classes a transaction type, switch to deque #1424
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.
This means that subclasses of
AbstractFileSystem
need not override thetransaction
property andstart_transaction
function anymore to be able to use custom transaction classes.Instead, they can just override the newly created
transaction_type
property to achieve the same.Also changes the base
Transaction
's file queue to acollections.deque
to pick up thread safety onpop
andappend
events.Finally, returning
self
in the transaction's context entry means that transaction objects can now be access in the enclosing transaction context.For reviewers:
The
files
member shouldn't need to be flushed anymore onstart
, so this could just be removed?Also, I am not sure on how to make the transaction type an instance variable, as the keyword arguments all seem to go to the
DirCache
. (Should I just usekwargs.pop("transaction_type", Transaction)
?)Addresses part of #1416.