summary refs log tree commit diff
path: root/synapse/util (follow)
Commit message (Expand)AuthorAgeFilesLines
* 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
* Move patch_inline_callbacks into synapse/Erik Johnston2019-10-101-0/+179
* add some metrics on the federation sender (#6160)Richard van der Hoff2019-10-031-2/+4
* Fix up some typechecking (#6150)Amber Brown2019-10-025-8/+33
* Fix errors storing large retry intervals.Erik Johnston2019-10-021-1/+1
* Merge branch 'develop' into rav/fix_attribute_mappingRichard van der Hoff2019-09-193-21/+68
|\
| * Add 'failure_ts' column to 'destinations' table (#6016)Richard van der Hoff2019-09-171-1/+15
| * Remove the cap on federation retry interval. (#6026)Richard van der Hoff2019-09-121-2/+2
| * Fix bug in calculating the federation retry backoff period (#6025)Richard van der Hoff2019-09-121-2/+3
| * Use the v2 Identity Service API for lookups (MSC2134 + MSC2140) (#5976)Andrew Morgan2019-09-111-0/+33
| * Clean up some code in the retry logic (#6017)Richard van der Hoff2019-09-111-16/+13
| * Revert "Use the v2 lookup API for 3PID invites (#5897)" (#5937)Andrew Morgan2019-08-301-33/+0
| * Use the v2 lookup API for 3PID invites (#5897)Andrew Morgan2019-08-281-0/+33
| * Retry well-known lookup before expiry.Erik Johnston2019-08-131-3/+5
* | Fix a bug with saml attribute maps.Richard van der Hoff2019-09-191-1/+19
|/
* Add kwargs and docBrendan Abolivier2019-07-291-2/+4
* Add ability to pass arguments to looping callsBrendan Abolivier2019-07-291-2/+2
* Fix some error cases in the caching layer. (#5749)Richard van der Hoff2019-07-251-32/+42
* Add a prometheus metric for active cache lookups. (#5750)Richard van der Hoff2019-07-242-2/+33
* Replace returnValue with return (#5736)Amber Brown2019-07-236-15/+13
* Cache get_version_string.Erik Johnston2019-07-221-2/+21
* Fixes to the federation rate limiter (#5621)Richard van der Hoff2019-07-051-8/+8
* Improve the backwards compatibility re-exports of synapse.logging.context (#5...Amber Brown2019-07-053-5/+61
* Move logging utilities out of the side drawer of util/ and into logging/ (#5606)Amber Brown2019-07-0412-962/+26
* Fix 'utime went backwards' errors on daemonization. (#5609)Richard van der Hoff2019-07-031-4/+13
* Fix a number of "Starting txn from sentinel context" warnings (#5605)Richard van der Hoff2019-07-031-1/+7
* Fix media repo breaking (#5593)Amber Brown2019-07-021-2/+7
* Prevent multiple upgrades on the same room at once (#5051)Andrew Morgan2019-06-251-1/+1
* Avoid raising exceptions in metricsRichard van der Hoff2019-06-241-8/+14
* Merge branch 'develop' into rav/cleanup_metricsRichard van der Hoff2019-06-2427-314/+317
|\
| * Run Black. (#5482)Amber Brown2019-06-2027-314/+317
* | Sanity-checking for metrics updatesRichard van der Hoff2019-06-191-7/+33
|/
* Call RetryLimiter correctly (#5340)Richard van der Hoff2019-06-041-1/+6
* Avoid rapidly backing-off a server if we ignore the retry intervalRichard van der Hoff2019-06-031-23/+37
* Improve logging for logcontext leaks. (#5288)Richard van der Hoff2019-05-291-9/+13
* Make all the rate limiting options more consistent (#5181)Amber Brown2019-05-151-32/+15
* Merge pull request #5183 from matrix-org/erikj/async_serialize_eventErik Johnston2019-05-151-0/+19
|\
| * Update docstring with correct return typeErik Johnston2019-05-151-1/+1
| * Allow client event serialization to be asyncErik Johnston2019-05-141-0/+19
* | comment about user_joined_roomRichard van der Hoff2019-05-141-0/+1
|/
* Merge branch 'master' into developRichard van der Hoff2019-05-031-2/+7
|\
| * Use SystemRandom for token generationRichard van der Hoff2019-05-031-2/+7
* | Remove periods from copyright headers (#5046)Andrew Morgan2019-04-111-1/+1
* | Fix disappearing exceptions in manhole. (#5035)Richard van der Hoff2019-04-101-2/+57
|/
* Add a caching layer to .well-known responses (#4516)Richard van der Hoff2019-01-301-0/+161
* Merge pull request #4486 from xperimental/workaround-4216Richard van der Hoff2019-01-301-1/+4
|\
| * Implement workaround for login error.Robert Jacob2019-01-301-1/+4
* | Make linearizer more quiet (#4507)Amber Brown2019-01-291-5/+5
|/
* Fix incorrect logcontexts after a Deferred was cancelled (#4407)Richard van der Hoff2019-01-171-1/+3
* Fix UnicodeDecodeError when postgres is not configured in english (#4253)Richard van der Hoff2018-12-041-1/+38
* Merge branch 'develop' of github.com:matrix-org/synapse into erikj/alias_disa...Erik Johnston2018-10-253-54/+76
|\
| * Correctly account for cpu usage by background threads (#4074)Richard van der Hoff2018-10-231-51/+69
| * Make scripts/ and scripts-dev/ pass pyflakes (and the rest of the codebase on...Amber Brown2018-10-201-1/+3
| * Fix manhole on py3 (pt 2) (#4067)Amber Brown2018-10-191-0/+2
| * make a bytestringAmber Brown2018-10-191-2/+2
* | Anchor returned regex to start and end of stringErik Johnston2018-10-191-2/+6
* | Add config option to control alias creationErik Johnston2018-10-191-0/+21
|/
* Remove unnecessary extra function call layerErik Johnston2018-10-081-16/+13
* Use errback pattern and catch async failuresErik Johnston2018-10-081-14/+29
* Log looping call exceptionsErik Johnston2018-10-051-1/+18
* Correctly match 'dict.pop' apiErik Johnston2018-10-011-3/+11
* Don't update eviction metrics on explicit removalErik Johnston2018-10-011-5/+0