class skimage.viewer.utils.RequiredAttr(init_val=None) [source]

Bases: object A class attribute that must be set before use.
__init__(init_val=None) [source]

Initialize self. See help(type(self)) for accurate signature.

instances = {(<skimage.viewer.utils.core.RequiredAttr object>, None): 'Widget is not attached to a Plugin.', (<skimage.viewer.utils.core.RequiredAttr object>, None): 'Plugin is not attached to ImageViewer'}


instances = {(<skimage.viewer.utils.core.RequiredAttr object>, None): 'Widget is not attached to a Plugin.', (<skimage.viewer.utils.core.RequiredAttr object>, None): 'Plugin is not attached to ImageViewer'}


__init__(init_val=None) [source]

Initialize self. See help(type(self)) for accurate signature.


skimage.viewer.utils.start_qtapp(app=None) [source]

Start Qt mainloop


skimage.viewer.utils.update_axes_image(image_axes, image) [source]

Update the image displayed by an image plot. This sets the image plot’s array and updates its shape appropriately  Parameters

image_axesmatplotlib.image.AxesImage

Image axes to update.
imagearray

Image array.


Module: viewer.viewers
skimage.viewer.viewers.CollectionViewer(…) Viewer for displaying image collections.
skimage.viewer.viewers.ImageViewer(image[, …]) Viewer for displaying images.
skimage.viewer.viewers.core ImageViewer class for viewing and interacting with images.   CollectionViewer
class skimage.viewer.viewers.CollectionViewer(image_collection, update_on='move', **kwargs) [source]

Bases: skimage.viewer.viewers.core.ImageViewer Viewer for displaying image collections. Select the displayed frame of the image collection using the slider or with the following keyboard shortcuts:  left/right arrows

Previous/next image in collection.  number keys, 0–9

0% to 90% of collection. For example, “5” goes to the image in the middle (i.e. 50%) of the collection.  home/end keys

First/last image in collection.    Parameters

image_collectionlist of images

List of images to be displayed.
update_on{‘move’ | ‘release’}

Control whether image is updated on slide or release of the image slider. Using ‘on_release’ will give smoother behavior when displaying large images or when writing a plugin/subclass that requires heavy computation.
__init__(image_collection, update_on='move', **kwargs) [source]

Initialize self. See help(type(self)) for accurate signature.

keyPressEvent(event) [source]

update_index(name, index) [source]

Select image on display using index into image collection.

 ImageViewer
class skimage.viewer.viewers.ImageViewer(image, useblit=True) [source]

Bases: object Viewer for displaying images. This viewer is a simple container object that holds a Matplotlib axes for showing images. ImageViewer doesn’t subclass the Matplotlib axes (or figure) because of the high probability of name collisions. Subclasses and plugins will likely extend the update_image method to add custom overlays or filter the displayed image.  Parameters

imagearray

Image being viewed.     Examples >>> from skimage import data
>>> image = data.coins()
>>> viewer = ImageViewer(image)
>>> viewer.show()
  Attributes

canvas, fig, axMatplotlib canvas, figure, and axes

Matplotlib canvas, figure, and axes used to display image.
imagearray

Image being viewed. Setting this value will update the displayed frame.
original_imagearray

Plugins typically operate on (but don’t change) the original image.
pluginslist

List of attached plugins.
__init__(image, useblit=True) [source]

Initialize self. See help(type(self)) for accurate signature.

add_tool(tool) [source]

closeEvent(event) [source]

connect_event(event, callback) [source]

Connect callback function to matplotlib event and return id.

disconnect_event(callback_id) [source]

Disconnect callback by its id (returned by connect_event).

dock_areas = {'bottom': None, 'left': None, 'right': None, 'top': None}

property image

open_file(filename=None) [source]

Open image file and display in viewer.

original_image_changed = None

redraw() [source]

remove_tool(tool) [source]

reset_image() [source]

save_to_file(filename=None) [source]

Save current image to file. The current behavior is not ideal: It saves the image displayed on screen, so all images will be converted to RGB, and the image size is not preserved (resizing the viewer window will alter the size of the saved image).

show(main_window=True) [source]

Show ImageViewer and attached plugins. This behaves much like matplotlib.pyplot.show and QWidget.show.

update_image(image) [source]

Update displayed image. This method can be overridden or extended in subclasses and plugins to react to image changes.


class skimage.viewer.viewers.CollectionViewer(image_collection, update_on='move', **kwargs) [source]

Bases: skimage.viewer.viewers.core.ImageViewer Viewer for displaying image collections. Select the displayed frame of the image collection using the slider or with the following keyboard shortcuts:  left/right arrows

Previous/next image in collection.  number keys, 0–9

0% to 90% of collection. For example, “5” goes to the image in the middle (i.e. 50%) of the collection.  home/end keys

First/last image in collection.    Parameters

image_collectionlist of images

List of images to be displayed.
update_on{‘move’ | ‘release’}

Control whether image is updated on slide or release of the image slider. Using ‘on_release’ will give smoother behavior when displaying large images or when writing a plugin/subclass that requires heavy computation.
__init__(image_collection, update_on='move', **kwargs) [source]

Initialize self. See help(type(self)) for accurate signature.

keyPressEvent(event) [source]

update_index(name, index) [source]

Select image on display using index into image collection.


update_index(name, index) [source]

Select image on display using index into image collection.


__init__(image_collection, update_on='move', **kwargs) [source]

Initialize self. See help(type(self)) for accurate signature.


class skimage.viewer.viewers.ImageViewer(image, useblit=True) [source]

Bases: object Viewer for displaying images. This viewer is a simple container object that holds a Matplotlib axes for showing images. ImageViewer doesn’t subclass the Matplotlib axes (or figure) because of the high probability of name collisions. Subclasses and plugins will likely extend the update_image method to add custom overlays or filter the displayed image.  Parameters

imagearray

Image being viewed.     Examples >>> from skimage import data
>>> image = data.coins()
>>> viewer = ImageViewer(image)
>>> viewer.show()
  Attributes

canvas, fig, axMatplotlib canvas, figure, and axes

Matplotlib canvas, figure, and axes used to display image.
imagearray

Image being viewed. Setting this value will update the displayed frame.
original_imagearray

Plugins typically operate on (but don’t change) the original image.
pluginslist

List of attached plugins.
__init__(image, useblit=True) [source]

Initialize self. See help(type(self)) for accurate signature.

add_tool(tool) [source]

closeEvent(event) [source]

connect_event(event, callback) [source]

Connect callback function to matplotlib event and return id.

disconnect_event(callback_id) [source]

Disconnect callback by its id (returned by connect_event).

dock_areas = {'bottom': None, 'left': None, 'right': None, 'top': None}

property image

open_file(filename=None) [source]

Open image file and display in viewer.

original_image_changed = None

redraw() [source]

remove_tool(tool) [source]

reset_image() [source]

save_to_file(filename=None) [source]

Save current image to file. The current behavior is not ideal: It saves the image displayed on screen, so all images will be converted to RGB, and the image size is not preserved (resizing the viewer window will alter the size of the saved image).

show(main_window=True) [source]

Show ImageViewer and attached plugins. This behaves much like matplotlib.pyplot.show and QWidget.show.

update_image(image) [source]

Update displayed image. This method can be overridden or extended in subclasses and plugins to react to image changes.


connect_event(event, callback) [source]

Connect callback function to matplotlib event and return id.


disconnect_event(callback_id) [source]

Disconnect callback by its id (returned by connect_event).


dock_areas = {'bottom': None, 'left': None, 'right': None, 'top': None}


open_file(filename=None) [source]

Open image file and display in viewer.


save_to_file(filename=None) [source]

Save current image to file. The current behavior is not ideal: It saves the image displayed on screen, so all images will be converted to RGB, and the image size is not preserved (resizing the viewer window will alter the size of the saved image).


show(main_window=True) [source]

Show ImageViewer and attached plugins. This behaves much like matplotlib.pyplot.show and QWidget.show.


update_image(image) [source]

Update displayed image. This method can be overridden or extended in subclasses and plugins to react to image changes.


__init__(image, useblit=True) [source]

Initialize self. See help(type(self)) for accurate signature.


Module: viewer.widgets Widgets for interacting with ImageViewer. These widgets should be added to a Plugin subclass using its add_widget method or calling: plugin += Widget(...)
 on a Plugin instance. The Plugin will delegate action based on the widget’s parameter type specified by its ptype attribute, which can be: 'arg' : positional argument passed to Plugin's `filter_image` method.
'kwarg' : keyword argument passed to Plugin's `filter_image` method.
'plugin' : attribute of Plugin. You'll probably need to add a class
    property of the same name that updates the display.

skimage.viewer.widgets.BaseWidget(name[, …])
skimage.viewer.widgets.Button(name, callback) Button which calls callback upon click.
skimage.viewer.widgets.CheckBox(name[, …]) CheckBox widget
skimage.viewer.widgets.ComboBox(name, items) ComboBox widget for selecting among a list of choices.
skimage.viewer.widgets.OKCancelButtons([…]) Buttons that close the parent plugin.
skimage.viewer.widgets.SaveButtons([name, …]) Buttons to save image to io.stack or to a file.
skimage.viewer.widgets.Slider(name[, low, …]) Slider widget for adjusting numeric parameters.
skimage.viewer.widgets.Text([name, text])
skimage.viewer.widgets.core
skimage.viewer.widgets.history    BaseWidget
class skimage.viewer.widgets.BaseWidget(name, ptype=None, callback=None) [source]

Bases: object
__init__(name, ptype=None, callback=None) [source]

Initialize self. See help(type(self)) for accurate signature.

plugin = 'Widget is not attached to a Plugin.'

property val

 Button
class skimage.viewer.widgets.Button(name, callback) [source]

Bases: skimage.viewer.widgets.core.BaseWidget Button which calls callback upon click.  Parameters

namestr

Name of button.
callbackcallable f()

Function to call when button is clicked.
__init__(name, callback) [source]

Initialize self. See help(type(self)) for accurate signature.

 CheckBox
class skimage.viewer.widgets.CheckBox(name, value=False, alignment='center', ptype='kwarg', callback=None) [source]

Bases: skimage.viewer.widgets.core.BaseWidget CheckBox widget  Parameters

namestr

Name of CheckBox parameter. If this parameter is passed as a keyword argument, it must match the name of that keyword argument (spaces are replaced with underscores). In addition, this name is displayed as the name of the CheckBox.  value: {False, True}, optional

Initial state of the CheckBox.  alignment: {‘center’,’left’,’right’}, optional

Checkbox alignment
ptype{‘arg’ | ‘kwarg’ | ‘plugin’}, optional

Parameter type
callbackcallable f(widget_name, value), optional

Callback function called in response to checkbox changes. Note: This function is typically set (overridden) when the widget is added to a plugin.
__init__(name, value=False, alignment='center', ptype='kwarg', callback=None) [source]

Initialize self. See help(type(self)) for accurate signature.

property val

 ComboBox
class skimage.viewer.widgets.ComboBox(name, items, ptype='kwarg', callback=None) [source]

Bases: skimage.viewer.widgets.core.BaseWidget ComboBox widget for selecting among a list of choices.  Parameters

namestr

Name of ComboBox parameter. If this parameter is passed as a keyword argument, it must match the name of that keyword argument (spaces are replaced with underscores). In addition, this name is displayed as the name of the ComboBox.  items: list of str

Allowed parameter values.
ptype{‘arg’ | ‘kwarg’ | ‘plugin’}, optional

Parameter type.
callbackcallable f(widget_name, value), optional

Callback function called in response to combobox changes. Note: This function is typically set (overridden) when the widget is added to a plugin.
__init__(name, items, ptype='kwarg', callback=None) [source]

Initialize self. See help(type(self)) for accurate signature.

property index

property val

 OKCancelButtons
class skimage.viewer.widgets.OKCancelButtons(button_width=80) [source]

Bases: skimage.viewer.widgets.core.BaseWidget Buttons that close the parent plugin. OK will replace the original image with the current (filtered) image. Cancel will just close the plugin.
__init__(button_width=80) [source]

Initialize self. See help(type(self)) for accurate signature.

close_plugin() [source]

update_original_image() [source]

 SaveButtons
class skimage.viewer.widgets.SaveButtons(name='Save to:', default_format='png') [source]

Bases: skimage.viewer.widgets.core.BaseWidget Buttons to save image to io.stack or to a file.
__init__(name='Save to:', default_format='png') [source]

Initialize self. See help(type(self)) for accurate signature.

save_to_file(filename=None) [source]

save_to_stack() [source]

 Slider
class skimage.viewer.widgets.Slider(name, low=0.0, high=1.0, value=None, value_type='float', ptype='kwarg', callback=None, max_edit_width=60, orientation='horizontal', update_on='release') [source]

Bases: skimage.viewer.widgets.core.BaseWidget Slider widget for adjusting numeric parameters.  Parameters

namestr

Name of slider parameter. If this parameter is passed as a keyword argument, it must match the name of that keyword argument (spaces are replaced with underscores). In addition, this name is displayed as the name of the slider.
low, highfloat

Range of slider values.
valuefloat

Default slider value. If None, use midpoint between low and high.
value_type{‘float’ | ‘int’}, optional

Numeric type of slider value.
ptype{‘kwarg’ | ‘arg’ | ‘plugin’}, optional

Parameter type.
callbackcallable f(widget_name, value), optional

Callback function called in response to slider changes. Note: This function is typically set (overridden) when the widget is added to a plugin.
orientation{‘horizontal’ | ‘vertical’}, optional

Slider orientation.
update_on{‘release’ | ‘move’}, optional

Control when callback function is called: on slider move or release.
__init__(name, low=0.0, high=1.0, value=None, value_type='float', ptype='kwarg', callback=None, max_edit_width=60, orientation='horizontal', update_on='release') [source]

Initialize self. See help(type(self)) for accurate signature.

property val

 Text
class skimage.viewer.widgets.Text(name=None, text='') [source]

Bases: skimage.viewer.widgets.core.BaseWidget
__init__(name=None, text='') [source]

Initialize self. See help(type(self)) for accurate signature.

property text


class skimage.viewer.widgets.BaseWidget(name, ptype=None, callback=None) [source]

Bases: object
__init__(name, ptype=None, callback=None) [source]

Initialize self. See help(type(self)) for accurate signature.

plugin = 'Widget is not attached to a Plugin.'

property val


plugin = 'Widget is not attached to a Plugin.'


__init__(name, ptype=None, callback=None) [source]

Initialize self. See help(type(self)) for accurate signature.


class skimage.viewer.widgets.Button(name, callback) [source]

Bases: skimage.viewer.widgets.core.BaseWidget Button which calls callback upon click.  Parameters

namestr

Name of button.
callbackcallable f()

Function to call when button is clicked.
__init__(name, callback) [source]

Initialize self. See help(type(self)) for accurate signature.


__init__(name, callback) [source]

Initialize self. See help(type(self)) for accurate signature.


class skimage.viewer.widgets.CheckBox(name, value=False, alignment='center', ptype='kwarg', callback=None) [source]

Bases: skimage.viewer.widgets.core.BaseWidget CheckBox widget  Parameters

namestr

Name of CheckBox parameter. If this parameter is passed as a keyword argument, it must match the name of that keyword argument (spaces are replaced with underscores). In addition, this name is displayed as the name of the CheckBox.  value: {False, True}, optional

Initial state of the CheckBox.  alignment: {‘center’,’left’,’right’}, optional

Checkbox alignment
ptype{‘arg’ | ‘kwarg’ | ‘plugin’}, optional

Parameter type
callbackcallable f(widget_name, value), optional

Callback function called in response to checkbox changes. Note: This function is typically set (overridden) when the widget is added to a plugin.
__init__(name, value=False, alignment='center', ptype='kwarg', callback=None) [source]

Initialize self. See help(type(self)) for accurate signature.

property val


__init__(name, value=False, alignment='center', ptype='kwarg', callback=None) [source]

Initialize self. See help(type(self)) for accurate signature.


class skimage.viewer.widgets.ComboBox(name, items, ptype='kwarg', callback=None) [source]

Bases: skimage.viewer.widgets.core.BaseWidget ComboBox widget for selecting among a list of choices.  Parameters

namestr

Name of ComboBox parameter. If this parameter is passed as a keyword argument, it must match the name of that keyword argument (spaces are replaced with underscores). In addition, this name is displayed as the name of the ComboBox.  items: list of str

Allowed parameter values.
ptype{‘arg’ | ‘kwarg’ | ‘plugin’}, optional

Parameter type.
callbackcallable f(widget_name, value), optional

Callback function called in response to combobox changes. Note: This function is typically set (overridden) when the widget is added to a plugin.
__init__(name, items, ptype='kwarg', callback=None) [source]

Initialize self. See help(type(self)) for accurate signature.

property index

property val


__init__(name, items, ptype='kwarg', callback=None) [source]

Initialize self. See help(type(self)) for accurate signature.


class skimage.viewer.widgets.OKCancelButtons(button_width=80) [source]

Bases: skimage.viewer.widgets.core.BaseWidget Buttons that close the parent plugin. OK will replace the original image with the current (filtered) image. Cancel will just close the plugin.
__init__(button_width=80) [source]

Initialize self. See help(type(self)) for accurate signature.

close_plugin() [source]

update_original_image() [source]


__init__(button_width=80) [source]

Initialize self. See help(type(self)) for accurate signature.


class skimage.viewer.widgets.SaveButtons(name='Save to:', default_format='png') [source]

Bases: skimage.viewer.widgets.core.BaseWidget Buttons to save image to io.stack or to a file.
__init__(name='Save to:', default_format='png') [source]

Initialize self. See help(type(self)) for accurate signature.

save_to_file(filename=None) [source]

save_to_stack() [source]


__init__(name='Save to:', default_format='png') [source]

Initialize self. See help(type(self)) for accurate signature.


class skimage.viewer.widgets.Slider(name, low=0.0, high=1.0, value=None, value_type='float', ptype='kwarg', callback=None, max_edit_width=60, orientation='horizontal', update_on='release') [source]

Bases: skimage.viewer.widgets.core.BaseWidget Slider widget for adjusting numeric parameters.  Parameters

namestr

Name of slider parameter. If this parameter is passed as a keyword argument, it must match the name of that keyword argument (spaces are replaced with underscores). In addition, this name is displayed as the name of the slider.
low, highfloat

Range of slider values.
valuefloat

Default slider value. If None, use midpoint between low and high.
value_type{‘float’ | ‘int’}, optional

Numeric type of slider value.
ptype{‘kwarg’ | ‘arg’ | ‘plugin’}, optional

Parameter type.
callbackcallable f(widget_name, value), optional

Callback function called in response to slider changes. Note: This function is typically set (overridden) when the widget is added to a plugin.
orientation{‘horizontal’ | ‘vertical’}, optional

Slider orientation.
update_on{‘release’ | ‘move’}, optional

Control when callback function is called: on slider move or release.
__init__(name, low=0.0, high=1.0, value=None, value_type='float', ptype='kwarg', callback=None, max_edit_width=60, orientation='horizontal', update_on='release') [source]

Initialize self. See help(type(self)) for accurate signature.

property val


__init__(name, low=0.0, high=1.0, value=None, value_type='float', ptype='kwarg', callback=None, max_edit_width=60, orientation='horizontal', update_on='release') [source]

Initialize self. See help(type(self)) for accurate signature.


class skimage.viewer.widgets.Text(name=None, text='') [source]

Bases: skimage.viewer.widgets.core.BaseWidget
__init__(name=None, text='') [source]

Initialize self. See help(type(self)) for accurate signature.

property text


__init__(name=None, text='') [source]

Initialize self. See help(type(self)) for accurate signature.


abc — Abstract Base Classes Source code: Lib/abc.py This module provides the infrastructure for defining abstract base classes (ABCs) in Python, as outlined in PEP 3119; see the PEP for why this was added to Python. (See also PEP 3141 and the numbers module regarding a type hierarchy for numbers based on ABCs.) The collections module has some concrete classes that derive from ABCs; these can, of course, be further derived. In addition, the collections.abc submodule has some ABCs that can be used to test whether a class or instance provides a particular interface, for example, if it is hashable or if it is a mapping. This module provides the metaclass ABCMeta for defining ABCs and a helper class ABC to alternatively define ABCs through inheritance:
class abc.ABC
A helper class that has ABCMeta as its metaclass. With this class, an abstract base class can be created by simply deriving from ABC avoiding sometimes confusing metaclass usage, for example: from abc import ABC

class MyABC(ABC):
    pass
 Note that the type of ABC is still ABCMeta, therefore inheriting from ABC requires the usual precautions regarding metaclass usage, as multiple inheritance may lead to metaclass conflicts. One may also define an abstract base class by passing the metaclass keyword and using ABCMeta directly, for example: from abc import ABCMeta

class MyABC(metaclass=ABCMeta):
    pass
  New in version 3.4.

class abc.ABCMeta
Metaclass for defining Abstract Base Classes (ABCs). Use this metaclass to create an ABC. An ABC can be subclassed directly, and then acts as a mix-in class. You can also register unrelated concrete classes (even built-in classes) and unrelated ABCs as “virtual subclasses” – these and their descendants will be considered subclasses of the registering ABC by the built-in issubclass() function, but the registering ABC won’t show up in their MRO (Method Resolution Order) nor will method implementations defined by the registering ABC be callable (not even via super()). 1 Classes created with a metaclass of ABCMeta have the following method:
register(subclass)
Register subclass as a “virtual subclass” of this ABC. For example: from abc import ABC

class MyABC(ABC):
    pass

MyABC.register(tuple)

assert issubclass(tuple, MyABC)
assert isinstance((), MyABC)
  Changed in version 3.3: Returns the registered subclass, to allow usage as a class decorator.   Changed in version 3.4: To detect calls to register(), you can use the get_cache_token() function.
 You can also override this method in an abstract base class:
__subclasshook__(subclass)
(Must be defined as a class method.) Check whether subclass is considered a subclass of this ABC. This means that you can customize the behavior of issubclass further without the need to call register() on every class you want to consider a subclass of the ABC. (This class method is called from the __subclasscheck__() method of the ABC.) This method should return True, False or NotImplemented. If it returns True, the subclass is considered a subclass of this ABC. If it returns False, the subclass is not considered a subclass of this ABC, even if it would normally be one. If it returns NotImplemented, the subclass check is continued with the usual mechanism.
 For a demonstration of these concepts, look at this example ABC definition: class Foo:
    def __getitem__(self, index):
        ...
    def __len__(self):
        ...
    def get_iterator(self):
        return iter(self)

class MyIterable(ABC):

    @abstractmethod
    def __iter__(self):
        while False:
            yield None

    def get_iterator(self):
        return self.__iter__()

    @classmethod
    def __subclasshook__(cls, C):
        if cls is MyIterable:
            if any("__iter__" in B.__dict__ for B in C.__mro__):
                return True
        return NotImplemented

MyIterable.register(Foo)
 The ABC MyIterable defines the standard iterable method, __iter__(), as an abstract method. The implementation given here can still be called from subclasses. The get_iterator() method is also part of the MyIterable abstract base class, but it does not have to be overridden in non-abstract derived classes. The __subclasshook__() class method defined here says that any class that has an __iter__() method in its __dict__ (or in that of one of its base classes, accessed via the __mro__ list) is considered a MyIterable too. Finally, the last line makes Foo a virtual subclass of MyIterable, even though it does not define an __iter__() method (it uses the old-style iterable protocol, defined in terms of __len__() and __getitem__()). Note that this will not make get_iterator available as a method of Foo, so it is provided separately.
 The abc module also provides the following decorator:
@abc.abstractmethod
A decorator indicating abstract methods. Using this decorator requires that the class’s metaclass is ABCMeta or is derived from it. A class that has a metaclass derived from ABCMeta cannot be instantiated unless all of its abstract methods and properties are overridden. The abstract methods can be called using any of the normal ‘super’ call mechanisms. abstractmethod() may be used to declare abstract methods for properties and descriptors. Dynamically adding abstract methods to a class, or attempting to modify the abstraction status of a method or class once it is created, are not supported. The abstractmethod() only affects subclasses derived using regular inheritance; “virtual subclasses” registered with the ABC’s register() method are not affected. When abstractmethod() is applied in combination with other method descriptors, it should be applied as the innermost decorator, as shown in the following usage examples: class C(ABC):
    @abstractmethod
    def my_abstract_method(self, ...):
        ...
    @classmethod
    @abstractmethod
    def my_abstract_classmethod(cls, ...):
        ...
    @staticmethod
    @abstractmethod
    def my_abstract_staticmethod(...):
        ...

    @property
    @abstractmethod
    def my_abstract_property(self):
        ...
    @my_abstract_property.setter
    @abstractmethod
    def my_abstract_property(self, val):
        ...

    @abstractmethod
    def _get_x(self):
        ...
    @abstractmethod
    def _set_x(self, val):
        ...
    x = property(_get_x, _set_x)
 In order to correctly interoperate with the abstract base class machinery, the descriptor must identify itself as abstract using __isabstractmethod__. In general, this attribute should be True if any of the methods used to compose the descriptor are abstract. For example, Python’s built-in property does the equivalent of: class Descriptor:
    ...
    @property
    def __isabstractmethod__(self):
        return any(getattr(f, '__isabstractmethod__', False) for
                   f in (self._fget, self._fset, self._fdel))
  Note Unlike Java abstract methods, these abstract methods may have an implementation. This implementation can be called via the super() mechanism from the class that overrides it. This could be useful as an end-point for a super-call in a framework that uses cooperative multiple-inheritance.
 The abc module also supports the following legacy decorators:
@abc.abstractclassmethod
 New in version 3.2.   Deprecated since version 3.3: It is now possible to use classmethod with abstractmethod(), making this decorator redundant.  A subclass of the built-in classmethod(), indicating an abstract classmethod. Otherwise it is similar to abstractmethod(). This special case is deprecated, as the classmethod() decorator is now correctly identified as abstract when applied to an abstract method: class C(ABC):
    @classmethod
    @abstractmethod
    def my_abstract_classmethod(cls, ...):
        ...

@abc.abstractstaticmethod
 New in version 3.2.   Deprecated since version 3.3: It is now possible to use staticmethod with abstractmethod(), making this decorator redundant.  A subclass of the built-in staticmethod(), indicating an abstract staticmethod. Otherwise it is similar to abstractmethod(). This special case is deprecated, as the staticmethod() decorator is now correctly identified as abstract when applied to an abstract method: class C(ABC):
    @staticmethod
    @abstractmethod
    def my_abstract_staticmethod(...):
        ...

@abc.abstractproperty
 Deprecated since version 3.3: It is now possible to use property, property.getter(), property.setter() and property.deleter() with abstractmethod(), making this decorator redundant.  A subclass of the built-in property(), indicating an abstract property. This special case is deprecated, as the property() decorator is now correctly identified as abstract when applied to an abstract method: class C(ABC):
    @property
    @abstractmethod
    def my_abstract_property(self):
        ...
 The above example defines a read-only property; you can also define a read-write abstract property by appropriately marking one or more of the underlying methods as abstract: class C(ABC):
    @property
    def x(self):
        ...

    @x.setter
    @abstractmethod
    def x(self, val):
        ...
 If only some components are abstract, only those components need to be updated to create a concrete property in a subclass: class D(C):
    @C.x.setter
    def x(self, val):
        ...

 The abc module also provides the following functions:
abc.get_cache_token()
Returns the current abstract base class cache token. The token is an opaque object (that supports equality testing) identifying the current version of the abstract base class cache for virtual subclasses. The token changes with every call to ABCMeta.register() on any ABC.  New in version 3.4.
 Footnotes
1
C++ programmers should note that Python’s virtual base class concept is not the same as C++’s.


class abc.ABC
A helper class that has ABCMeta as its metaclass. With this class, an abstract base class can be created by simply deriving from ABC avoiding sometimes confusing metaclass usage, for example: from abc import ABC

class MyABC(ABC):
    pass
 Note that the type of ABC is still ABCMeta, therefore inheriting from ABC requires the usual precautions regarding metaclass usage, as multiple inheritance may lead to metaclass conflicts. One may also define an abstract base class by passing the metaclass keyword and using ABCMeta directly, for example: from abc import ABCMeta

class MyABC(metaclass=ABCMeta):
    pass
  New in version 3.4.


class abc.ABCMeta
Metaclass for defining Abstract Base Classes (ABCs). Use this metaclass to create an ABC. An ABC can be subclassed directly, and then acts as a mix-in class. You can also register unrelated concrete classes (even built-in classes) and unrelated ABCs as “virtual subclasses” – these and their descendants will be considered subclasses of the registering ABC by the built-in issubclass() function, but the registering ABC won’t show up in their MRO (Method Resolution Order) nor will method implementations defined by the registering ABC be callable (not even via super()). 1 Classes created with a metaclass of ABCMeta have the following method:
register(subclass)
Register subclass as a “virtual subclass” of this ABC. For example: from abc import ABC

class MyABC(ABC):
    pass

MyABC.register(tuple)

assert issubclass(tuple, MyABC)
assert isinstance((), MyABC)
  Changed in version 3.3: Returns the registered subclass, to allow usage as a class decorator.   Changed in version 3.4: To detect calls to register(), you can use the get_cache_token() function.
 You can also override this method in an abstract base class:
__subclasshook__(subclass)
(Must be defined as a class method.) Check whether subclass is considered a subclass of this ABC. This means that you can customize the behavior of issubclass further without the need to call register() on every class you want to consider a subclass of the ABC. (This class method is called from the __subclasscheck__() method of the ABC.) This method should return True, False or NotImplemented. If it returns True, the subclass is considered a subclass of this ABC. If it returns False, the subclass is not considered a subclass of this ABC, even if it would normally be one. If it returns NotImplemented, the subclass check is continued with the usual mechanism.
 For a demonstration of these concepts, look at this example ABC definition: class Foo:
    def __getitem__(self, index):
        ...
    def __len__(self):
        ...
    def get_iterator(self):
        return iter(self)

class MyIterable(ABC):

    @abstractmethod
    def __iter__(self):
        while False:
            yield None

    def get_iterator(self):
        return self.__iter__()

    @classmethod
    def __subclasshook__(cls, C):
        if cls is MyIterable:
            if any("__iter__" in B.__dict__ for B in C.__mro__):
                return True
        return NotImplemented

MyIterable.register(Foo)
 The ABC MyIterable defines the standard iterable method, __iter__(), as an abstract method. The implementation given here can still be called from subclasses. The get_iterator() method is also part of the MyIterable abstract base class, but it does not have to be overridden in non-abstract derived classes. The __subclasshook__() class method defined here says that any class that has an __iter__() method in its __dict__ (or in that of one of its base classes, accessed via the __mro__ list) is considered a MyIterable too. Finally, the last line makes Foo a virtual subclass of MyIterable, even though it does not define an __iter__() method (it uses the old-style iterable protocol, defined in terms of __len__() and __getitem__()). Note that this will not make get_iterator available as a method of Foo, so it is provided separately.


register(subclass)
Register subclass as a “virtual subclass” of this ABC. For example: from abc import ABC

class MyABC(ABC):
    pass

MyABC.register(tuple)

assert issubclass(tuple, MyABC)
assert isinstance((), MyABC)
  Changed in version 3.3: Returns the registered subclass, to allow usage as a class decorator.   Changed in version 3.4: To detect calls to register(), you can use the get_cache_token() function.


__subclasshook__(subclass)
(Must be defined as a class method.) Check whether subclass is considered a subclass of this ABC. This means that you can customize the behavior of issubclass further without the need to call register() on every class you want to consider a subclass of the ABC. (This class method is called from the __subclasscheck__() method of the ABC.) This method should return True, False or NotImplemented. If it returns True, the subclass is considered a subclass of this ABC. If it returns False, the subclass is not considered a subclass of this ABC, even if it would normally be one. If it returns NotImplemented, the subclass check is continued with the usual mechanism.


@abc.abstractclassmethod
 New in version 3.2.   Deprecated since version 3.3: It is now possible to use classmethod with abstractmethod(), making this decorator redundant.  A subclass of the built-in classmethod(), indicating an abstract classmethod. Otherwise it is similar to abstractmethod(). This special case is deprecated, as the classmethod() decorator is now correctly identified as abstract when applied to an abstract method: class C(ABC):
    @classmethod
    @abstractmethod
    def my_abstract_classmethod(cls, ...):
        ...


@abc.abstractmethod
A decorator indicating abstract methods. Using this decorator requires that the class’s metaclass is ABCMeta or is derived from it. A class that has a metaclass derived from ABCMeta cannot be instantiated unless all of its abstract methods and properties are overridden. The abstract methods can be called using any of the normal ‘super’ call mechanisms. abstractmethod() may be used to declare abstract methods for properties and descriptors. Dynamically adding abstract methods to a class, or attempting to modify the abstraction status of a method or class once it is created, are not supported. The abstractmethod() only affects subclasses derived using regular inheritance; “virtual subclasses” registered with the ABC’s register() method are not affected. When abstractmethod() is applied in combination with other method descriptors, it should be applied as the innermost decorator, as shown in the following usage examples: class C(ABC):
    @abstractmethod
    def my_abstract_method(self, ...):
        ...
    @classmethod
    @abstractmethod
    def my_abstract_classmethod(cls, ...):
        ...
    @staticmethod
    @abstractmethod
    def my_abstract_staticmethod(...):
        ...

    @property
    @abstractmethod
    def my_abstract_property(self):
        ...
    @my_abstract_property.setter
    @abstractmethod
    def my_abstract_property(self, val):
        ...

    @abstractmethod
    def _get_x(self):
        ...
    @abstractmethod
    def _set_x(self, val):
        ...
    x = property(_get_x, _set_x)
 In order to correctly interoperate with the abstract base class machinery, the descriptor must identify itself as abstract using __isabstractmethod__. In general, this attribute should be True if any of the methods used to compose the descriptor are abstract. For example, Python’s built-in property does the equivalent of: class Descriptor:
    ...
    @property
    def __isabstractmethod__(self):
        return any(getattr(f, '__isabstractmethod__', False) for
                   f in (self._fget, self._fset, self._fdel))
  Note Unlike Java abstract methods, these abstract methods may have an implementation. This implementation can be called via the super() mechanism from the class that overrides it. This could be useful as an end-point for a super-call in a framework that uses cooperative multiple-inheritance.


@abc.abstractproperty
 Deprecated since version 3.3: It is now possible to use property, property.getter(), property.setter() and property.deleter() with abstractmethod(), making this decorator redundant.  A subclass of the built-in property(), indicating an abstract property. This special case is deprecated, as the property() decorator is now correctly identified as abstract when applied to an abstract method: class C(ABC):
    @property
    @abstractmethod
    def my_abstract_property(self):
        ...
 The above example defines a read-only property; you can also define a read-write abstract property by appropriately marking one or more of the underlying methods as abstract: class C(ABC):
    @property
    def x(self):
        ...

    @x.setter
    @abstractmethod
    def x(self, val):
        ...
 If only some components are abstract, only those components need to be updated to create a concrete property in a subclass: class D(C):
    @C.x.setter
    def x(self, val):
        ...


@abc.abstractstaticmethod
 New in version 3.2.   Deprecated since version 3.3: It is now possible to use staticmethod with abstractmethod(), making this decorator redundant.  A subclass of the built-in staticmethod(), indicating an abstract staticmethod. Otherwise it is similar to abstractmethod(). This special case is deprecated, as the staticmethod() decorator is now correctly identified as abstract when applied to an abstract method: class C(ABC):
    @staticmethod
    @abstractmethod
    def my_abstract_staticmethod(...):
        ...


abc.get_cache_token()
Returns the current abstract base class cache token. The token is an opaque object (that supports equality testing) identifying the current version of the abstract base class cache for virtual subclasses. The token changes with every call to ABCMeta.register() on any ABC.  New in version 3.4.


abs(x)
Return the absolute value of a number. The argument may be an integer, a floating point number, or an object implementing __abs__(). If the argument is a complex number, its magnitude is returned.


aifc — Read and write AIFF and AIFC files Source code: Lib/aifc.py This module provides support for reading and writing AIFF and AIFF-C files. AIFF is Audio Interchange File Format, a format for storing digital audio samples in a file. AIFF-C is a newer version of the format that includes the ability to compress the audio data. Audio files have a number of parameters that describe the audio data. The sampling rate or frame rate is the number of times per second the sound is sampled. The number of channels indicate if the audio is mono, stereo, or quadro. Each frame consists of one sample per channel. The sample size is the size in bytes of each sample. Thus a frame consists of nchannels * samplesize bytes, and a second’s worth of audio consists of nchannels * samplesize * framerate bytes. For example, CD quality audio has a sample size of two bytes (16 bits), uses two channels (stereo) and has a frame rate of 44,100 frames/second. This gives a frame size of 4 bytes (2*2), and a second’s worth occupies 2*2*44100 bytes (176,400 bytes). Module aifc defines the following function:
aifc.open(file, mode=None)
Open an AIFF or AIFF-C file and return an object instance with methods that are described below. The argument file is either a string naming a file or a file object. mode must be 'r' or 'rb' when the file must be opened for reading, or 'w' or 'wb' when the file must be opened for writing. If omitted, file.mode is used if it exists, otherwise 'rb' is used. When used for writing, the file object should be seekable, unless you know ahead of time how many samples you are going to write in total and use writeframesraw() and setnframes(). The open() function may be used in a with statement. When the with block completes, the close() method is called.  Changed in version 3.4: Support for the with statement was added.
 Objects returned by open() when a file is opened for reading have the following methods:
aifc.getnchannels()
Return the number of audio channels (1 for mono, 2 for stereo).

aifc.getsampwidth()
Return the size in bytes of individual samples.

aifc.getframerate()
Return the sampling rate (number of audio frames per second).

aifc.getnframes()
Return the number of audio frames in the file.

aifc.getcomptype()
Return a bytes array of length 4 describing the type of compression used in the audio file. For AIFF files, the returned value is b'NONE'.

aifc.getcompname()
Return a bytes array convertible to a human-readable description of the type of compression used in the audio file. For AIFF files, the returned value is b'not compressed'.

aifc.getparams()
Returns a namedtuple() (nchannels, sampwidth,
framerate, nframes, comptype, compname), equivalent to output of the get*() methods.

aifc.getmarkers()
Return a list of markers in the audio file. A marker consists of a tuple of three elements. The first is the mark ID (an integer), the second is the mark position in frames from the beginning of the data (an integer), the third is the name of the mark (a string).

aifc.getmark(id)
Return the tuple as described in getmarkers() for the mark with the given id.

aifc.readframes(nframes)
Read and return the next nframes frames from the audio file. The returned data is a string containing for each frame the uncompressed samples of all channels.

aifc.rewind()
Rewind the read pointer. The next readframes() will start from the beginning.

aifc.setpos(pos)
Seek to the specified frame number.

aifc.tell()
Return the current frame number.

aifc.close()
Close the AIFF file. After calling this method, the object can no longer be used.
 Objects returned by open() when a file is opened for writing have all the above methods, except for readframes() and setpos(). In addition the following methods exist. The get*() methods can only be called after the corresponding set*() methods have been called. Before the first writeframes() or writeframesraw(), all parameters except for the number of frames must be filled in.
aifc.aiff()
Create an AIFF file. The default is that an AIFF-C file is created, unless the name of the file ends in '.aiff' in which case the default is an AIFF file.

aifc.aifc()
Create an AIFF-C file. The default is that an AIFF-C file is created, unless the name of the file ends in '.aiff' in which case the default is an AIFF file.

aifc.setnchannels(nchannels)
Specify the number of channels in the audio file.

aifc.setsampwidth(width)
Specify the size in bytes of audio samples.

aifc.setframerate(rate)
Specify the sampling frequency in frames per second.

aifc.setnframes(nframes)
Specify the number of frames that are to be written to the audio file. If this parameter is not set, or not set correctly, the file needs to support seeking.

aifc.setcomptype(type, name)
Specify the compression type. If not specified, the audio data will not be compressed. In AIFF files, compression is not possible. The name parameter should be a human-readable description of the compression type as a bytes array, the type parameter should be a bytes array of length 4. Currently the following compression types are supported: b'NONE', b'ULAW', b'ALAW', b'G722'.

aifc.setparams(nchannels, sampwidth, framerate, comptype, compname)
Set all the above parameters at once. The argument is a tuple consisting of the various parameters. This means that it is possible to use the result of a getparams() call as argument to setparams().

aifc.setmark(id, pos, name)
Add a mark with the given id (larger than 0), and the given name at the given position. This method can be called at any time before close().

aifc.tell()
Return the current write position in the output file. Useful in combination with setmark().

aifc.writeframes(data)
Write data to the output file. This method can only be called after the audio file parameters have been set.  Changed in version 3.4: Any bytes-like object is now accepted.

aifc.writeframesraw(data)
Like writeframes(), except that the header of the audio file is not updated.  Changed in version 3.4: Any bytes-like object is now accepted.

aifc.close()
Close the AIFF file. The header of the file is updated to reflect the actual size of the audio data. After calling this method, the object can no longer be used.


aifc.aifc()
Create an AIFF-C file. The default is that an AIFF-C file is created, unless the name of the file ends in '.aiff' in which case the default is an AIFF file.


aifc.aiff()
Create an AIFF file. The default is that an AIFF-C file is created, unless the name of the file ends in '.aiff' in which case the default is an AIFF file.


aifc.close()
Close the AIFF file. After calling this method, the object can no longer be used.


aifc.getcompname()
Return a bytes array convertible to a human-readable description of the type of compression used in the audio file. For AIFF files, the returned value is b'not compressed'.


aifc.getcomptype()
Return a bytes array of length 4 describing the type of compression used in the audio file. For AIFF files, the returned value is b'NONE'.


aifc.getframerate()
Return the sampling rate (number of audio frames per second).


aifc.getmark(id)
Return the tuple as described in getmarkers() for the mark with the given id.


aifc.getmarkers()
Return a list of markers in the audio file. A marker consists of a tuple of three elements. The first is the mark ID (an integer), the second is the mark position in frames from the beginning of the data (an integer), the third is the name of the mark (a string).


aifc.getnchannels()
Return the number of audio channels (1 for mono, 2 for stereo).


aifc.getnframes()
Return the number of audio frames in the file.


aifc.getparams()
Returns a namedtuple() (nchannels, sampwidth,
framerate, nframes, comptype, compname), equivalent to output of the get*() methods.


aifc.getsampwidth()
Return the size in bytes of individual samples.


aifc.readframes(nframes)
Read and return the next nframes frames from the audio file. The returned data is a string containing for each frame the uncompressed samples of all channels.


aifc.rewind()
Rewind the read pointer. The next readframes() will start from the beginning.


aifc.setcomptype(type, name)
Specify the compression type. If not specified, the audio data will not be compressed. In AIFF files, compression is not possible. The name parameter should be a human-readable description of the compression type as a bytes array, the type parameter should be a bytes array of length 4. Currently the following compression types are supported: b'NONE', b'ULAW', b'ALAW', b'G722'.


aifc.setframerate(rate)
Specify the sampling frequency in frames per second.


aifc.setmark(id, pos, name)
Add a mark with the given id (larger than 0), and the given name at the given position. This method can be called at any time before close().


aifc.setnchannels(nchannels)
Specify the number of channels in the audio file.


aifc.setnframes(nframes)
Specify the number of frames that are to be written to the audio file. If this parameter is not set, or not set correctly, the file needs to support seeking.


aifc.setparams(nchannels, sampwidth, framerate, comptype, compname)
Set all the above parameters at once. The argument is a tuple consisting of the various parameters. This means that it is possible to use the result of a getparams() call as argument to setparams().


aifc.setpos(pos)
Seek to the specified frame number.


aifc.setsampwidth(width)
Specify the size in bytes of audio samples.


aifc.tell()
Return the current frame number.


aifc.writeframes(data)
Write data to the output file. This method can only be called after the audio file parameters have been set.  Changed in version 3.4: Any bytes-like object is now accepted.


aifc.writeframesraw(data)
Like writeframes(), except that the header of the audio file is not updated.  Changed in version 3.4: Any bytes-like object is now accepted.


aifc.open(file, mode=None)
Open an AIFF or AIFF-C file and return an object instance with methods that are described below. The argument file is either a string naming a file or a file object. mode must be 'r' or 'rb' when the file must be opened for reading, or 'w' or 'wb' when the file must be opened for writing. If omitted, file.mode is used if it exists, otherwise 'rb' is used. When used for writing, the file object should be seekable, unless you know ahead of time how many samples you are going to write in total and use writeframesraw() and setnframes(). The open() function may be used in a with statement. When the with block completes, the close() method is called.  Changed in version 3.4: Support for the with statement was added.


all(iterable)
Return True if all elements of the iterable are true (or if the iterable is empty). Equivalent to: def all(iterable):
    for element in iterable:
        if not element:
            return False
    return True


any(iterable)
Return True if any element of the iterable is true. If the iterable is empty, return False. Equivalent to: def any(iterable):
    for element in iterable:
        if element:
            return True
    return False