diff options
author | Richard van der Hoff <1389908+richvdh@users.noreply.github.com> | 2020-03-30 19:06:52 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-30 19:06:52 +0100 |
commit | 7966a1cde9d4b598faa06620424844f2b35c94af (patch) | |
tree | 436cafacaaa84c9c858672143202431668954160 /synapse/util | |
parent | Transfer alias mappings when joining an upgraded room (#6946) (diff) | |
download | synapse-7966a1cde9d4b598faa06620424844f2b35c94af.tar.xz |
Rewrite prune_old_outbound_device_pokes for efficiency (#7159)
make sure we clear out all but one update for the user
Diffstat (limited to 'synapse/util')
-rw-r--r-- | synapse/util/stringutils.py | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/synapse/util/stringutils.py b/synapse/util/stringutils.py index 2c0dcb5208..6899bcb788 100644 --- a/synapse/util/stringutils.py +++ b/synapse/util/stringutils.py @@ -13,10 +13,11 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. - +import itertools import random import re import string +from collections import Iterable import six from six import PY2, PY3 @@ -126,3 +127,21 @@ def assert_valid_client_secret(client_secret): raise SynapseError( 400, "Invalid client_secret parameter", errcode=Codes.INVALID_PARAM ) + + +def shortstr(iterable: Iterable, maxitems: int = 5) -> str: + """If iterable has maxitems or fewer, return the stringification of a list + containing those items. + + Otherwise, return the stringification of a a list with the first maxitems items, + followed by "...". + + Args: + iterable: iterable to truncate + maxitems: number of items to return before truncating + """ + + items = list(itertools.islice(iterable, maxitems + 1)) + if len(items) <= maxitems: + return str(items) + return "[" + ", ".join(repr(r) for r in items[:maxitems]) + ", ...]" |