internlm/SWE-Fixer-Train-110K huggingface dataset:
Repository: kivy/kivy

Issue:
ColorPicker: Bugs and Improvement
I played a little around with the colorpicker widgets and found some issues:
- It is not possible to select a "pure" rgb color (eg pure red (255,0,0) with the color wheel
- if you bind "color" (as documeneted) you get multiple notifications fired, if you touch the colorwheel. If you have intensive operations on a color change, only one notification should get fired when the color is complete calculated

Improvement requests:
Add parameter to show only the wheel or only the input fields



Discussion:
Fixing the 'pure' rgb color problem.  It was a conversion error down in utils.py.

2) is not a bug, i would say, if you want to only trigger your calculation once, don't bind color directly, bind to some validation button, and trigger the calculation when it's hitten.


Resolving patch:
diff --git a/kivy/uix/colorpicker.py b/kivy/uix/colorpicker.py
--- a/kivy/uix/colorpicker.py
+++ b/kivy/uix/colorpicker.py
@@ -11,8 +11,9 @@
 
 
 The ColorPicker widget allows a user to select a color from a chromatic
-wheel where pinch and zoom can be used to change the selected color. Sliders
-and TextInputs are also provided for entering the RGBA/HSV/HEX values directly.
+wheel where pinch and zoom can be used to change the wheel's saturation.
+Sliders and TextInputs are also provided for entering the RGBA/HSV/HEX values
+directly.
 
 Usage::
 
@@ -428,7 +429,7 @@ def _trigger_update_clr(self, mode, clr_idx, text):
     def _update_clr(self, dt):
         mode, clr_idx, text = self._upd_clr_list
         try:
-            text = max(0, min(254, float(text)))
+            text = min(255, max(0, float(text)))
             if mode == 'rgb':
                 self.color[clr_idx] = float(text) / 255.
             else:


Test patch:
Repository: kivy/kivy

Issue:
Textinput handles misplaced while using ScrollView
Running latest kivy 1.9.
Handles are misplaced: they are shown outside the textbox.
Here is a sample code:

``` python
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.floatlayout import FloatLayout

kv = """
<RootWidget>:
    BoxLayout:
        orientation: 'vertical'

        Widget:
            height: .3
        ScrollView:
            id: sview

            TextInput:
                size_hint_y: None
                use_handles: True
                text: "%s" % ("Some text\\n" * 100)
                height: max(self.minimum_height, sview.height)
        Widget:
            height: .3
"""
Builder.load_string(kv)

class RootWidget(FloatLayout):
    pass

class MyApp(App):
    def build(self):
        return RootWidget()

MyApp().run()
```



Discussion:

Resolving patch:
diff --git a/kivy/uix/scrollview.py b/kivy/uix/scrollview.py
--- a/kivy/uix/scrollview.py
+++ b/kivy/uix/scrollview.py
@@ -539,7 +539,6 @@ def to_parent(self, x, y, **k):
     def _apply_transform(self, m):
         tx, ty = self.g_translate.xy
         m.translate(tx, ty, 0)
-        m.translate(self.x, self.y, 0)
         return super(ScrollView, self)._apply_transform(m)
 
     def simulate_touch_down(self, touch):


Test patch:
Repository: kivy/kivy

Issue:
RstDocument don't allow the right space for images
If you try to add images to RstDocument they will come on the text and not after.
On the realese **1.8.0** it was great, i have do some research but i didn't find what changed

``` python
BoxLayout:
    RstDocument:
        text: "==================\nTitle\n==================\n\n\n\n.. image:: myimage.png\n\n"
        scroll_y: 0
```



Discussion:

Resolving patch:
diff --git a/kivy/uix/rst.py b/kivy/uix/rst.py
--- a/kivy/uix/rst.py
+++ b/kivy/uix/rst.py
@@ -952,7 +952,7 @@ def dispatch_visit(self, node):
                 image = RstImage(source=uri)
 
             align = node.get('align', 'center')
-            root = AnchorLayout(size_hint_y=None, anchor_x=align, height=1)
+            root = AnchorLayout(size_hint_y=None, anchor_x=align, height=image.height)
             image.bind(height=root.setter('height'))
             root.add_widget(image)
             self.current.add_widget(root)


Test patch:
Repository: kivy/kivy

Issue:
ReferenceError triggered by inspector's tree view
It seems to crash when an item is selected in the tree, then deleted, but it does not always happen.
I've clicked around selecting widgets in the tree view, then deleting some of them/adding new ones.

``` python
 Traceback (most recent call last):
   File "/home/vix/dev/prs/main/main.py", line 1236, in <module>
     VioriseApp().run()
   File "/home/vix/dev/prs/kivy/kivy/app.py", line 824, in run
     runTouchApp()
   File "/home/vix/dev/prs/kivy/kivy/base.py", line 487, in runTouchApp
     EventLoop.window.mainloop()
   File "/home/vix/dev/prs/kivy/kivy/core/window/window_sdl2.py", line 543, in mainloop
     self._mainloop()
   File "/home/vix/dev/prs/kivy/kivy/core/window/window_sdl2.py", line 300, in _mainloop
     EventLoop.idle()
   File "/home/vix/dev/prs/kivy/kivy/base.py", line 327, in idle
     Clock.tick()
   File "/home/vix/dev/prs/kivy/kivy/clock.py", line 483, in tick
     self._process_events()
   File "/home/vix/dev/prs/kivy/kivy/clock.py", line 615, in _process_events
     event.tick(self._last_tick, remove)
   File "/home/vix/dev/prs/kivy/kivy/clock.py", line 374, in tick
     ret = callback(self._dt)
   File "/home/vix/dev/prs/kivy/kivy/modules/inspector.py", line 694, in update_widget_tree
     nodes += self._update_widget_tree_node(*node)
   File "/home/vix/dev/prs/kivy/kivy/modules/inspector.py", line 672, in _update_widget_tree_node
     nodes[cnode.widget] = cnode
   File "kivy/weakproxy.pyx", line 44, in kivy.weakproxy.WeakProxy.__hash__ (kivy/weakproxy.c:1755)
   File "kivy/weakproxy.pyx", line 15, in kivy.weakproxy.WeakProxy.__ref__ (kivy/weakproxy.c:1004)
 ReferenceError: weakly-referenced object no longer exists
```



Discussion:

Resolving patch:
diff --git a/kivy/modules/inspector.py b/kivy/modules/inspector.py
--- a/kivy/modules/inspector.py
+++ b/kivy/modules/inspector.py
@@ -269,8 +269,11 @@ def find_node_by_widget(self, widget):
         for node in self.iterate_all_nodes():
             if not node.parent_node:
                 continue
-            if node.widget == widget:
-                return node
+            try:
+                if node.widget == widget:
+                    return node
+            except ReferenceError:
+                pass
         return None
 
     def update_selected_widget(self, widget):
@@ -669,7 +672,11 @@ def _update_widget_tree_node(self, node, widget, is_open=False):
         update_nodes = []
         nodes = {}
         for cnode in node.nodes[:]:
-            nodes[cnode.widget] = cnode
+            try:
+                nodes[cnode.widget] = cnode
+            except ReferenceError:
+                # widget no longer exists, just remove it
+                pass
             tree.remove_node(cnode)
         for child in widget.children:
             if child is self:


Test patch:
Repository: kivy/kivy

Issue:
Filechooser in container
Hi all,

Till now I used a FileChooserListView inside a container. 
As kivy 1.9 allows to change the layout I decided to let my users switch between icon and list layout.

Here is my .kv code:
# :kivy 1.9.0

RootWidget:

```
# import container
container: container

# fill container
BoxLayout:
    id: container
    orientation: 'vertical'
    padding: 0
    spacing: 6

    BoxLayout:
        orientation: 'horizontal'
        size_hint: 1,0.07
        # choose File
        MyLabel:
            text: 'Wo befindet sich das *.yml File?'
            size_hint: 0.85,1
        Button:
            size_hint: 0.075,1
            text: 'listview'
            on_release: chooser.view_mode='list'
        Button:
            size_hint: 0.075,1
            text: 'iconview'
            on_release: chooser.view_mode='icon'

    FileChooser:
#FileChooserListView:
        id: chooser
        FileChooserIconLayout
        FileChooserListLayout
```

Till now the filechooser was in the green square:

![filechooser](https://cloud.githubusercontent.com/assets/1676457/7472202/274128e2-f330-11e4-9e99-6dca5ea8fde6.png)

Using the new kv-file (above) it seems to me, that the Filechooser uses some kind of absolute coordinates...



Discussion:

Resolving patch:
diff --git a/kivy/uix/filechooser.py b/kivy/uix/filechooser.py
--- a/kivy/uix/filechooser.py
+++ b/kivy/uix/filechooser.py
@@ -27,7 +27,6 @@
     :literal:
 
 '''
-from kivy.uix.screenmanager import ScreenManager, Screen
 
 __all__ = ('FileChooserListView', 'FileChooserIconView',
            'FileChooserListLayout', 'FileChooserIconLayout',
@@ -44,6 +43,8 @@
 from kivy.logger import Logger
 from kivy.utils import platform as core_platform
 from kivy.uix.floatlayout import FloatLayout
+from kivy.uix.relativelayout import RelativeLayout
+from kivy.uix.screenmanager import ScreenManager, Screen
 from kivy.properties import (
     StringProperty, ListProperty, BooleanProperty, ObjectProperty,
     NumericProperty, OptionProperty, AliasProperty)
@@ -248,7 +249,7 @@ def scroll_to_top(self, *args):
         self.ids.scrollview.scroll_y = 1.0
 
 
-class FileChooserController(FloatLayout):
+class FileChooserController(RelativeLayout):
     '''Base for implementing a FileChooser. Don't use this class directly, but
     prefer using an implementation such as the :class:`FileChooser`,
     :class:`FileChooserListView` or :class:`FileChooserIconView`.
@@ -958,7 +959,6 @@ def on_submit(self, selected, touch=None):
 
 if __name__ == '__main__':
     from kivy.app import App
-    from kivy.lang import Builder
     from pprint import pprint
     import textwrap
     import sys


Test patch:
Repository: kivy/kivy

Issue:
Label text color: and markup
Hello,

It appears that color: (0, 0, 1, 1) in KVLang doesn't work on a Label which uses markup.

Thanks for reading!



Discussion:
I cannot reproduce this with:

```
    Label:
        text: '[color=#ff0000]aaa[/color]ccc'
        color: (0, 0, 1, 1)
        markup: True
```

Any hints?

```
BoxLayout:
    ToggleButton:
        id: tog
        text: 'Toggle Me'
    Label:
        text: 'hello'
        markup: True
        color: (1, 1, 1, 1) if(tog.state == 'normal') else (0, 0, 1, 1)
```

Workaround is to put the color in the markup:

```
        text: '[color=%s]hello[/color]' % get_hex_from_color(self.color)
```

Thanks @kived, the bug report makes sense now. :-P

Sorry dessant - as kived pointed out, my original example included a ToggleButton ;-)

@Cheaterman it's ok :D


Resolving patch:
diff --git a/kivy/uix/label.py b/kivy/uix/label.py
--- a/kivy/uix/label.py
+++ b/kivy/uix/label.py
@@ -211,7 +211,7 @@ class Label(Widget):
                         'halign', 'valign', 'padding_x', 'padding_y',
                         'text_size', 'shorten', 'mipmap', 'markup',
                         'line_height', 'max_lines', 'strip', 'shorten_from',
-                        'split_str', 'unicode_errors')
+                        'split_str', 'unicode_errors', 'color')
 
     def __init__(self, **kwargs):
         self._trigger_texture = Clock.create_trigger(self.texture_update, -1)
@@ -279,7 +279,7 @@ def texture_update(self, *largs):
                 self.anchors, self._label._anchors = {}, {}
         else:
             if mrkup:
-                text = self._label.text
+                text = self.text
                 # we must strip here, otherwise, if the last line is empty,
                 # markup will retain the last empty line since it only strips
                 # line by line within markup


Test patch:
Repository: kivy/kivy

Issue:
CodeInput doesn't work with IniLexer
https://gist.github.com/aron-bordin/df00122f90231d5081d4

It's not possible to add [ in the first column:

![screenshot from 2015-06-14 23-48-03](https://cloud.githubusercontent.com/assets/4960137/8152165/1a0127a6-12f0-11e5-9b82-30176653d074.png)



Discussion:
I have found a solution to this bug, if this solution is ok, just let me know so I can create an patch for it.

In this line: https://github.com/kivy/kivy/blob/2cbf08ced7ec206280b5e61cf5e24791af691bde/kivy/uix/codeinput.py#L172 it's considered that no theme will edit \x01 and \x02 chars. But some themes are applying custom colors or styles to every char present in the text.

So the **\x01; becomes -> [color]\x01[/color][color];[/color]**
The **\x01** and **;** are separated by a style tag now, so https://github.com/kivy/kivy/blob/2cbf08ced7ec206280b5e61cf5e24791af691bde/kivy/uix/codeinput.py#L174 will not be able to remove this special char.

As a solution, instead of replacing [ and ] with \x01; and \x02; I removed the ';'. So with just a char, I'll be able to recovery it with any theme


Resolving patch:
diff --git a/kivy/uix/codeinput.py b/kivy/uix/codeinput.py
--- a/kivy/uix/codeinput.py
+++ b/kivy/uix/codeinput.py
@@ -169,9 +169,9 @@ def _get_bbcode(self, ntext):
             ntext[0]
             # replace brackets with special chars that aren't highlighted
             # by pygment. can't use &bl; ... cause & is highlighted
-            ntext = ntext.replace(u'[', u'\x01;').replace(u']', u'\x02;')
+            ntext = ntext.replace(u'[', u'\x01').replace(u']', u'\x02')
             ntext = highlight(ntext, self.lexer, self.formatter)
-            ntext = ntext.replace(u'\x01;', u'&bl;').replace(u'\x02;', u'&br;')
+            ntext = ntext.replace(u'\x01', u'&bl;').replace(u'\x02', u'&br;')
             # replace special chars with &bl; and &br;
             ntext = ''.join((u'[color=', str(self.text_color), u']',
                              ntext, u'[/color]'))


Test patch:
Repository: kivy/kivy

Issue:
Clipboard implementation leads to wrong logs when choosing sdl2 or gtk3
https://gist.github.com/anonymous/1dfd55b91a319b2e1393
Courtesy Dessant for reporting.



Discussion:
It also happens when the gtk3 provider is selected with KIVY_CLIPBOARD, seen on debian jessie with gnome:

```
[INFO              ] [Clipboard   ] Provider: gtk3(['clipboard_dbusklipper'] ignored)
[DEBUG             ] [Clipboard   ] Provider <xclip> ignored by config
[DEBUG             ] [Clipboard   ] Provider <xsel> ignored by config
[CRITICAL          ] [Clipboard   ] Unable to find any valuable Clipboard provider at all!
```


Resolving patch:
diff --git a/kivy/core/__init__.py b/kivy/core/__init__.py
--- a/kivy/core/__init__.py
+++ b/kivy/core/__init__.py
@@ -30,10 +30,11 @@ class CoreCriticalException(Exception):
     pass
 
 
-def core_select_lib(category, llist, create_instance=False, base='kivy.core'):
+def core_select_lib(category, llist, create_instance=False, base='kivy.core', basemodule=None):
     if 'KIVY_DOC' in os.environ:
         return
     category = category.lower()
+    basemodule = basemodule or category
     libs_ignored = []
     errs = []
     for option, modulename, classname in llist:
@@ -51,7 +52,7 @@ def core_select_lib(category, llist, create_instance=False, base='kivy.core'):
 
             # import module
             mod = __import__(name='{2}.{0}.{1}'.format(
-                category, modulename, base),
+                basemodule, modulename, base),
                 globals=globals(),
                 locals=locals(),
                 fromlist=[modulename], level=0)
diff --git a/kivy/core/clipboard/__init__.py b/kivy/core/clipboard/__init__.py
--- a/kivy/core/clipboard/__init__.py
+++ b/kivy/core/clipboard/__init__.py
@@ -162,7 +162,7 @@ def _paste(self):
     if Clipboard.__class__.__name__ in (c[2] for c in _cutbuffers):
         CutBuffer = Clipboard
     else:
-        CutBuffer = core_select_lib('clipboard', _cutbuffers, True)
+        CutBuffer = core_select_lib('cutbuffer', _cutbuffers, True, basemodule='clipboard')
 
     if CutBuffer:
         Logger.info('CutBuffer: cut buffer support enabled')


Test patch:
Repository: kivy/kivy

Issue:
Space after comma on comma-separated selectors in kvlang breaks the following selectors
Hello there, I found a strange and unexpected behavior that Kived from IRC said it was worthy of an issue here:

In kv, if you have this:

```
<SelectorA, SelectorB>:
```

SelectorB (or any other after that) won't work because of the space. It was a pain to debug that. Imho spaces shouldn't break things like that, even if there were 3 spaces after the comma.
## <bountysource-plugin>

Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/25081791-space-after-comma-on-comma-separated-selectors-in-kvlang-breaks-the-following-selectors?utm_campaign=plugin&utm_content=tracker%2F42681&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F42681&utm_medium=issues&utm_source=github).
</bountysource-plugin>



Discussion:

Resolving patch:
diff --git a/kivy/lang.py b/kivy/lang.py
--- a/kivy/lang.py
+++ b/kivy/lang.py
@@ -857,6 +857,7 @@ class MyWidget(Button):
 lang_key = re.compile('([a-zA-Z_]+)')
 lang_keyvalue = re.compile('([a-zA-Z_][a-zA-Z0-9_.]*\.[a-zA-Z0-9_.]+)')
 lang_tr = re.compile('(_\()')
+lang_cls_split_pat = re.compile(', *')
 
 # class types to check with isinstance
 if PY2:
@@ -1145,8 +1146,7 @@ def _build_rule(self):
             self.avoid_previous_rules = True
             name = name[1:]
 
-        rules = name.split(',')
-        for rule in rules:
+        for rule in re.split(lang_cls_split_pat, name):
             crule = None
 
             if not len(rule):


Test patch:
Repository: kivy/kivy

Issue:
sandbox decorator not working on py3
run:

```
python3 kivy/kivy/uix/sandbox.py
```

result: 

```
Clock.tick()
File "/usr/lib/python3.4/site-packages/kivy/clock.py", line 483, in tick
 self._process_events()
File "/usr/lib/python3.4/site-packages/kivy/clock.py", line 615, in _process_events
 event.tick(self._last_tick, remove)
File "/usr/lib/python3.4/site-packages/kivy/clock.py", line 353, in tick
 callback = self.get_callback()
File "/usr/lib/python3.4/site-packages/kivy/clock.py", line 320, in get_callback
 return callback()
File "/usr/lib/python3.4/site-packages/kivy/weakmethod.py", line 47, in __call__
 return getattr(self.proxy, self.method_name)
AttributeError: 'Sandbox' object has no attribute '_f2'
```



Discussion:

Resolving patch:
diff --git a/kivy/uix/sandbox.py b/kivy/uix/sandbox.py
--- a/kivy/uix/sandbox.py
+++ b/kivy/uix/sandbox.py
@@ -24,6 +24,7 @@
 
 __all__ = ('Sandbox', )
 
+from functools import wraps
 from kivy.context import Context
 from kivy.base import ExceptionManagerBase
 from kivy.clock import Clock
@@ -34,6 +35,7 @@
 
 
 def sandbox(f):
+    @wraps(f)
     def _f2(self, *args, **kwargs):
         ret = None
         with self:


Test patch:
Repository: kivy/kivy

Issue:
3Drendering example is not working
It only shows a black window. I tested on OSX 10.11.1 and 10.10.5 with kivy 1.8.0 and 1.9.0 app and 1.9.0 and 1.9.1-dev installed via pip.

trace: http://pastebin.com/JxDRMqBp
using pygame does not change anything: http://pastebin.com/uzYjDx6E



Discussion:
This might not be a OSX problem after all. I just tried it on a raspberry pi with raspbian jessie with the same result. What bugs me the most is that there is no error message.

trace: http://pastebin.com/M59zeFCH

Sometimes the solution is sooo simple that its hard to find:

Simply when you install Kivy via PIP on MacOS or Debian Jessie, in the examples/3Drendering directory the required file "simple.glsl" is missing... putting it there solves everything! _facepalm_

We just could not see the forrest because of all the trees... :-/

Please double-check and confirm!


Resolving patch:
diff --git a/setup.py b/setup.py
--- a/setup.py
+++ b/setup.py
@@ -816,7 +816,8 @@ def get_extensions_from_sources(sources):
 data_file_prefix = 'share/kivy-'
 examples = {}
 examples_allowed_ext = ('readme', 'py', 'wav', 'png', 'jpg', 'svg', 'json',
-                        'avi', 'gif', 'txt', 'ttf', 'obj', 'mtl', 'kv', 'mpg')
+                        'avi', 'gif', 'txt', 'ttf', 'obj', 'mtl', 'kv', 'mpg',
+                        'glsl')
 for root, subFolders, files in walk('examples'):
     for fn in files:
         ext = fn.split('.')[-1].lower()


Test patch:
Repository: kivy/kivy

Issue:
Button behavior has a property MIN_STATE_TIME
This property can't be used in kv cause of the uppercase.



Discussion:
hm, and we have had it for at least a release, so can't just rename it, i guess a good solution would be to make it an AliasProperty, with a deprecation warning message, and make the real one lowercase.

Hm, it's not even a property, though, can it really be used from kv either way?


Resolving patch:
diff --git a/kivy/uix/behaviors/button.py b/kivy/uix/behaviors/button.py
--- a/kivy/uix/behaviors/button.py
+++ b/kivy/uix/behaviors/button.py
@@ -4,8 +4,10 @@
 __all__ = ('ButtonBehavior', )
 
 from kivy.clock import Clock
-from kivy.properties import OptionProperty, ObjectProperty, BooleanProperty
+from kivy.properties import OptionProperty, ObjectProperty, \
+    BooleanProperty, NumericProperty, AliasProperty
 from time import time
+from kivy.logger import Logger
 
 
 class ButtonBehavior(object):
@@ -41,13 +43,26 @@ class ButtonBehavior(object):
     defaults to `None`.
     '''
 
-    MIN_STATE_TIME = 0.035
+    min_state_time = NumericProperty(0.035)
     '''The minimum period of time which the widget must remain in the
     `'down'` state.
 
-    :attr:`MIN_STATE_TIME` is a float and defaults to 0.035.
+    :attr:`min_state_time` is a float and defaults to 0.035.
     '''
 
+    def _set_min_state_time(self, value):
+        Logger.warning(
+            'MIN_STATE_TIME is deprecated, use min_state_time instead')
+        self.min_state_time = value
+
+    def _get_min_state_time(self):
+        Logger.warning(
+            'MIN_STATE_TIME is deprecated, use min_state_time instead')
+        return self.min_state_time
+
+    MIN_STATE_TIME = AliasProperty(
+        _get_min_state_time, _set_min_state_time, bind=('min_state_time', ))
+
     always_release = BooleanProperty(True)
     '''This determines whether or not the widget fires an `on_release` event if
     the touch_up is outside the widget.


Test patch:
Repository: kivy/kivy

Issue:
ActionItem.minimum_width not working
https://gist.github.com/aron-bordin/cfcf77b70380a6857fbf

the minimum_width value is being ignored. 
I think it's related with https://github.com/kivy/kivy/commit/ccef7fac4019ba7ffda97d31d0595fdf649ae804#diff-4b5fa03b170bae63a329314d2bab8866R74
## <bountysource-plugin>

Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/24199740-actionitem-minimum_width-not-working?utm_campaign=plugin&utm_content=tracker%2F42681&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F42681&utm_medium=issues&utm_source=github).
</bountysource-plugin>



Discussion:

Resolving patch:
diff --git a/kivy/uix/actionbar.py b/kivy/uix/actionbar.py
--- a/kivy/uix/actionbar.py
+++ b/kivy/uix/actionbar.py
@@ -73,11 +73,11 @@ class ActionItem(object):
     '''
 
     def get_pack_width(self):
-        return min(self.minimum_width, self.width)
+        return max(self.minimum_width, self.width)
 
     pack_width = AliasProperty(get_pack_width, bind=('minimum_width', 'width'))
     '''(read-only) The actual width to use when packing the item. Equal to the
-       lesser of minimum_width and width.
+       greater of minimum_width and width.
 
        :attr:`pack_width` is an :class:`~kivy.properties.AliasProperty`.
     '''


Test patch: