summary refs log tree commit diff
path: root/synapse/util (follow)
Commit message (Expand)AuthorAgeFilesLines
* Fix a memory leak when running the unit tests. (#13798)reivilibre2022-09-142-6/+7
* Check if Rust lib needs rebuilding. (#13759)Erik Johnston2022-09-121-0/+84
* Fix cache metrics not being updated when not using the legacy exposition modu...reivilibre2022-09-082-14/+80
* Update Grafana dashboard to not use legacy metric names. (#13714)reivilibre2022-09-061-2/+2
* Generalise the `@cancellable` annotation so it can be used on functions other...reivilibre2022-08-311-0/+56
* Merge branch 'release-v1.66' into developDavid Robertson2022-08-301-31/+124
|\
| * Fix rate limit metrics registering twice and misreporting (#13649)Eric Eastwood2022-08-301-31/+124
* | Add experimental configuration option to allow disabling legacy Prometheus me...reivilibre2022-08-241-8/+8
* | Speed up `@cachedList` (#13591)Erik Johnston2022-08-233-141/+297
* | Cache user IDs instead of profile objects (#13573)Nick Mills-Barrett2022-08-231-7/+19
|/
* Fix incorrect juggling of logging contexts in `_PerHostRatelimiter` (#13554)Sean Quah2022-08-181-10/+7
* Track number of hosts affected by the rate limiter (#13541)Eric Eastwood2022-08-181-4/+39
* Add metrics to track how the rate limiter is affecting requests (sleep/reject...Eric Eastwood2022-08-171-8/+29
* Add metrics to track rate limiter queue timing (#13544)Eric Eastwood2022-08-171-0/+30
* Instrument `FederationStateIdsServlet` - `/state_ids` (#13499)Eric Eastwood2022-08-151-0/+4
* Optimise async get event lookups (#13435)Nick Mills-Barrett2022-08-041-0/+17
* Rename `RateLimitConfig` to `RatelimitSettings` (#13442)Dirk Klimpel2022-08-031-3/+3
* Make DictionaryCache have better expiry properties (#13292)Erik Johnston2022-07-213-33/+313
* Async get event cache prep (#13242)Nick Mills-Barrett2022-07-151-0/+38
* Type `tests.utils` (#13028)David Robertson2022-07-052-2/+6
* Move the "email unsubscribe" resource, refactor the macaroon generator & simp...Quentin Gliech2022-06-141-0/+308
* Fix Synapse git info missing in version strings (#12973)David Robertson2022-06-071-0/+6
* Fix caching behavior for relations push rules. (#12859)Patrick Cloke2022-05-251-7/+8
* Fix `RetryDestinationLimiter` re-starting finished log contexts (#12803)Sean Quah2022-05-191-2/+2
* Discard null-containing strings before updating the user directory (#12762)David Robertson2022-05-181-1/+9
* Add config flags to allow for cache auto-tuning (#12701)Shay2022-05-131-10/+69
* Immediately retry any requests that have backed off when a server comes back ...Erik Johnston2022-05-102-1/+80
* Use `ParamSpec` in a few places (#12667)David Robertson2022-05-094-29/+72
* Prevent memory leak from reoccurring when presence is disabled. (#12656)Erik Johnston2022-05-061-13/+26
* Remove unused `# type: ignore`s (#12531)David Robertson2022-04-271-1/+1
* Consistently use collections.abc.Mapping to check frozendict. (#12564)Patrick Cloke2022-04-271-1/+2
* Update `delay_cancellation` to accept any awaitable (#12468)Sean Quah2022-04-221-10/+42
* Fix edge case where a `Linearizer` could get stuck (#12358)Sean Quah2022-04-051-1/+5
* Refactor and convert `Linearizer` to async (#12357)Sean Quah2022-04-051-77/+67
* Add more type hints to the main state store. (#12267)Patrick Cloke2022-03-311-2/+4
* Bump `black` and `click` versions (#12320)David Robertson2022-03-292-8/+11
* Try to detect borked package installations. (#12244)David Robertson2022-03-181-1/+23
* Add cancellation support to `@cached` and `@cachedList` decorators (#12183)Sean Quah2022-03-141-0/+11
* Add cancellation support to `ReadWriteLock` (#12120)Sean Quah2022-03-141-31/+40
* Add `delay_cancellation` utility function (#12180)Sean Quah2022-03-141-6/+42
* Implement a Jinja2 filter to extract localparts from email addresses (#12212)Brendan Abolivier2022-03-111-0/+5
* Remove unnecessary pass statements. (#12206)Patrick Cloke2022-03-111-2/+0
* Remove workaround introduced in Synapse v1.50.0rc1 for Mjolnir compatibility....reivilibre2022-03-101-7/+0
* Allow for ignoring some arguments when caching. (#12189)Patrick Cloke2022-03-091-16/+58
* Merge branch 'master' into developOlivier Wilkinson (reivilibre)2022-03-081-1/+2
|\
| * Fix a bug introduced in 1.54.0rc1 which meant that Synapse would refuse to st...reivilibre2022-03-081-1/+2
* | Merge remote-tracking branch 'origin/release-v1.54' into developRichard van der Hoff2022-03-041-7/+54
|\|
| * Don't impose version checks on dev extras at runtime (#12129)David Robertson2022-03-031-7/+54
* | Add type hints for `ObservableDeferred` attributes (#12159)Sean Quah2022-03-041-3/+11
|/
* Use importlib.metadata to read requirements (#12088)David Robertson2022-03-011-0/+127
* Fix rare error in `ReadWriteLock` when writers complete immediately (#12105)Sean Quah2022-03-011-1/+4
* Add `stop_cancellation` utility function (#12106)Sean Quah2022-03-011-0/+19
* Fix 'Unhandled error in Deferred' (#12089)Richard van der Hoff2022-03-011-32/+32
* Improve exception handling for concurrent execution (#12109)Richard van der Hoff2022-03-012-23/+35
* Upgrade mypy to version 0.931 (#12030)Sean Quah2022-02-182-5/+9
* Track cache invalidations (#12000)Erik Johnston2022-02-153-1/+9
* Use version string helper from matrix-common (#11979)David Robertson2022-02-141-85/+0
* Add missing type hints to synapse.replication. (#11938)Patrick Cloke2022-02-081-3/+2
* Add a callback to allow modules to deny 3PID (#11854)Brendan Abolivier2022-02-081-1/+12
* Describe `prune_unread_entries` in docstrings (#11876)David Robertson2022-02-023-2/+17
* Use auto_attribs/native type hints for attrs classes. (#11692)Patrick Cloke2022-01-132-9/+8
* Work around Mjolnir compatibility issue by adding an import for `glob_to_rege...reivilibre2022-01-061-0/+7
* Re-apply: Move glob_to_regex and re_word_boundary to matrix-python-common #11...reivilibre2022-01-051-58/+1
* Update to the current version of Black and run it on Synapse codebase (#11596)Shay2021-12-231-1/+0
* Improve opentracing support for `ResponseCache` (#11607)Richard van der Hoff2021-12-202-36/+113
* Add missing type hints to `synapse.logging.context` (#11556)Sean Quah2021-12-143-1/+58
* Revert "Move `glob_to_regex` and `re_word_boundary` to `matrix-python-common`...Sean Quah2021-12-071-1/+58
* Move `glob_to_regex` and `re_word_boundary` to `matrix-python-common` (#11505)Sean Quah2021-12-061-58/+1
* Clean-up get_version_string (#11468)Patrick Cloke2021-12-011-57/+25
* Fix `LruCache` corruption bug with a `size_callback` that can return 0 (#11454)Sean Quah2021-11-301-1/+4
* Eliminate a few `Any`s in `LruCache` type hints (#11453)Sean Quah2021-11-303-19/+31
* Merge branch 'master' into developSean Quah2021-11-231-7/+14
|\
| * Prevent the media store from writing outside of the configured directorySean Quah2021-11-191-7/+14
* | Add type annotations to `synapse.metrics` (#10847)Sean Quah2021-11-172-8/+9
* | Add most missing type hints to synapse.util (#11328)Patrick Cloke2021-11-168-81/+157
* | Add more type hints to synapse.util. (#11321)Patrick Cloke2021-11-121-12/+20
* | Add missing type hints to `synapse.app`. (#11287)Patrick Cloke2021-11-103-9/+9
|/
* ObservableDeferred: run observers in order (#11229)Richard van der Hoff2021-11-021-16/+18
* Move DNS lookups into separate thread pool (#11177)Erik Johnston2021-10-261-0/+136
* Relax `ignore-missing-imports` for modules that have stubs now and update myp...David Robertson2021-10-081-1/+4
* Fix long-standing bug where `ReadWriteLock` could drop logging contexts (#10993)Sean Quah2021-10-081-2/+4
* More types for synapse.util, part 1 (#10888)David Robertson2021-10-0610-73/+109
* Use direct references for configuration variables (part 7). (#10959)Patrick Cloke2021-10-041-2/+2
* Update utility code to handle C implementations of frozendict (#10902)Hillery Shay2021-09-281-1/+7
* Encode JSON responses on a thread in C, mk2 (#10905)Erik Johnston2021-09-281-2/+17
* Opt out of cache expiry for `get_users_who_share_room_with_user` (#10826)David Robertson2021-09-223-3/+20
* Track why we're evicting from caches (#10829)David Robertson2021-09-223-15/+30
* Add type hints to state database module. (#10823)Patrick Cloke2021-09-151-2/+2
* Use direct references for some configuration variables (#10798)Patrick Cloke2021-09-131-2/+2
* Add types to synapse.util. (#10601)reivilibre2021-09-1025-208/+281
* Add config option to use non-default manhole password and keys (#10643)Azrenbeth2021-09-061-3/+12
* Manhole: wrap coroutines in `defer.ensureDeferred` automatically (#10602)reivilibre2021-08-161-0/+14
* Convert Transaction and Edu object to attrs (#10542)Patrick Cloke2021-08-061-102/+0
* Remove shebang line from module files (#10415)V024602021-07-291-1/+0
* Generics for `ObservableDeferred` (#10491)Richard van der Hoff2021-07-281-6/+8
* Fix up type hints for Twisted 21.7 (#10490)Richard van der Hoff2021-07-283-12/+21
* improve typing annotations in CachedCall (#10450)Richard van der Hoff2021-07-281-10/+17
* [pyupgrade] `synapse/` (#10348)Jonathan de Jong2021-07-193-8/+6
* Use inline type hints in `http/federation/`, `storage/` and `util/` (#10381)Jonathan de Jong2021-07-1516-59/+57
* Add support for evicting cache entries based on last access time. (#10205)Erik Johnston2021-07-052-35/+352
* Standardise the module interface (#10062)Brendan Abolivier2021-06-181-15/+20
* Add debug logging when we enter/exit Measure block (#10183)Erik Johnston2021-06-161-0/+5
* Extend `ResponseCache` to pass a context object into the callback (#10157)Richard van der Hoff2021-06-141-26/+73
* When joining a remote room limit the number of events we concurrently check s...Erik Johnston2021-06-081-5/+16
* Fix up `BatchingQueue` (#10078)Erik Johnston2021-05-271-22/+48
* Combine `LruCache.invalidate` and `invalidate_many` (#9973)Richard van der Hoff2021-05-274-35/+36
* Add missing type hints to synapse.util (#9982)Patrick Cloke2021-05-244-21/+19
* Remove `keylen` from `LruCache`. (#9993)Richard van der Hoff2021-05-244-47/+70
* Don't hammer the database for destination retry timings every ~5mins (#10036)Erik Johnston2021-05-211-5/+3
* Add a batching queue implementation. (#10017)Erik Johnston2021-05-211-0/+153
* Minor `@cachedList` enhancements (#9975)Richard van der Hoff2021-05-141-6/+8
* Simplify exception handling in is_ascii. (#9985)Dan Callahan2021-05-141-3/+1
* Use Python's secrets module instead of random (#9984)Dan Callahan2021-05-141-8/+11
* Change the format of access tokens away from macaroons (#5588)Richard van der Hoff2021-05-121-0/+20
* Merge branch 'master' into developBrendan Abolivier2021-05-111-14/+47
|\
| * Merge pull request from GHSA-x345-32rc-8h85Richard van der Hoff2021-05-111-14/+47
* | Optionally track memory usage of each LruCache (#9881)Erik Johnston2021-05-052-1/+78
* | Reduce memory footprint of caches (#9886)Erik Johnston2021-04-281-18/+59
|/
* Remove various bits of compatibility code for Python <3.6 (#9879)Andrew Morgan2021-04-271-1/+1
* Limit length of accepted email addresses (#9855)Erik Johnston2021-04-221-0/+30
* Remove `synapse.types.Collection` (#9856)Richard van der Hoff2021-04-222-4/+2
* Merge branch 'master' into developAndrew Morgan2021-04-201-5/+9
|\
| * Always use the name as the log ID. (#9829)Patrick Cloke2021-04-201-5/+9
* | Sanity check identity server passed to bind/unbind. (#9802)Denis Kasak2021-04-191-0/+32
* | Remove redundant "coding: utf-8" lines (#9786)Jonathan de Jong2021-04-1432-33/+0
|/
* Bugbear: Add Mutable Parameter fixes (#9682)Jonathan de Jong2021-04-081-6/+8
* Add type hints to expiring cache. (#9730)Patrick Cloke2021-04-061-32/+51
* Update mypy configuration: `no_implicit_optional = True` (#9742)Jonathan de Jong2021-04-051-1/+3
* Add type hints to DictionaryCache and TTLCache. (#9442)Patrick Cloke2021-03-292-44/+73
* Make it possible to use dmypy (#9692)Erik Johnston2021-03-261-2/+2
* Enable addtional flake8-bugbear linting checks. (#9659)Jonathan de Jong2021-03-242-2/+2
* Fixed code misc. quality issues (#9649)Ankit Dobhal2021-03-221-1/+1
* Add logging to ObservableDeferred callbacks (#9523)Jonathan de Jong2021-03-091-8/+18
* Add ResponseCache tests. (#9458)Jonathan de Jong2021-03-081-6/+4
* Record the SSO Auth Provider in the login token (#9510)Richard van der Hoff2021-03-041-0/+89
* Revert "Fix #8518 (sync requests being cached wrongly on timeout) (#9358)"Patrick Cloke2021-03-021-32/+2
* Fix #8518 (sync requests being cached wrongly on timeout) (#9358)Jonathan de Jong2021-02-241-2/+32
* Update black, and run auto formatting over the codebase (#9381)Eric Eastwood2021-02-1611-48/+45
* Clean up caching/locking of OIDC metadata load (#9362)Richard van der Hoff2021-02-161-0/+129
* Fix some typos.Patrick Cloke2021-02-121-1/+1
* Merge tag 'v1.27.0rc2' into developPatrick Cloke2021-02-111-3/+12
|\
| * Backout changes for automatically calculating the public baseurl. (#9313)Patrick Cloke2021-02-111-3/+12
* | Type hints and validation improvements. (#9321)Patrick Cloke2021-02-081-15/+18
|/
* Merge branch 'social_login' into developRichard van der Hoff2021-02-011-0/+106
|\
| * Replace username picker with a template (#9275)Richard van der Hoff2021-02-011-0/+106
* | Pass a dict, instead of None, to modules if a None config is specified in the...Andrew Morgan2021-01-271-1/+2
|/
* Fix chain cover update to handle events with duplicate auth events (#9210)Erik Johnston2021-01-221-1/+1
* Support icons for Identity Providers (#9154)Richard van der Hoff2021-01-201-0/+92
* Remote dependency on distutils (#9125)Richard van der Hoff2021-01-151-0/+19
* Fix event chain bg update. (#9118)Erik Johnston2021-01-141-1/+1
* Use a chain cover index to efficiently calculate auth chain difference (#8868)Erik Johnston2021-01-111-1/+52
* Fix "Starting metrics collection from sentinel context" errors (#9053)Erik Johnston2021-01-081-1/+2
* Empty iterables should count towards cache usage. (#9028)Patrick Cloke2021-01-061-1/+1
* Add type hints to the logging context code. (#8939)Patrick Cloke2021-01-051-1/+9
* Allow spam-checker modules to be provide async methods. (#8890)David Teller2020-12-112-8/+7
* Better formatting for config errors from modules (#8874)Richard van der Hoff2020-12-081-6/+58
* Implement and use an @lru_cache decorator (#8595)Richard van der Hoff2020-10-301-47/+188
* Merge pull request #8678 from matrix-org/rav/fix_frozen_eventsRichard van der Hoff2020-10-282-25/+21
|\
| * Remove frozendict_json_encoder and support frozendicts everywhereRichard van der Hoff2020-10-282-25/+21
* | Tell Black to format code for Python 3.5 (#8664)Dan Callahan2020-10-271-1/+1
|/
* Optimise CacheDescriptor (#8594) github/release-v1.21.3 release-v1.21.3Richard van der Hoff2020-10-211-5/+7
* fix failure caseRichard van der Hoff2020-10-211-1/+4
* optimise DeferredCache.setRichard van der Hoff2020-10-211-3/+12
* Push some deferred wrangling down into DeferredCacheRichard van der Hoff2020-10-212-34/+55
* Fix 'LruCache' object has no attribute '_on_resize' (#8591)Richard van der Hoff2020-10-191-1/+9
* Add `DeferredCache.get_immediate` method (#8568)Richard van der Hoff2020-10-191-10/+25
* Replace DeferredCache with LruCache where possible (#8563)Richard van der Hoff2020-10-191-0/+3
* review commentsRichard van der Hoff2020-10-161-3/+8
* Apply suggestions from code reviewRichard van der Hoff2020-10-161-1/+1
* type annotations for LruCacheRichard van der Hoff2020-10-163-23/+77
* Make LruCache register its own metrics (#8561)Richard van der Hoff2020-10-164-54/+57
* Enable mypy for synapse.util.caches (#8547)Richard van der Hoff2020-10-151-1/+1
* move DeferredCache into its own moduleRichard van der Hoff2020-10-142-282/+294
* Rename Cache->DeferredCacheRichard van der Hoff2020-10-141-7/+12
* Add some more type annotations to CacheRichard van der Hoff2020-10-142-23/+61
* Add type hints to response cache. (#8507)Patrick Cloke2020-10-091-22/+28
* Clarify error message when plugin config parsers raise an error (#8492)Richard van der Hoff2020-10-081-1/+1
* Expose a `get_resource_usage` method in `Measure`Richard van der Hoff2020-09-291-10/+21
* Fix handling of connection timeouts in outgoing http requests (#8400)Richard van der Hoff2020-09-291-29/+18
* Simplify super() calls to Python 3 syntax. (#8344)Patrick Cloke2020-09-182-2/+2
* Remove obsolete __future__ imports (#8337)Jonathan de Jong2020-09-171-2/+0
* Use slots in attrs classes where possible (#8296)Patrick Cloke2020-09-142-2/+2
* Merge tag 'v1.20.0rc3' into developPatrick Cloke2020-09-111-1/+1
|\
| * Fix the exception that is raised when invalid JSON is encountered. (#8291)Patrick Cloke2020-09-101-1/+1
* | Remove some unused distributor signals (#8216)Patrick Cloke2020-09-091-42/+8
* | Add types to async_helpers (#8260)Patrick Cloke2020-09-081-50/+85
* | Directly import json from the standard library. (#8259)Patrick Cloke2020-09-082-3/+4
|/
* Stop sub-classing object (#8249)Patrick Cloke2020-09-0417-31/+31
* Fix typing for `@cached` wrapped functions (#8240)Erik Johnston2020-09-031-14/+28
* Convert ReadWriteLock to async/await. (#8202)Patrick Cloke2020-08-281-8/+8
* Be stricter about JSON that is accepted by Synapse (#8106)Patrick Cloke2020-08-191-2/+12
* Remove the unused inlineCallbacks code-paths in the caching code (#8119)Patrick Cloke2020-08-191-46/+8
* Remove : from allowed client_secret chars (#8101)Andrew Morgan2020-08-181-3/+1
* Fix typing for notifier (#8064)Erik Johnston2020-08-121-3/+6
* Remove unnecessary maybeDeferred calls (#8044)Patrick Cloke2020-08-071-1/+1
* Reduce unnecessary whitespace in JSON. (#7372)David Vo2020-08-072-2/+9
* Convert some util functions to async (#8035)Patrick Cloke2020-08-062-28/+27
* Stop the parent process flushing the logs on exit (#8012)Richard van der Hoff2020-08-051-2/+8
* re-implement daemonize (#8011)Richard van der Hoff2020-08-041-0/+131
* Fix deprecation warning: import ABC from collections.abc (#7892)Karthikeyan Singaravelan2020-07-201-1/+1
* Convert device handler to async/await (#7871)Patrick Cloke2020-07-171-2/+26
* Fix some spelling mistakes / typos. (#7811)Patrick Cloke2020-07-096-7/+7
* Fix inconsistent handling of upper and lower cases of email addresses. (#7021)Dirk Klimpel2020-07-031-0/+23
* Fix "argument of type 'ObservableDeferred' is not iterable" error (#7708)Patrick Cloke2020-06-161-1/+1
* Replace all remaining six usage with native Python 3 equivalents (#7704)Dagfinn Ilmari Mannsåker2020-06-165-12/+4
* Replace iteritems/itervalues/iterkeys with native versions. (#7692)Patrick Cloke2020-06-153-10/+4
* Performance improvements and refactor of Ratelimiter (#7595)Andrew Morgan2020-06-051-1/+1
* Speed up processing of federation stream RDATA rows.Erik Johnston2020-05-271-0/+12
* Don't apply cache factor to event cache. (#7578)Erik Johnston2020-05-271-0/+4
* Fix stacktrace mangling in `patch_inline_callbacks` (#7554)Richard van der Hoff2020-05-221-2/+7
* remove miscellaneous PY2 codeRichard van der Hoff2020-05-152-27/+8
* remove to_asciiRichard van der Hoff2020-05-151-19/+1
* Remove `exception_to_unicode`Richard van der Hoff2020-05-151-36/+0
* Strictly enforce canonicaljson requirements in a new room version (#7381)Patrick Cloke2020-05-141-1/+1
* Allow configuration of Synapse's cache without using synctl or environment va...Amber Brown2020-05-117-92/+206
* Speed up fetching device lists changes in sync.Erik Johnston2020-05-051-4/+15
* Extend StreamChangeCache to support multiple entities per stream ID (#7303)Richard van der Hoff2020-04-221-46/+71
* On catchup, process each row with its own stream id (#7286)Richard van der Hoff2020-04-201-0/+3
* Rewrite prune_old_outbound_device_pokes for efficiency (#7159)Richard van der Hoff2020-03-301-1/+20
* Clean up some LoggingContext stuff (#7120)Richard van der Hoff2020-03-242-20/+20
* Clarify list/set/dict/tuple comprehensions and enforce via flake8 (#6957)Patrick Cloke2020-02-211-1/+1
* Reduce amount of logging at INFO level. (#6862)Erik Johnston2020-02-061-1/+1
* Fix stacktraces when using ObservableDeferred and async/await (#6836)Erik Johnston2020-02-031-0/+4
* Validate client_secret parameter (#6767)Andrew Morgan2020-01-241-0/+17
* Log saml assertions rather than the whole responseRichard van der Hoff2020-01-161-0/+13
* move batch_iter to a separate moduleRichard van der Hoff2020-01-162-17/+35
* Handle `config` not being set for synapse plugin modulesRichard van der Hoff2020-01-121-1/+1
* Persist auth/state events at backwards extremities when we fetch them (#6526)Richard van der Hoff2019-12-161-2/+2
* look up cross-signing keys from the DB in bulk (#6486)Hubert Chathi2019-12-121-1/+1
* Remove SnapshotCache in favour of ResponseCacheErik Johnston2019-12-091-94/+0
* Fix inaccurate per-block metrics (#6491)Richard van der Hoff2019-12-091-42/+18
* Port SyncHandler to async/awaitErik Johnston2019-12-051-6/+17
* Replace instance variations of homeserver with correct case/spacingAndrew Morgan2019-11-121-1/+1
* Fix LruCache callback deduplication (#6213)V024602019-11-071-11/+37
* Remove usage of deprecated logger.warn method from codebase (#6271)Andrew Morgan2019-10-314-6/+6
* Clarify docstringErik Johnston2019-10-301-0/+4
* Make ObservableDeferred.observe() always return deferred.Erik Johnston2019-10-301-5/+2
* Handle FileNotFound error in checking git repository version (#6284)Andrew Morgan2019-10-301-4/+6
* Make concurrently_execute work with async/awaitErik Johnston2019-10-291-4/+3
* Update docstringErik Johnston2019-10-291-3/+2
* Quick fix to ensure cache descriptors always return deferredsErik Johnston2019-10-281-2/+2
* Add maybe_awaitable and fix __init__ bugsErik Johnston2019-10-111-0/+29
* Fixup commentsErik Johnston2019-10-101-3/+3
* Fix py3.5Erik Johnston2019-10-101-1/+1
* Fix py3.5Erik Johnston2019-10-101-1/+1
* sortErik Johnston2019-10-101-3/+1
* Appease mypyErik Johnston2019-10-101-13/+18
* Add comentsErik Johnston2019-10-101-5/+25
* Log correct contextErik Johnston2019-10-101-6/+6
* Test for sentinel commitErik Johnston2019-10-101-2/+19