We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Implement FloatConverter
Implement `FloatConverter` along the lines of [`IntConverter`](https://falcon.readthedocs.io/en/stable/api/routing.html#falcon.routing.IntConverter). Draw inspiration from `IntConverter`, or even find an efficient way to share code between the two!

Add the new converter to the list of [Built-in Converters](https://falcon.readthedocs.io/en/stable/api/routing.html#built-in-converters) under the `float` identifier.

Open questions: should we support converting `nan`, `inf` & `-inf` from path?

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `falcon/routing/converters.py`
Content:
```
1 # Copyright 2017 by Rackspace Hosting, Inc.
2 #
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
6 #
7 #    http://www.apache.org/licenses/LICENSE-2.0
8 #
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
14 
15 import abc
16 from datetime import datetime
17 import uuid
18 
19 __all__ = (
20     'BaseConverter',
21     'IntConverter',
22     'DateTimeConverter',
23     'UUIDConverter',
24 )
25 
26 
27 # PERF(kgriffs): Avoid an extra namespace lookup when using this function
28 strptime = datetime.strptime
29 
30 
31 class BaseConverter(metaclass=abc.ABCMeta):
32     """Abstract base class for URI template field converters."""
33 
34     CONSUME_MULTIPLE_SEGMENTS = False
35     """When set to ``True`` it indicates that this converter will consume
36     multiple URL path segments. Currently a converter with
37     ``CONSUME_MULTIPLE_SEGMENTS=True`` must be at the end of the URL template
38     effectively meaning that it will consume all of the remaining URL path
39     segments.
40     """
41 
42     @abc.abstractmethod  # pragma: no cover
43     def convert(self, value):
44         """Convert a URI template field value to another format or type.
45 
46         Args:
47             value (str or List[str]): Original string to convert.
48                 If ``CONSUME_MULTIPLE_SEGMENTS=True`` this value is a
49                 list of strings containing the path segments matched by
50                 the converter.
51 
52         Returns:
53             object: Converted field value, or ``None`` if the field
54                 can not be converted.
55         """
56 
57 
58 def _consumes_multiple_segments(converter):
59     return getattr(converter, 'CONSUME_MULTIPLE_SEGMENTS', False)
60 
61 
62 class IntConverter(BaseConverter):
63     """Converts a field value to an int.
64 
65     Identifier: `int`
66 
67     Keyword Args:
68         num_digits (int): Require the value to have the given
69             number of digits.
70         min (int): Reject the value if it is less than this number.
71         max (int): Reject the value if it is greater than this number.
72     """
73 
74     __slots__ = ('_num_digits', '_min', '_max')
75 
76     def __init__(self, num_digits=None, min=None, max=None):
77         if num_digits is not None and num_digits < 1:
78             raise ValueError('num_digits must be at least 1')
79 
80         self._num_digits = num_digits
81         self._min = min
82         self._max = max
83 
84     def convert(self, value):
85         if self._num_digits is not None and len(value) != self._num_digits:
86             return None
87 
88         # NOTE(kgriffs): int() will accept numbers with preceding or
89         # trailing whitespace, so we need to do our own check. Using
90         # strip() is faster than either a regex or a series of or'd
91         # membership checks via "in", esp. as the length of contiguous
92         # numbers in the value grows.
93         if value.strip() != value:
94             return None
95 
96         try:
97             value = int(value)
98         except ValueError:
99             return None
100 
101         if self._min is not None and value < self._min:
102             return None
103 
104         if self._max is not None and value > self._max:
105             return None
106 
107         return value
108 
109 
110 class DateTimeConverter(BaseConverter):
111     """Converts a field value to a datetime.
112 
113     Identifier: `dt`
114 
115     Keyword Args:
116         format_string (str): String used to parse the field value
117             into a datetime. Any format recognized by strptime() is
118             supported (default ``'%Y-%m-%dT%H:%M:%SZ'``).
119     """
120 
121     __slots__ = ('_format_string',)
122 
123     def __init__(self, format_string='%Y-%m-%dT%H:%M:%SZ'):
124         self._format_string = format_string
125 
126     def convert(self, value):
127         try:
128             return strptime(value, self._format_string)
129         except ValueError:
130             return None
131 
132 
133 class UUIDConverter(BaseConverter):
134     """Converts a field value to a uuid.UUID.
135 
136     Identifier: `uuid`
137 
138     In order to be converted, the field value must consist of a
139     string of 32 hexadecimal digits, as defined in RFC 4122, Section 3.
140     Note, however, that hyphens and the URN prefix are optional.
141     """
142 
143     def convert(self, value):
144         try:
145             return uuid.UUID(value)
146         except ValueError:
147             return None
148 
149 
150 class PathConverter(BaseConverter):
151     """Field converted used to match the rest of the path.
152 
153     This field converter matches the remainder of the URL path,
154     returning it as a string.
155 
156     This converter is currently supported only when used at the
157     end of the URL template.
158 
159     The classic routing rules of falcon apply also to this converter:
160     considering the template ``'/foo/bar/{matched_path:path}'``, the path
161     ``'/foo/bar'`` will *not* match the route; ``'/foo/bar/'`` will
162     match, producing ``matched_path=''``, when
163     :attr:`~falcon.RequestOptions.strip_url_path_trailing_slash` is ``False``
164     (the default), while it will *not* match when that option is ``True``.
165 
166     (See also: :ref:`trailing_slash_in_path`)
167     """
168 
169     CONSUME_MULTIPLE_SEGMENTS = True
170 
171     def convert(self, value):
172         return '/'.join(value)
173 
174 
175 BUILTIN = (
176     ('int', IntConverter),
177     ('dt', DateTimeConverter),
178     ('uuid', UUIDConverter),
179     ('path', PathConverter),
180 )
181
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/falcon/routing/converters.py b/falcon/routing/converters.py
--- a/falcon/routing/converters.py
+++ b/falcon/routing/converters.py
@@ -14,6 +14,7 @@
 
 import abc
 from datetime import datetime
+from math import isfinite
 import uuid
 
 __all__ = (
@@ -21,6 +22,7 @@
     'IntConverter',
     'DateTimeConverter',
     'UUIDConverter',
+    'FloatConverter',
 )
 
 
@@ -76,7 +78,6 @@
     def __init__(self, num_digits=None, min=None, max=None):
         if num_digits is not None and num_digits < 1:
             raise ValueError('num_digits must be at least 1')
-
         self._num_digits = num_digits
         self._min = min
         self._max = max
@@ -86,10 +87,10 @@
             return None
 
         # NOTE(kgriffs): int() will accept numbers with preceding or
-        # trailing whitespace, so we need to do our own check. Using
-        # strip() is faster than either a regex or a series of or'd
-        # membership checks via "in", esp. as the length of contiguous
-        # numbers in the value grows.
+        #   trailing whitespace, so we need to do our own check. Using
+        #   strip() is faster than either a regex or a series of or'd
+        #   membership checks via "in", esp. as the length of contiguous
+        #   numbers in the value grows.
         if value.strip() != value:
             return None
 
@@ -98,15 +99,52 @@
         except ValueError:
             return None
 
+        return self._validate_min_max_value(value)
+
+    def _validate_min_max_value(self, value):
         if self._min is not None and value < self._min:
             return None
-
         if self._max is not None and value > self._max:
             return None
 
         return value
 
 
+class FloatConverter(IntConverter):
+    """Converts a field value to an float.
+
+    Identifier: `float`
+    Keyword Args:
+        min (float): Reject the value if it is less than this number.
+        max (float): Reject the value if it is greater than this number.
+        finite (bool) : Determines whether or not to only match ordinary
+            finite numbers (default: ``True``). Set to ``False`` to match
+            nan, inf, and -inf in addition to finite numbers.
+    """
+
+    __slots__ = '_finite'
+
+    def __init__(self, min: float = None, max: float = None, finite: bool = True):
+        self._min = min
+        self._max = max
+        self._finite = finite if finite is not None else True
+
+    def convert(self, value: str):
+        if value.strip() != value:
+            return None
+
+        try:
+            value = float(value)
+
+            if self._finite and not isfinite(value):
+                return None
+
+        except ValueError:
+            return None
+
+        return self._validate_min_max_value(value)
+
+
 class DateTimeConverter(BaseConverter):
     """Converts a field value to a datetime.
 
@@ -176,5 +214,6 @@
     ('int', IntConverter),
     ('dt', DateTimeConverter),
     ('uuid', UUIDConverter),
+    ('float', FloatConverter),
     ('path', PathConverter),
 )

{"golden_diff": "diff --git a/falcon/routing/converters.py b/falcon/routing/converters.py\n--- a/falcon/routing/converters.py\n+++ b/falcon/routing/converters.py\n@@ -14,6 +14,7 @@\n \n import abc\n from datetime import datetime\n+from math import isfinite\n import uuid\n \n __all__ = (\n@@ -21,6 +22,7 @@\n     'IntConverter',\n     'DateTimeConverter',\n     'UUIDConverter',\n+    'FloatConverter',\n )\n \n \n@@ -76,7 +78,6 @@\n     def __init__(self, num_digits=None, min=None, max=None):\n         if num_digits is not None and num_digits < 1:\n             raise ValueError('num_digits must be at least 1')\n-\n         self._num_digits = num_digits\n         self._min = min\n         self._max = max\n@@ -86,10 +87,10 @@\n             return None\n \n         # NOTE(kgriffs): int() will accept numbers with preceding or\n-        # trailing whitespace, so we need to do our own check. Using\n-        # strip() is faster than either a regex or a series of or'd\n-        # membership checks via \"in\", esp. as the length of contiguous\n-        # numbers in the value grows.\n+        #   trailing whitespace, so we need to do our own check. Using\n+        #   strip() is faster than either a regex or a series of or'd\n+        #   membership checks via \"in\", esp. as the length of contiguous\n+        #   numbers in the value grows.\n         if value.strip() != value:\n             return None\n \n@@ -98,15 +99,52 @@\n         except ValueError:\n             return None\n \n+        return self._validate_min_max_value(value)\n+\n+    def _validate_min_max_value(self, value):\n         if self._min is not None and value < self._min:\n             return None\n-\n         if self._max is not None and value > self._max:\n             return None\n \n         return value\n \n \n+class FloatConverter(IntConverter):\n+    \"\"\"Converts a field value to an float.\n+\n+    Identifier: `float`\n+    Keyword Args:\n+        min (float): Reject the value if it is less than this number.\n+        max (float): Reject the value if it is greater than this number.\n+        finite (bool) : Determines whether or not to only match ordinary\n+            finite numbers (default: ``True``). Set to ``False`` to match\n+            nan, inf, and -inf in addition to finite numbers.\n+    \"\"\"\n+\n+    __slots__ = '_finite'\n+\n+    def __init__(self, min: float = None, max: float = None, finite: bool = True):\n+        self._min = min\n+        self._max = max\n+        self._finite = finite if finite is not None else True\n+\n+    def convert(self, value: str):\n+        if value.strip() != value:\n+            return None\n+\n+        try:\n+            value = float(value)\n+\n+            if self._finite and not isfinite(value):\n+                return None\n+\n+        except ValueError:\n+            return None\n+\n+        return self._validate_min_max_value(value)\n+\n+\n class DateTimeConverter(BaseConverter):\n     \"\"\"Converts a field value to a datetime.\n \n@@ -176,5 +214,6 @@\n     ('int', IntConverter),\n     ('dt', DateTimeConverter),\n     ('uuid', UUIDConverter),\n+    ('float', FloatConverter),\n     ('path', PathConverter),\n )\n", "issue": "Implement FloatConverter\nImplement `FloatConverter` along the lines of [`IntConverter`](https://falcon.readthedocs.io/en/stable/api/routing.html#falcon.routing.IntConverter). Draw inspiration from `IntConverter`, or even find an efficient way to share code between the two!\r\n\r\nAdd the new converter to the list of [Built-in Converters](https://falcon.readthedocs.io/en/stable/api/routing.html#built-in-converters) under the `float` identifier.\r\n\r\nOpen questions: should we support converting `nan`, `inf` & `-inf` from path?\n", "before_files": [{"content": "# Copyright 2017 by Rackspace Hosting, Inc.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nimport abc\nfrom datetime import datetime\nimport uuid\n\n__all__ = (\n    'BaseConverter',\n    'IntConverter',\n    'DateTimeConverter',\n    'UUIDConverter',\n)\n\n\n# PERF(kgriffs): Avoid an extra namespace lookup when using this function\nstrptime = datetime.strptime\n\n\nclass BaseConverter(metaclass=abc.ABCMeta):\n    \"\"\"Abstract base class for URI template field converters.\"\"\"\n\n    CONSUME_MULTIPLE_SEGMENTS = False\n    \"\"\"When set to ``True`` it indicates that this converter will consume\n    multiple URL path segments. Currently a converter with\n    ``CONSUME_MULTIPLE_SEGMENTS=True`` must be at the end of the URL template\n    effectively meaning that it will consume all of the remaining URL path\n    segments.\n    \"\"\"\n\n    @abc.abstractmethod  # pragma: no cover\n    def convert(self, value):\n        \"\"\"Convert a URI template field value to another format or type.\n\n        Args:\n            value (str or List[str]): Original string to convert.\n                If ``CONSUME_MULTIPLE_SEGMENTS=True`` this value is a\n                list of strings containing the path segments matched by\n                the converter.\n\n        Returns:\n            object: Converted field value, or ``None`` if the field\n                can not be converted.\n        \"\"\"\n\n\ndef _consumes_multiple_segments(converter):\n    return getattr(converter, 'CONSUME_MULTIPLE_SEGMENTS', False)\n\n\nclass IntConverter(BaseConverter):\n    \"\"\"Converts a field value to an int.\n\n    Identifier: `int`\n\n    Keyword Args:\n        num_digits (int): Require the value to have the given\n            number of digits.\n        min (int): Reject the value if it is less than this number.\n        max (int): Reject the value if it is greater than this number.\n    \"\"\"\n\n    __slots__ = ('_num_digits', '_min', '_max')\n\n    def __init__(self, num_digits=None, min=None, max=None):\n        if num_digits is not None and num_digits < 1:\n            raise ValueError('num_digits must be at least 1')\n\n        self._num_digits = num_digits\n        self._min = min\n        self._max = max\n\n    def convert(self, value):\n        if self._num_digits is not None and len(value) != self._num_digits:\n            return None\n\n        # NOTE(kgriffs): int() will accept numbers with preceding or\n        # trailing whitespace, so we need to do our own check. Using\n        # strip() is faster than either a regex or a series of or'd\n        # membership checks via \"in\", esp. as the length of contiguous\n        # numbers in the value grows.\n        if value.strip() != value:\n            return None\n\n        try:\n            value = int(value)\n        except ValueError:\n            return None\n\n        if self._min is not None and value < self._min:\n            return None\n\n        if self._max is not None and value > self._max:\n            return None\n\n        return value\n\n\nclass DateTimeConverter(BaseConverter):\n    \"\"\"Converts a field value to a datetime.\n\n    Identifier: `dt`\n\n    Keyword Args:\n        format_string (str): String used to parse the field value\n            into a datetime. Any format recognized by strptime() is\n            supported (default ``'%Y-%m-%dT%H:%M:%SZ'``).\n    \"\"\"\n\n    __slots__ = ('_format_string',)\n\n    def __init__(self, format_string='%Y-%m-%dT%H:%M:%SZ'):\n        self._format_string = format_string\n\n    def convert(self, value):\n        try:\n            return strptime(value, self._format_string)\n        except ValueError:\n            return None\n\n\nclass UUIDConverter(BaseConverter):\n    \"\"\"Converts a field value to a uuid.UUID.\n\n    Identifier: `uuid`\n\n    In order to be converted, the field value must consist of a\n    string of 32 hexadecimal digits, as defined in RFC 4122, Section 3.\n    Note, however, that hyphens and the URN prefix are optional.\n    \"\"\"\n\n    def convert(self, value):\n        try:\n            return uuid.UUID(value)\n        except ValueError:\n            return None\n\n\nclass PathConverter(BaseConverter):\n    \"\"\"Field converted used to match the rest of the path.\n\n    This field converter matches the remainder of the URL path,\n    returning it as a string.\n\n    This converter is currently supported only when used at the\n    end of the URL template.\n\n    The classic routing rules of falcon apply also to this converter:\n    considering the template ``'/foo/bar/{matched_path:path}'``, the path\n    ``'/foo/bar'`` will *not* match the route; ``'/foo/bar/'`` will\n    match, producing ``matched_path=''``, when\n    :attr:`~falcon.RequestOptions.strip_url_path_trailing_slash` is ``False``\n    (the default), while it will *not* match when that option is ``True``.\n\n    (See also: :ref:`trailing_slash_in_path`)\n    \"\"\"\n\n    CONSUME_MULTIPLE_SEGMENTS = True\n\n    def convert(self, value):\n        return '/'.join(value)\n\n\nBUILTIN = (\n    ('int', IntConverter),\n    ('dt', DateTimeConverter),\n    ('uuid', UUIDConverter),\n    ('path', PathConverter),\n)\n", "path": "falcon/routing/converters.py"}], "after_files": [{"content": "# Copyright 2017 by Rackspace Hosting, Inc.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nimport abc\nfrom datetime import datetime\nfrom math import isfinite\nimport uuid\n\n__all__ = (\n    'BaseConverter',\n    'IntConverter',\n    'DateTimeConverter',\n    'UUIDConverter',\n    'FloatConverter',\n)\n\n\n# PERF(kgriffs): Avoid an extra namespace lookup when using this function\nstrptime = datetime.strptime\n\n\nclass BaseConverter(metaclass=abc.ABCMeta):\n    \"\"\"Abstract base class for URI template field converters.\"\"\"\n\n    CONSUME_MULTIPLE_SEGMENTS = False\n    \"\"\"When set to ``True`` it indicates that this converter will consume\n    multiple URL path segments. Currently a converter with\n    ``CONSUME_MULTIPLE_SEGMENTS=True`` must be at the end of the URL template\n    effectively meaning that it will consume all of the remaining URL path\n    segments.\n    \"\"\"\n\n    @abc.abstractmethod  # pragma: no cover\n    def convert(self, value):\n        \"\"\"Convert a URI template field value to another format or type.\n\n        Args:\n            value (str or List[str]): Original string to convert.\n                If ``CONSUME_MULTIPLE_SEGMENTS=True`` this value is a\n                list of strings containing the path segments matched by\n                the converter.\n\n        Returns:\n            object: Converted field value, or ``None`` if the field\n                can not be converted.\n        \"\"\"\n\n\ndef _consumes_multiple_segments(converter):\n    return getattr(converter, 'CONSUME_MULTIPLE_SEGMENTS', False)\n\n\nclass IntConverter(BaseConverter):\n    \"\"\"Converts a field value to an int.\n\n    Identifier: `int`\n\n    Keyword Args:\n        num_digits (int): Require the value to have the given\n            number of digits.\n        min (int): Reject the value if it is less than this number.\n        max (int): Reject the value if it is greater than this number.\n    \"\"\"\n\n    __slots__ = ('_num_digits', '_min', '_max')\n\n    def __init__(self, num_digits=None, min=None, max=None):\n        if num_digits is not None and num_digits < 1:\n            raise ValueError('num_digits must be at least 1')\n        self._num_digits = num_digits\n        self._min = min\n        self._max = max\n\n    def convert(self, value):\n        if self._num_digits is not None and len(value) != self._num_digits:\n            return None\n\n        # NOTE(kgriffs): int() will accept numbers with preceding or\n        #   trailing whitespace, so we need to do our own check. Using\n        #   strip() is faster than either a regex or a series of or'd\n        #   membership checks via \"in\", esp. as the length of contiguous\n        #   numbers in the value grows.\n        if value.strip() != value:\n            return None\n\n        try:\n            value = int(value)\n        except ValueError:\n            return None\n\n        return self._validate_min_max_value(value)\n\n    def _validate_min_max_value(self, value):\n        if self._min is not None and value < self._min:\n            return None\n        if self._max is not None and value > self._max:\n            return None\n\n        return value\n\n\nclass FloatConverter(IntConverter):\n    \"\"\"Converts a field value to an float.\n\n    Identifier: `float`\n    Keyword Args:\n        min (float): Reject the value if it is less than this number.\n        max (float): Reject the value if it is greater than this number.\n        finite (bool) : Determines whether or not to only match ordinary\n            finite numbers (default: ``True``). Set to ``False`` to match\n            nan, inf, and -inf in addition to finite numbers.\n    \"\"\"\n\n    __slots__ = '_finite'\n\n    def __init__(self, min: float = None, max: float = None, finite: bool = True):\n        self._min = min\n        self._max = max\n        self._finite = finite if finite is not None else True\n\n    def convert(self, value: str):\n        if value.strip() != value:\n            return None\n\n        try:\n            value = float(value)\n\n            if self._finite and not isfinite(value):\n                return None\n\n        except ValueError:\n            return None\n\n        return self._validate_min_max_value(value)\n\n\nclass DateTimeConverter(BaseConverter):\n    \"\"\"Converts a field value to a datetime.\n\n    Identifier: `dt`\n\n    Keyword Args:\n        format_string (str): String used to parse the field value\n            into a datetime. Any format recognized by strptime() is\n            supported (default ``'%Y-%m-%dT%H:%M:%SZ'``).\n    \"\"\"\n\n    __slots__ = ('_format_string',)\n\n    def __init__(self, format_string='%Y-%m-%dT%H:%M:%SZ'):\n        self._format_string = format_string\n\n    def convert(self, value):\n        try:\n            return strptime(value, self._format_string)\n        except ValueError:\n            return None\n\n\nclass UUIDConverter(BaseConverter):\n    \"\"\"Converts a field value to a uuid.UUID.\n\n    Identifier: `uuid`\n\n    In order to be converted, the field value must consist of a\n    string of 32 hexadecimal digits, as defined in RFC 4122, Section 3.\n    Note, however, that hyphens and the URN prefix are optional.\n    \"\"\"\n\n    def convert(self, value):\n        try:\n            return uuid.UUID(value)\n        except ValueError:\n            return None\n\n\nclass PathConverter(BaseConverter):\n    \"\"\"Field converted used to match the rest of the path.\n\n    This field converter matches the remainder of the URL path,\n    returning it as a string.\n\n    This converter is currently supported only when used at the\n    end of the URL template.\n\n    The classic routing rules of falcon apply also to this converter:\n    considering the template ``'/foo/bar/{matched_path:path}'``, the path\n    ``'/foo/bar'`` will *not* match the route; ``'/foo/bar/'`` will\n    match, producing ``matched_path=''``, when\n    :attr:`~falcon.RequestOptions.strip_url_path_trailing_slash` is ``False``\n    (the default), while it will *not* match when that option is ``True``.\n\n    (See also: :ref:`trailing_slash_in_path`)\n    \"\"\"\n\n    CONSUME_MULTIPLE_SEGMENTS = True\n\n    def convert(self, value):\n        return '/'.join(value)\n\n\nBUILTIN = (\n    ('int', IntConverter),\n    ('dt', DateTimeConverter),\n    ('uuid', UUIDConverter),\n    ('float', FloatConverter),\n    ('path', PathConverter),\n)\n", "path": "falcon/routing/converters.py"}]}