diff --git a/docs/src/getting_started.ipynb b/docs/src/getting_started.ipynb index d8bfd7e..926c613 100644 --- a/docs/src/getting_started.ipynb +++ b/docs/src/getting_started.ipynb @@ -89,7 +89,7 @@ " update=update_func,\n", " update_mode=\"continuous\",\n", " title=\"Sinus function\",\n", - " description=\"Implements $\\sin(x\\omega)$\",\n", + " description=\"Implements $\\\\sin(x\\\\omega)$\",\n", ")\n", "\n", "code_ex.run_update() # For the demonstration we run the widget one time\n", diff --git a/pyproject.toml b/pyproject.toml index 0ebe408..7bd4c9a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -30,7 +30,7 @@ classifiers = [ dependencies = [ "ipywidgets>=8.0.0", "numpy<2.0.0", - "widget_code_input>=4.0.13", + "widget_code_input>=4.0.17", "matplotlib", "termcolor" ] diff --git a/src/scwidgets/code/_widget_code_input.py b/src/scwidgets/code/_widget_code_input.py index 3c77bd6..83cd42f 100644 --- a/src/scwidgets/code/_widget_code_input.py +++ b/src/scwidgets/code/_widget_code_input.py @@ -8,7 +8,7 @@ import types import warnings from functools import wraps -from typing import Any, List, Optional, Tuple +from typing import Any, List, Optional, Tuple, Union from widget_code_input import WidgetCodeInput from widget_code_input.utils import ( @@ -71,7 +71,6 @@ def __init__( if function_name is None: raise ValueError("function_name must be given if no function is given.") function_parameters = "" if function_parameters is None else function_parameters - docstring = "\n" if docstring is None else docstring function_body = "" if function_body is None else function_body self._builtins = {} if builtins is None else builtins super().__init__( @@ -152,9 +151,13 @@ def function_parameters_name(self) -> List[str]: return self.function_parameters.replace(",", "").split(" ") @staticmethod - def get_docstring(function: types.FunctionType) -> str: + def get_docstring(function: types.FunctionType) -> Union[str, None]: docstring = function.__doc__ - return "" if docstring is None else textwrap.dedent(docstring) + return ( + None + if docstring is None + else textwrap.dedent(docstring).strip('"""') # noqa: B005 + ) @staticmethod def _get_function_source_and_def( diff --git a/tests/test_code.py b/tests/test_code.py index 16f9380..d03a375 100644 --- a/tests/test_code.py +++ b/tests/test_code.py @@ -79,6 +79,7 @@ def test_get_function_paramaters(self): assert CodeInput.get_function_parameters(self.mock_function_7) == "x, **kwargs" def test_get_docstring(self): + assert CodeInput.get_docstring(self.mock_function_0) is None assert ( CodeInput.get_docstring(self.mock_function_1) == "\nThis is an example function.\nIt adds two numbers.\n"