1# This file is part of Hypothesis, which may be found at
2# https://github.com/HypothesisWorks/hypothesis/
3#
4# Copyright the Hypothesis Authors.
5# Individual contributors are listed in AUTHORS.rst and the git log.
6#
7# This Source Code Form is subject to the terms of the Mozilla Public License,
8# v. 2.0. If a copy of the MPL was not distributed with this file, You can
9# obtain one at https://mozilla.org/MPL/2.0/.
10
11from hypothesis.internal.conjecture.shrinking.collection import Collection
12from hypothesis.internal.conjecture.shrinking.integer import Integer
13
14
15class String(Collection):
16 def __init__(self, initial, predicate, *, intervals, **kwargs):
17 super().__init__(
18 list(initial),
19 lambda val: predicate("".join(val)),
20 to_order=intervals.index_from_char_in_shrink_order,
21 from_order=intervals.char_in_shrink_order,
22 ElementShrinker=Integer,
23 **kwargs,
24 )