diff --git a/docs/api/migration.md b/docs/api/migration.md
index 51a3181f9..13e2aaf09 100644
--- a/docs/api/migration.md
+++ b/docs/api/migration.md
@@ -68,10 +68,10 @@ breaking API changes
### `.Gui()` attribute removed
-Before `v0.2.0`, the [`magicgui.magicgui`][] decorator added a `Gui` attribute to
+Before `v0.2.0`, the [`magicgui.magicgui`][magicgui.magicgui] decorator added a `Gui` attribute to
the decorated function that was to be called to instantiate a widget. In `v0.2.0`
-the object returned from the [`magicgui.magicgui`][] decorator is already an
-instantiated [`magicgui.widgets.Widget`][].
+the object returned from the [`magicgui.magicgui`][magicgui.magicgui] decorator is already an
+instantiated [`magicgui.widgets.Widget`][magicgui.widgets.Widget].
```python title="👎 Old Method (< v0.2.0)"
from magicgui import magicgui, event_loop
@@ -97,11 +97,11 @@ function.show(run=True)
### New base widget type
-Before `v0.2.0`, the `Gui()` object returned by the [`magicgui.magicgui`][]
+Before `v0.2.0`, the `Gui()` object returned by the [`magicgui.magicgui`][magicgui.magicgui]
decorator was a `MagicGuiBase` widget class, which in turn was a *direct
subclass* of a backend widget, such as a
[`QtWidgets.QWidget`](https://doc.qt.io/qt-5/qwidget.html). In `v0.2.0`, all
-widgets derive from [magicgui.widgets.Widget][],
+widgets derive from [`magicgui.widgets.Widget``][magicgui.widgets.Widget],
and the *backend* is available at `widget.native`. If you are incorporating
magicgui widgets into a larger Qt-based GUI, please note that you will want
to use `widget.native` instead of `widget`
diff --git a/docs/dataclasses.md b/docs/dataclasses.md
index 672bc38c7..77092bb14 100644
--- a/docs/dataclasses.md
+++ b/docs/dataclasses.md
@@ -64,14 +64,14 @@ library.
**magicgui** supports the dataclass API as a way to define the interface for compound
widget, where each attribute of the dataclass is a separate widget. The
-[`magicgui.experimental.guiclass`][] decorator can be used to mark a class
+[`magicgui.experimental.guiclass`][magicgui.experimental.guiclass] decorator can be used to mark a class
as a "GUI class". A GUI class *is* a Python standard [`dataclass`][dataclasses.dataclass]
that has two additional features:
1. A property (named "`gui`" by default) that returns a [`Container`][magicgui.widgets.Container]
widget which contains a widget for each attribute of the dataclass.
2. An property (named "`events`" by default) that returns a
- [`psygnal.SignalGroup`][] object that allows you to connect callbacks
+ [`psygnal.SignalGroup`][psygnal.SignalGroup] object that allows you to connect callbacks
to the change event of any of field in the dataclass. (Under the hood,
this uses the
[`@evented` dataclass decorator from `psygnal`](https://psygnal.readthedocs.io/en/latest/dataclasses/).)
@@ -128,7 +128,7 @@ obj.gui.show()
Buttons are one of the few widget types that tend not to have an associated
value, but simply trigger a callback when clicked. That is: it doesn't often
make sense to add a field to a dataclass representing a button. To add a button
-to a `guiclass`, decorate a method with the [`magicgui.experimental.button`][]
+to a `guiclass`, decorate a method with the [`magicgui.experimental.button`][magicgui.experimental.button]
decorator.
!!! warning "positioning buttons"
@@ -136,7 +136,7 @@ decorator.
to position the button in the layout will be added in the future.
Any additional keyword arguments to the `button` decorator will be passed to the
-[`magicgui.widgets.PushButton`][] constructor (e.g. `label`, `tooltip`, etc.)
+[`magicgui.widgets.PushButton`][magicgui.widgets.PushButton] constructor (e.g. `label`, `tooltip`, etc.)
``` python
from magicgui.experimental import guiclass, button
diff --git a/docs/decorators.md b/docs/decorators.md
index 7ec56a8d4..3a915c3ac 100644
--- a/docs/decorators.md
+++ b/docs/decorators.md
@@ -2,7 +2,7 @@
## From Object to GUI
-The eponymous feature of `magicgui` is the [`magicgui.magicgui`][] function,
+The eponymous feature of `magicgui` is the [`magicgui.magicgui`][magicgui.magicgui] function,
which converts an object into a widget.
!!! info
@@ -43,13 +43,13 @@ def snells_law(aoi=30.0, n1=Medium.Glass, n2=Medium.Water, degrees=True):
snells_law.show() # leave open
```
-The object returned by the `magicgui` decorator is an instance of [`magicgui.widgets.FunctionGui`][]. It can still be called like the original function, but it also knows how to present itself as a GUI.
+The object returned by the `magicgui` decorator is an instance of [`magicgui.widgets.FunctionGui`][magicgui.widgets.FunctionGui]. It can still be called like the original function, but it also knows how to present itself as a GUI.
## Two-Way Data Binding
The modified `snells_law` object gains attributes named after each of the
parameters in the function. Each attribute is an instance of a
-[`magicgui.widgets.Widget`] subclass (suitable for the data type represented by
+[`magicgui.widgets.Widget`][magicgui.widgets.Widget] subclass (suitable for the data type represented by
that parameter). As you make changes in your GUI, the attributes of the
`snells_law` object will be kept in sync. For instance, change the first
dropdown menu from "Glass" to "Oil", and the corresponding `n1` object on
@@ -194,7 +194,7 @@ widget_instance = magicgui(function)
## magic_factory
-The [`magicgui.magic_factory`][] function/decorator acts very much like the `magicgui`
+The [`magicgui.magic_factory`][magicgui.magic_factory] function/decorator acts very much like the `magicgui`
decorator, with one important difference:
**Unlike `magicgui`, `magic_factory` does not return a widget instance
@@ -210,7 +210,7 @@ subclass).
!!! tip "it's just a partial"
- If you're familiar with [`functools.partial`][], you can think of
+ If you're familiar with [`functools.partial`][functools.partial], you can think of
`magic_factory` as a partial function application of the `magicgui`
decorator (in fact, `magic_factory` is a subclass of `partial`).
It is very roughly equivalent to:
@@ -246,7 +246,7 @@ new_widget = my_factory()
Just to demystify the name a bit, there really isn't a whole lot of "magic"
in the `magicgui` decorator. It's really just a thin wrapper around the
-[`magicgui.widgets.create_widget`][] function, to create a
+[`magicgui.widgets.create_widget`][magicgui.widgets.create_widget] function, to create a
[`Container`][magicgui.widgets.Container] with a sub-widget for each
parameter in the function signature.
diff --git a/docs/examples/napari/napari_img_math.py b/docs/examples/napari/napari_img_math.py
index c14e27cbf..c32993c0d 100644
--- a/docs/examples/napari/napari_img_math.py
+++ b/docs/examples/napari/napari_img_math.py
@@ -94,7 +94,7 @@ def image_arithmetic(array1, operation, array2):
`magicgui` works particularly well with [type annotations](https://docs.python.org/3/library/typing.html),
and allows third-party libraries to register widgets and behavior for handling
-their custom types (using [`magicgui.type_map.register_type`][]).
+their custom types (using [`magicgui.type_map.register_type`][magicgui.type_map.register_type]).
`napari` [provides support for `magicgui`](https://github.com/napari/napari/blob/main/napari/utils/_magicgui.py)
by registering a dropdown menu whenever a function parameter is annotated as one
of the basic napari [`Layer` types](https://napari.org/howtos/layers/index.html),
@@ -137,7 +137,7 @@ def image_arithmetic(layerA: ImageData, operation: Operation, layerB: ImageData)
### create dropdowns with Enums
We'd like the user to be able to select the operation (`add`, `subtract`,
-`multiply`, `divide`) using a dropdown menu. [`enum.Enum`][] offers a convenient
+`multiply`, `divide`) using a dropdown menu. [`enum.Enum`][enum.Enum] offers a convenient
way to restrict values to a strict set of options, while providing `name: value`
pairs for each of the options. Here, the value for each choice is the actual
function we would like to have called when that option is selected.
diff --git a/docs/index.md b/docs/index.md
index 111563ea1..b7a7137a6 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -71,7 +71,7 @@ dataclasses simply by annotating them with standard python
#### `create_widget`
-[`magicgui.widgets.create_widget`][] is a general function, used throughout the library, that allows you to create a widget for a specific Python type or value:
+[`magicgui.widgets.create_widget`][magicgui.widgets.create_widget] is a general function, used throughout the library, that allows you to create a widget for a specific Python type or value:
```python
from magicgui.widgets import create_widget
@@ -92,7 +92,7 @@ For more details on how magicgui maps types to widgets, see
#### magicgui
-The [`magicgui.magicgui`][] function is one way to
+The [`magicgui.magicgui`][magicgui.magicgui] function is one way to
autogenerate a compound Widget based on the parameters of a function:
```python
@@ -124,8 +124,8 @@ decorators](decorators.md) page.
#### :material-flask-outline: guiclass
-[`magicgui.experimental.guiclass`][] is a newer experimental feature that provides an object-oriented
-alternative to `magicgui`. It wraps [`dataclasses.dataclass`][] and adds a
+[`magicgui.experimental.guiclass`][magicgui.experimental.guiclass] is a newer experimental feature that provides an object-oriented
+alternative to `magicgui`. It wraps [`dataclasses.dataclass`][dataclasses.dataclass] and adds a
`gui` attribute to the resulting class, which is a `magicgui`-generated widget
that can be used to control the dataclass instance. (The widget is only created
when the `gui` attribute is accessed for the first time.)
diff --git a/docs/type_map.md b/docs/type_map.md
index f03fb181d..255ea40c0 100644
--- a/docs/type_map.md
+++ b/docs/type_map.md
@@ -64,12 +64,12 @@ wdg.show()
## Customizing Widget Options with `typing.Annotated`
Widget options and types may be embedded in the type hint itself using
-[`typing.Annotated`][].
+[`typing.Annotated`][typing.Annotated].
!!! note
This is not the *only* way to customize the widget type or options
- in magicgui. Some functions (like [`magicgui.magicgui`][]) also accept
+ in magicgui. Some functions (like [`magicgui.magicgui`][magicgui.magicgui]) also accept
`**param_options` keyword arguments that map parameter names to
dictionaries of widget options.
@@ -127,7 +127,7 @@ Create a widget using standard type map:
my_widget = obj.gui
```
-Customize a widget using [`typing.Annotated`][]:
+Customize a widget using [`typing.Annotated`][typing.Annotated]:
=== "create_widget"
@@ -270,7 +270,7 @@ As a general rule, if you *must* use forward references or
## Registering Support for Custom Types
-Any third-party library may use the [`magicgui.register_type`][] function to
+Any third-party library may use the [`magicgui.register_type`][magicgui.register_type] function to
register its types with magicgui. When a registered type is used as an
annotation, the registered widget will be used.
diff --git a/docs/widgets.md b/docs/widgets.md
index fdf1f6161..98b67ac03 100644
--- a/docs/widgets.md
+++ b/docs/widgets.md
@@ -5,7 +5,7 @@
[Widget Index](api/widgets/index.md).
All individual graphical elements in **magicgui** are "widgets", and all widgets
-are instances of [`magicgui.widgets.Widget`][]. Widgets may be created
+are instances of [`magicgui.widgets.Widget`][magicgui.widgets.Widget]. Widgets may be created
directly:
```python
@@ -15,7 +15,7 @@ line_edit = LineEdit(value='hello!')
line_edit.show()
```
-Some widgets (such as [`magicgui.widgets.Container`][]) are composite
+Some widgets (such as [`magicgui.widgets.Container`][magicgui.widgets.Container]) are composite
widgets that comprise other widgets:
```python
@@ -28,7 +28,7 @@ container.show()
```
**magicgui** provides a way to automatically select a widget given a python value
-or type annotation using [`magicgui.widgets.create_widget`][]. Here is an
+or type annotation using [`magicgui.widgets.create_widget`][magicgui.widgets.create_widget]. Here is an
example that yields the same result as the one above:
```python
@@ -83,15 +83,15 @@ properties and attributes it has.
### `Widget`
-As mentioned above, all magicgui widgets derive from [`magicgui.widgets.Widget`][] and have the
+As mentioned above, all magicgui widgets derive from [`magicgui.widgets.Widget`][magicgui.widgets.Widget] and have the
following attributes (this list is not comprehensive, see
-the [`magicgui.widgets.Widget`][] API):
+the [`magicgui.widgets.Widget`][magicgui.widgets.Widget] API):
|
Attribute
| Type | Description |
|-----------|------|-------------|
| `name` | `str` | The name or "ID" of this widget (such as a function parameter name to which this widget corresponds). |
| `annotation` | `Any` | A type annotation for the value represented by the widget. |
-| `label` | `str` | A string to use for an associated Label widget (if this widget is being shown in a [`magicgui.widgets.Container`][] widget, and `container.labels` is `True`). By default, `name` will be used. Note: `name` refers the name of the parameter, as might be used in a signature, whereas label is just the label for that widget in the GUI. |
+| `label` | `str` | A string to use for an associated Label widget (if this widget is being shown in a [`magicgui.widgets.Container`][magicgui.widgets.Container] widget, and `container.labels` is `True`). By default, `name` will be used. Note: `name` refers the name of the parameter, as might be used in a signature, whereas label is just the label for that widget in the GUI. |
| `tooltip` | `str` | A tooltip to display when hovering over the widget. |
| `visible` | `bool` | Whether the widget is visible. |
@@ -118,7 +118,7 @@ following `ValueWidgets` track some `value`:
| Attribute
| Type | Description |
|-----------|------|-------------|
| `value` | `Any` | The current value of the widget. |
-| `changed` | [`psygnal.SignalInstance`][] | A [`psygnal.SignalInstance`][] that will emit an event when the `value` has changed. Connect callbacks to the change event using `widget.changed.connect(callback)` |
+| `changed` | [`psygnal.SignalInstance`][psygnal.SignalInstance] | A [`psygnal.SignalInstance`][psygnal.SignalInstance] that will emit an event when the `value` has changed. Connect callbacks to the change event using `widget.changed.connect(callback)` |
| `bind` | `Any, optional` | A value or callback to bind this widget. If bound, whenever `widget.value` is accessed, the value provided here will be returned. The bound value can be a callable, in which case `bound_value(self)` will be returned (i.e. your callback must accept a single parameter, which is this widget instance.). see [`ValueWidget.bind`][magicgui.widgets.bases.ValueWidget.bind] for details. |
Here is a demonstration of all these:
@@ -225,10 +225,10 @@ container.show()
`CategoricalWidget` are [`ValueWidgets`](#valuewidget) that provide a set
of valid choices. They can be created from:
-- an [`enum.Enum`][]
+- an [`enum.Enum`][enum.Enum]
- an iterable of objects (or an iterable of 2-tuples `(name, object)`)
-- a callable that returns an [`enum.Enum`][] or an iterable
-- a [`typing.Literal`][] annotation.
+- a callable that returns an [`enum.Enum`][enum.Enum] or an iterable
+- a [`typing.Literal`][typing.Literal] annotation.
::: autosummary
magicgui.widgets.ComboBox
@@ -257,8 +257,8 @@ container.show()
A `ContainerWidget` is a list-like `Widget` that can contain other widgets.
Containers allow you to build more complex widgets from sub-widgets. A notable
-example of a `Container` is [`magicgui.widgets.FunctionGui`][]) (the product of
-the [`@magicgui`][magicgui.magicgui] decorator).
+example of a `Container` is [`magicgui.widgets.FunctionGui`][magicgui.widgets.FunctionGui])
+(the product of the [`@magicgui`][magicgui.magicgui] decorator).
::: autosummary
magicgui.widgets.Container
@@ -271,8 +271,8 @@ the [`@magicgui`][magicgui.magicgui] decorator).
| `widgets` | `Sequence[Widget]` | The widgets that the container contains. |
| `labels` | `bool` | Whether each widget should be shown with a corresponding `Label` widget to the left. Note: the text for each widget defaults to `widget.name`, but can be overridden by setting `widget.label`. |
-`Container` implements the full [`collections.abc.MutableSequence`][] interface. You
-can add and remove widgets from it just as you would add or remove items from a list.
+`Container` implements the full [`collections.abc.MutableSequence`][collections.abc.MutableSequence] interface.
+You can add and remove widgets from it just as you would add or remove items from a list.
```python
from magicgui.widgets import Container, Slider, FloatSlider, ProgressBar
@@ -293,7 +293,8 @@ bar.
A `FunctionGui` is a special type of [`ContainerWidget`](#containerwidget)
that is created from a function. It is the product of the
[`@magicgui`][magicgui.magicgui] decorator. It is a container that contains a
-widget for each of the parameters in the function. See [`magicgui.widgets.FunctionGui`][] for details.
+widget for each of the parameters in the function.
+See [`magicgui.widgets.FunctionGui`][magicgui.widgets.FunctionGui] for details.
#### `@magicgui`
diff --git a/mkdocs.yml b/mkdocs.yml
index 65e662f91..248d713ef 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -109,7 +109,7 @@ plugins:
gallery_dirs: [docs/generated_examples]
filename_pattern: /*.py # which scripts will be executed for the docs
ignore_pattern: /__init__.py # ignore these example files completely
- run_stale_examples: True
+ run_stale_examples: False
- spellcheck:
backends: # the backends you want to use
- codespell: # or nested configs
diff --git a/src/magicgui/tqdm.py b/src/magicgui/tqdm.py
index 683044d41..065c41b8f 100644
--- a/src/magicgui/tqdm.py
+++ b/src/magicgui/tqdm.py
@@ -44,7 +44,8 @@ class tqdm(_tqdm_std):
See tqdm.tqdm API for valid args and kwargs: https://tqdm.github.io/docs/tqdm/
- Also, any keyword arguments to the [magicgui.widgets.ProgressBar][] widget
+ Also, any keyword arguments to the
+ [``magicgui.widgets.ProgressBar``][magicgui.widgets.ProgressBar] widget
are also accepted and will be passed to the ``ProgressBar``.
Examples
diff --git a/src/magicgui/type_map/_magicgui.py b/src/magicgui/type_map/_magicgui.py
index 16dac925b..c4a8d81a6 100644
--- a/src/magicgui/type_map/_magicgui.py
+++ b/src/magicgui/type_map/_magicgui.py
@@ -313,7 +313,8 @@ def magic_factory(
1. Whereas `magicgui` returns a `FunctionGui` instance, `magic_factory` returns a
callable that returns a `FunctionGui` instance. (Technically, it returns an
instance of [`MagicFactory`][magicgui.type_map._magicgui.MagicFactory] which you
- behaves exactly like a [`functools.partial`][] for a `FunctionGui` instance.)
+ behaves exactly like a [`functools.partial`][functools.partial]
+ for a `FunctionGui` instance.)
2. `magic_factory` adds a `widget_init` method: a callable that will be called
immediately after the `FunctionGui` instance is created. This can be used to
add additional widgets to the layout, or to connect signals to the widgets.
@@ -418,7 +419,7 @@ class MagicFactory(partial, Generic[_R, _T]):
"""Factory function that returns a FunctionGui instance.
While this can be used directly, (see example below) the preferred usage is
- via the [`magicgui.magic_factory`][] decorator.
+ via the [`magicgui.magic_factory`][magicgui.magic_factory] decorator.
Examples
--------
diff --git a/src/magicgui/type_map/_type_map.py b/src/magicgui/type_map/_type_map.py
index ff16f5f2a..33571c73d 100644
--- a/src/magicgui/type_map/_type_map.py
+++ b/src/magicgui/type_map/_type_map.py
@@ -304,7 +304,7 @@ def get_widget_class(
is_result: bool = False,
raise_on_unknown: bool = True,
) -> tuple[WidgetClass, dict]:
- """Return a [magicgui.widgets.Widget][] subclass for the given `value`/`annotation`.
+ """Return a [Widget][magicgui.widgets.Widget] subclass for the `value`/`annotation`.
Parameters
----------
diff --git a/src/magicgui/types.py b/src/magicgui/types.py
index d77d2749a..06e520225 100644
--- a/src/magicgui/types.py
+++ b/src/magicgui/types.py
@@ -21,7 +21,7 @@ class ChoicesDict(TypedDict):
#: A [`Widget`][magicgui.widgets.Widget] class or a
-#: [~magicgui.widgets.protocols.WidgetProtocol][]
+#: [`WidgetProtocol`][magicgui.widgets.protocols.WidgetProtocol]
WidgetClass = Union["type[Widget]", "type[WidgetProtocol]"]
#: A generic reference to a :attr:`WidgetClass` as a string, or the class itself.
WidgetRef = Union[str, WidgetClass]
@@ -35,8 +35,9 @@ class ChoicesDict(TypedDict):
#: The set of all valid types for widget ``choices``.
ChoicesType = Union[EnumMeta, ChoicesIterable, ChoicesCallback, ChoicesDict]
#: A callback that may be registered for a given return annotation. When called, it will
-#: be provided an instance of a [~magicgui.widgets.FunctionGui][], the result
-#: of the function that was called, and the return annotation itself.
+#: be provided an instance of a
+#: [~magicgui.widgets.FunctionGui][magicgui.widgets.FunctionGui],
+#: the result of the function that was called, and the return annotation itself.
ReturnCallback = Callable[["FunctionGui[Any]", Any, type], None]
#: A valid file path type
PathLike = Union[Path, str, bytes]
diff --git a/src/magicgui/widgets/_concrete.py b/src/magicgui/widgets/_concrete.py
index 37c708057..820096f3f 100644
--- a/src/magicgui/widgets/_concrete.py
+++ b/src/magicgui/widgets/_concrete.py
@@ -384,8 +384,9 @@ def __init__(
class Container(ContainerWidget[WidgetVar]):
"""A Widget to contain other widgets.
- Note that `Container` implements the [`typing.MutableSequence`][] interface,
- so you can use it like a list to add and remove widgets.
+ Note that `Container` implements the
+ [`typing.MutableSequence`][typing.MutableSequence]
+ interface, so you can use it like a list to add and remove widgets.
"""
diff --git a/src/magicgui/widgets/_function_gui.py b/src/magicgui/widgets/_function_gui.py
index 459c613f6..d14ee8b0e 100644
--- a/src/magicgui/widgets/_function_gui.py
+++ b/src/magicgui/widgets/_function_gui.py
@@ -265,7 +265,7 @@ def reset_call_count(self) -> None:
@property
def return_annotation(self) -> Any:
- """Return annotation to use when converting to [inspect.Signature][].
+ """Return annotation for [inspect.Signature][inspect.Signature] conversion.
ForwardRefs will be resolve when setting the annotation.
"""
@@ -488,7 +488,7 @@ def _function_name_pointing_to_widget(function_gui: FunctionGui) -> Iterator[Non
In standard `@magicgui` usage, this will have been the case anyway.
Doing this here allows the function name in a `@magic_factory`-decorated function
to *also* refer to the function gui instance created by the factory, (rather than
- to the [~magicgui._magicgui.MagicFactory][] object).
+ to the [~magicgui._magicgui.MagicFactory][magicgui._magicgui.MagicFactory] object).
Examples
--------
diff --git a/src/magicgui/widgets/_image/_image.py b/src/magicgui/widgets/_image/_image.py
index 87b982510..75c94d99f 100644
--- a/src/magicgui/widgets/_image/_image.py
+++ b/src/magicgui/widgets/_image/_image.py
@@ -170,7 +170,7 @@ def set_norm(self, norm: Normalize | matplotlib.colors.Normalize):
self._widget._mgui_set_value(self._image.make_image())
def __repr__(self) -> str:
- """Return representation of widget of instsance."""
+ """Return representation of widget of instance."""
d = self.image_data
shape = "x".join(map(str, d.shape)) if d is not None else ""
return f"{self.widget_type}({shape}, name={self.name!r})"
diff --git a/src/magicgui/widgets/_table.py b/src/magicgui/widgets/_table.py
index 0c2a1434e..e347653f1 100644
--- a/src/magicgui/widgets/_table.py
+++ b/src/magicgui/widgets/_table.py
@@ -160,8 +160,8 @@ class Table(ValueWidget, _ReadOnlyMixin, MutableMapping[TblKey, list]):
``tuple(range(len(data[0])))``. Values provided here override any implied in
``value``.
**kwargs
- Additional kwargs will be passed to the [magicgui.widgets.Widget][]
- constructor.
+ Additional kwargs will be passed to the
+ [magicgui.widgets.Widget][magicgui.widgets.Widget] constructor.
Attributes
----------
@@ -205,7 +205,7 @@ class Table(ValueWidget, _ReadOnlyMixin, MutableMapping[TblKey, list]):
Emitted whenever a cell in the table changes. The value will have a
dict of information regarding the cell that changed:
{'data': x, 'row': int, 'column': int, 'column_header': str, 'row_header': str}
- CURRENTLY: only emitted on changes in the GUI. not programattic changes.
+ CURRENTLY: only emitted on changes in the GUI. not programmatic changes.
"""
_widget: TableWidgetProtocol
diff --git a/src/magicgui/widgets/bases/_button_widget.py b/src/magicgui/widgets/bases/_button_widget.py
index a868e8430..52c2b2e2b 100644
--- a/src/magicgui/widgets/bases/_button_widget.py
+++ b/src/magicgui/widgets/bases/_button_widget.py
@@ -33,7 +33,7 @@ class ButtonWidget(ValueWidget[bool]):
If `True`, the widget will accepts `None` as a valid value, by default `False`.
**base_widget_kwargs : Any
All additional keyword arguments are passed to the base
- [`magicgui.widgets.Widget`][] constructor.
+ [`magicgui.widgets.Widget`][magicgui.widgets.Widget] constructor.
"""
_widget: protocols.ButtonWidgetProtocol
diff --git a/src/magicgui/widgets/bases/_categorical_widget.py b/src/magicgui/widgets/bases/_categorical_widget.py
index 92c0ee918..1eaf04eb8 100644
--- a/src/magicgui/widgets/bases/_categorical_widget.py
+++ b/src/magicgui/widgets/bases/_categorical_widget.py
@@ -30,7 +30,7 @@ class CategoricalWidget(ValueWidget[T]):
If `True`, the widget will accepts `None` as a valid value, by default `False`.
**base_widget_kwargs : Any
All additional keyword arguments are passed to the base
- [`magicgui.widgets.Widget`][] constructor.
+ [`magicgui.widgets.Widget`][magicgui.widgets.Widget] constructor.
"""
_widget: protocols.CategoricalWidgetProtocol
diff --git a/src/magicgui/widgets/bases/_container_widget.py b/src/magicgui/widgets/bases/_container_widget.py
index fad165b20..e595548aa 100644
--- a/src/magicgui/widgets/bases/_container_widget.py
+++ b/src/magicgui/widgets/bases/_container_widget.py
@@ -44,16 +44,18 @@ class ContainerWidget(Widget, _OrientationMixin, MutableSequence[WidgetVar]):
(`container[0]`), as well as by widget name (`container.`). Widgets can
be added with `append` or `insert`, and removed with `del` or `pop`, etc...
- There is a tight connection between a `ContainerWidget` and an [inspect.Signature][]
- object, just as there is a tight connection between individual [Widget` objects an
- an :class:`inspect.Parameter][] object. The signature representation of a
- `ContainerWidget` (with the current settings as default values) is accessible with
+ There is a tight connection between a `ContainerWidget` and an
+ [inspect.Signature][inspect.Signature] object,
+ just as there is a tight connection between individual [Widget` objects an
+ an :class:`inspect.Parameter][inspect.Parameter] object.
+ The signature representation of a `ContainerWidget`
+ (with the current settings as default values) is accessible with
the :meth:`~ContainerWidget.__signature__` method (or by using
:func:`inspect.signature` from the standard library)
For a `ContainerWidget` subclass that is tightly coupled to a specific function
signature (as in the "classic" magicgui decorator), see
- [magicgui.widgets.FunctionGui][].
+ [magicgui.widgets.FunctionGui][magicgui.widgets.FunctionGui].
Parameters
----------
@@ -72,7 +74,7 @@ class ContainerWidget(Widget, _OrientationMixin, MutableSequence[WidgetVar]):
`widget.name`, but can be overridden by setting `widget.label`.
**base_widget_kwargs : Any
All additional keyword arguments are passed to the base
- [`magicgui.widgets.Widget`][] constructor.
+ [`magicgui.widgets.Widget`][magicgui.widgets.Widget] constructor.
"""
changed = Signal(
diff --git a/src/magicgui/widgets/bases/_ranged_widget.py b/src/magicgui/widgets/bases/_ranged_widget.py
index ff8d5743a..685bf2877 100644
--- a/src/magicgui/widgets/bases/_ranged_widget.py
+++ b/src/magicgui/widgets/bases/_ranged_widget.py
@@ -42,7 +42,7 @@ class RangedWidget(ValueWidget[T]):
If `True`, the widget will accepts `None` as a valid value, by default `False`.
**base_widget_kwargs : Any
All additional keyword arguments are passed to the base
- [`magicgui.widgets.Widget`][] constructor.
+ [`magicgui.widgets.Widget`][magicgui.widgets.Widget] constructor.
"""
_widget: protocols.RangedWidgetProtocol
@@ -196,7 +196,7 @@ def range(self, value: tuple[float, float]) -> None:
class TransformedRangedWidget(RangedWidget[float], ABC):
- """Widget with a contstrained value. Wraps RangedWidgetProtocol.
+ """Widget with a constrained value. Wraps RangedWidgetProtocol.
This can be used to map one domain of numbers onto another, useful for creating
things like LogSliders. Subclasses must reimplement ``_value_from_position`` and
@@ -226,7 +226,7 @@ class TransformedRangedWidget(RangedWidget[float], ABC):
If `True`, the widget will accepts `None` as a valid value, by default `False`.
**base_widget_kwargs : Any
All additional keyword arguments are passed to the base
- [`magicgui.widgets.Widget`][] constructor.
+ [`magicgui.widgets.Widget`][magicgui.widgets.Widget] constructor.
"""
_widget: protocols.RangedWidgetProtocol
diff --git a/src/magicgui/widgets/bases/_slider_widget.py b/src/magicgui/widgets/bases/_slider_widget.py
index 4051988c8..bcf732a49 100644
--- a/src/magicgui/widgets/bases/_slider_widget.py
+++ b/src/magicgui/widgets/bases/_slider_widget.py
@@ -12,7 +12,7 @@
class SliderWidget(RangedWidget[T], _OrientationMixin):
- """Widget with a contstrained value and orientation. Wraps SliderWidgetProtocol.
+ """Widget with a constrained value and orientation. Wraps SliderWidgetProtocol.
Parameters
----------
@@ -44,7 +44,7 @@ class SliderWidget(RangedWidget[T], _OrientationMixin):
If `True`, the widget will accepts `None` as a valid value, by default `False`.
**base_widget_kwargs : Any
All additional keyword arguments are passed to the base
- [`magicgui.widgets.Widget`][] constructor.
+ [`magicgui.widgets.Widget`][magicgui.widgets.Widget] constructor.
"""
_widget: protocols.SliderWidgetProtocol
diff --git a/src/magicgui/widgets/bases/_value_widget.py b/src/magicgui/widgets/bases/_value_widget.py
index 11603e7f3..2ca345913 100644
--- a/src/magicgui/widgets/bases/_value_widget.py
+++ b/src/magicgui/widgets/bases/_value_widget.py
@@ -32,7 +32,7 @@ class ValueWidget(Widget, Generic[T]):
If `True`, the widget will accepts `None` as a valid value, by default `False`.
**base_widget_kwargs : Any
All additional keyword arguments are passed to the base
- [`magicgui.widgets.Widget`][] constructor.
+ [`magicgui.widgets.Widget`][magicgui.widgets.Widget] constructor.
"""
_widget: protocols.ValueWidgetProtocol
@@ -97,7 +97,7 @@ def value(self, value: T) -> None:
return self._widget._mgui_set_value(value)
def __repr__(self) -> str:
- """Return representation of widget of instsance."""
+ """Return representation of widget of instance."""
try:
val = self.value if self._bound_value is Undefined else self._bound_value
return (
diff --git a/src/magicgui/widgets/bases/_widget.py b/src/magicgui/widgets/bases/_widget.py
index 595d797b7..22540515d 100644
--- a/src/magicgui/widgets/bases/_widget.py
+++ b/src/magicgui/widgets/bases/_widget.py
@@ -366,7 +366,7 @@ def render(self) -> np.ndarray:
return self._widget._mgui_render()
def __repr__(self) -> str:
- """Return representation of widget of instsance."""
+ """Return representation of widget of instance."""
return f"{self.widget_type}(annotation={self.annotation!r}, name={self.name!r})"
def _repr_png_(self) -> bytes | None:
diff --git a/src/magicgui/widgets/protocols.py b/src/magicgui/widgets/protocols.py
index 6380b4a87..316528173 100644
--- a/src/magicgui/widgets/protocols.py
+++ b/src/magicgui/widgets/protocols.py
@@ -1,8 +1,9 @@
"""Protocols (interfaces) for backends to implement.
-Each class in this module is a [typing.Protocol][] that specifies a set of
-:func:`~abc.abstractmethod` that a backend widget must implement to be compatible with
-the magicgui API. All magicgui-specific abstract methods are prefaced with ``_mgui_*``.
+Each class in this module is a [typing.Protocol][typing.Protocol] that specifies
+a set of :func:`~abc.abstractmethod` that a backend widget must implement
+to be compatible with the magicgui API.
+All magicgui-specific abstract methods are prefaced with ``_mgui_*``.
For an example backend implementation, see ``magicgui.backends._qtpy.widgets``
"""