matplotlib._api
Вспомогательные функции для управления API Matplotlib.
Эта документация предназначена только для разработчиков Matplotlib, а не для пользователей.
Предупреждение
Этот модуль и его подмодули предназначены только для внутреннего использования. Не используйте их в собственном коде. Мы можем изменить API в любое время без предупреждения.
- matplotlib._api.caching_module_getattr(cls)[исходный код]
-
Вспомогательный декоратор для реализации
__getattr__уровня модуля в виде класса.Этот декоратор необходимо использовать на верхнем уровне модуля следующим образом:
@caching_module_getattr class __getattr__: # The class *must* be named ``__getattr__``. @property # Only properties are taken into account. def name(self): ...Класс
__getattr__будет заменён функцией__getattr__, так что обращение кnameв модуле приведёт к получению соответствующего свойства (которое может быть декорировано, например, с помощью_api.deprecatedдля устаревших глобальных переменных модуля). Все свойства неявно кэшируются. Кроме того, если свойства с указанным именем не существует, генерируется и возбуждается соответствующее исключение AttributeError.
- matplotlib._api.check_getitem(mapping, /, **kwargs)[исходный код]
-
kwargs должен содержать одну пару ключ, значение. Если ключ есть в mapping, возвращается
mapping[value]; в противном случае возбуждается соответствующее исключение ValueError.Примеры
>>> _api.check_getitem({"foo": "bar"}, arg=arg)
- matplotlib._api.check_in_list(values, /, *, _print_supported_values=True, **kwargs)[исходный код]
-
Для каждой пары ключ, значение в kwargs проверяет, что значение входит в values; если нет, возбуждается соответствующее исключение ValueError.
- Параметры:
-
- valuesитерируемый объект
-
Последовательность значений для проверки.
Примечание: все значения должны поддерживать сравнение с помощью ==. В частности, это означает, что элементы не должны быть массивами numpy.
- _print_supported_valuesbool, по умолчанию: True
-
Следует ли выводить values при возбуждении ValueError.
- **kwargsdict
-
Пары ключ, значение, переданные в виде именованных аргументов для поиска в values.
- Возбуждает:
-
- ValueError
-
Если какое-либо значение в kwargs не найдено в values.
Примеры
>>> _api.check_in_list(["foo", "bar"], arg=arg, other_arg=other_arg)
- matplotlib._api.check_isinstance(types, /, **kwargs)[исходный код]
-
Для каждой пары ключ, значение в kwargs проверяет, что значение является экземпляром одного из типов в types; если нет, возбуждается соответствующее исключение TypeError.
В особом случае элемент
Noneв types рассматривается как NoneType.Примеры
>>> _api.check_isinstance((SomeClass, None), arg=arg)
- matplotlib._api.check_shape(shape, /, **kwargs)[исходный код]
-
Для каждой пары ключ, значение в kwargs проверяет, что форма значения соответствует shape; если нет, возбуждается соответствующее исключение ValueError.
None в форме рассматривается как «свободный» размер, который может иметь любую длину. Например, (None, 2) -> (N, 2)
Проверяемые значения должны быть массивами numpy.
Примеры
Проверка массивов формы (N, 2)
>>> _api.check_shape((None, 2), arg=arg, other_arg=other_arg)
- classmatplotlib._api.classproperty(fget, fset=None, fdel=None, doc=None)[исходный код]
-
Базовые классы:
objectКак
property, но также срабатывает при обращении через класс, и в качестве аргумента передаётся именно класс.Примеры
class C: @classproperty def foo(cls): return cls.__name__ assert C.foo == "C"- propertyfget
- matplotlib._api.define_aliases(alias_d, cls=None)[исходный код]
-
Декоратор класса для определения псевдонимов свойств.
Используется следующим образом:
@_api.define_aliases({"property": ["alias", ...], ...}) class C: ...Для каждого свойства, если соответствующий
get_propertyуже определён в классе, будет определён псевдоним с именемget_alias; то же самое будет сделано для сеттеров. Если отсутствуют и геттер, и сеттер, будет возбуждено исключение.Сопоставление псевдонимов хранится в атрибуте
_alias_mapкласса и может использоваться функциейnormalize_kwargs(которая предполагает, что псевдонимы с более высоким приоритетом указаны последними).
- matplotlib._api.kwarg_error(name, kw)[исходный код]
-
Создаёт исключение TypeError для возбуждения при вызове функции с неверным именованным аргументом.
- Параметры:
-
- namestr
-
Имя вызывающей функции.
- kwstr или Iterable[str]
-
Имя недопустимого именованного аргумента или итерируемый объект, возвращающий недопустимые именованные аргументы (например, словарь
kwargs).
- matplotlib._api.nargs_error(name, takes, given)[исходный код]
-
Создаёт исключение TypeError для возбуждения при вызове функции с неверным количеством аргументов.
- matplotlib._api.recursive_subclasses(cls)[исходный код]
-
Возвращает итератор по cls, а также его прямым и косвенным подклассам.
- matplotlib._api.select_matching_signature(funcs, *args, **kwargs)[исходный код]
-
Выбирает и вызывает функцию, принимающую
*args, **kwargs.funcs — список функций, которые не должны возбуждать никаких исключений (кроме
TypeError, если переданные аргументы не соответствуют их сигнатуре).select_matching_signatureпытается вызвать каждую функцию из funcs с*args, **kwargs(в указанном порядке). Вызовы, завершившиеся исключениемTypeError, молча пропускаются. Как только вызов завершается успешно,select_matching_signatureвозвращает его результат. Если ни одна функция не принимает*args, **kwargs, повторно возбуждается исключениеTypeError, возникшее при последнем неудачном вызове.Обычно вызывающий код должен гарантировать, что любой
*args, **kwargsможет соответствовать только одному func (во избежание неоднозначности), хотяselect_matching_signatureэто не проверяет.Примечания
select_matching_signatureпредназначена для помощи в реализации функций с перегруженными сигнатурами. В целом таких функций следует избегать, за исключением случаев, когда это необходимо для обратной совместимости. Типичный вариант использования:def my_func(*args, **kwargs): params = select_matching_signature( [lambda old1, old2: locals(), lambda new: locals()], *args, **kwargs) if "old1" in params: warn_deprecated(...) old1, old2 = params.values() # note that locals() is ordered. else: new, = params.values() # do things with paramsпозволяет вызывать my_func либо с двумя параметрами (old1 и old2), либо с одним (new). Обратите внимание, что новая сигнатура указана последней, поэтому вызывающие стороны получат исключение
TypeError, соответствующее новой сигнатуре, если переданные аргументы не соответствуют ни одной сигнатуре.
- matplotlib._api.warn_external(message, category=None)[исходный код]
-
Обёртка для
warnings.warn, устанавливающая stacklevel на уровень «вне Matplotlib».Исходный источник предупреждения можно определить, вернув этой функции исходную реализацию
warnings.warn, то есть_api.warn_external = warnings.warn(илиfunctools.partial(warnings.warn, stacklevel=2)и т. д.).
Вспомогательные функции для пометки частей API Matplotlib как устаревших.
Эта документация предназначена только для разработчиков Matplotlib, а не для пользователей.
Предупреждение
Этот модуль предназначен только для внутреннего использования. Не используйте его в собственном коде. Мы можем изменить API в любое время без предупреждения.
- exceptionmatplotlib._api.deprecation.MatplotlibDeprecationWarning[исходный код]
-
Базовые классы:
DeprecationWarningКласс для выдачи предупреждений об устаревании для пользователей Matplotlib.
- matplotlib._api.deprecation.delete_parameter(since, name, func=None, **kwargs)[исходный код]
-
Декоратор, указывающий, что параметр name функции func помечается как устаревший.
Фактическая реализация func должна сохранять параметр name в своей сигнатуре или принимать аргумент
**kwargs(через который передавался бы name).Параметры, следующие за устаревшим параметром, фактически становятся параметрами, передаваемыми только по имени (так как их нельзя передать позиционно, не вызвав DeprecationWarning для устаревшего параметра), и после окончания периода устаревания и удаления устаревшего параметра их следует пометить соответствующим образом.
Параметры, кроме since, name и func, являются параметрами, передаваемыми только по имени, и передаются функции
warn_deprecated.Примеры
@_api.delete_parameter("3.1", "unused") def func(used_arg, other_arg, unused, more_args): ...
- matplotlib._api.deprecation.deprecate_method_override(method, obj, *, allow_empty=False, **kwargs)[исходный код]
-
Возвращает
obj.methodс предупреждением об устаревании, если метод переопределён, иначе возвращает None.- Параметры:
-
- method
-
Несвязанный метод, то есть выражение вида
Class.method_name. Помните, что в теле метода всегда можно использовать__class__для ссылки на определяемый в данный момент класс. - obj
-
Объект класса, в котором определён method, либо подкласса этого класса.
- allow_emptybool, по умолчанию: False
-
Разрешать ли переопределения пустыми методами без выдачи предупреждения.
- **kwargs
-
Дополнительные параметры, передаваемые функции
warn_deprecatedдля создания предупреждения об устаревании; должны содержать как минимум ключ "since".
- classmatplotlib._api.deprecation.deprecate_privatize_attribute(*args, **kwargs)[исходный код]
-
Базовые классы:
objectВспомогательное средство для пометки публичного доступа к атрибуту (или методу) как устаревшего.
Это средство следует использовать только в области определения класса, следующим образом:
class Foo: attr = _deprecate_privatize_attribute(*args, **kwargs)при этом все параметры передаются функции
deprecated. В таком видеattrстановится свойством, которое перенаправляет чтение и запись наself._attr(то же имя с начальным символом подчёркивания) и выдаёт предупреждение об устаревании. Обратите внимание, что имя атрибута определяется по имени, которому присвоено это вспомогательное средство. Оно также подходит для пометки методов как устаревших.
- matplotlib._api.deprecation.deprecated(since, *, message='', name='', alternative='', pending=False, obj_type=None, addendum='', removal='')[исходный код]
-
Декоратор для пометки функции, класса или свойства как устаревших.
При пометке classmethod, staticmethod или свойства как устаревшего декоратор
@deprecatedдолжен располагаться под@classmethodи@staticmethod(то естьdeprecatedдолжен непосредственно декорировать вызываемый объект), но над@property.При пометке класса
C, предназначенного для использования в качестве базового класса в иерархии множественного наследования,Cдолжен определять метод__init__(еслиCунаследует__init__от собственного базового класса, то@deprecatedнарушит наследование__init__при установке собственногоC.__init__, выдающего предупреждение об устаревании).Параметры те же, что и у
warn_deprecated, за исключением того, что obj_type по умолчанию равен 'class' при декорировании класса, 'attribute' при декорировании свойства и 'function' в остальных случаях.Примеры
@deprecated('1.4.0') def the_function_to_deprecate(): pass
- matplotlib._api.deprecation.make_keyword_only(since, name, func=None)[исходный код]
-
Декоратор, указывающий, что передача параметра name (или любого следующего за ним) функции func позиционно помечается как устаревшая.
При использовании для метода с оболочкой pyplot этот декоратор должен быть внешним, чтобы
boilerplate.pyмогла получить исходную сигнатуру.
- matplotlib._api.deprecation.rename_parameter(since, old, new, func=None)[исходный код]
-
Декоратор, указывающий, что параметр old функции func переименован в new.
В фактической реализации func следует использовать new, а не old. Если в func передан old, выдаётся DeprecationWarning, а его значение используется, даже если new также передан по имени (это упрощает создание функций-обёрток pyplot, которые всегда явно передают new методу Axes). Если new также передан позиционно, базовая функция возбудит TypeError при связывании аргументов.
Примеры
@_api.rename_parameter("3.1", "bad_name", "good_name") def func(good_name): ...
- matplotlib._api.deprecation.suppress_matplotlib_deprecation_warning()[исходный код]
- matplotlib._api.deprecation.warn_deprecated(since, *, message='', name='', alternative='', pending=False, obj_type='', addendum='', removal='')[исходный код]
-
Вывести стандартизированное предупреждение об устаревании.
- Параметры:
-
- sincestr
-
Выпуск, начиная с которого этот API считается устаревшим.
- messagestr, optional
-
Переопределяет стандартное сообщение об устаревании. Спецификаторы формата
%(since)s,%(name)s,%(alternative)s,%(obj_type)s,%(addendum)sи%(removal)sзаменяются значениями соответствующих аргументов, переданных этой функции. - namestr, optional
-
Имя устаревшего объекта.
- alternativestr, optional
-
Альтернативный API, который пользователь может использовать вместо устаревшего API. Если указать этот параметр, предупреждение об устаревании сообщит пользователю об этой альтернативе.
- pendingbool, optional
-
Если значение равно True, вместо DeprecationWarning используется PendingDeprecationWarning. Нельзя использовать вместе с removal.
- obj_typestr, optional
-
Тип объекта, который объявляется устаревшим.
- addendumstr, optional
-
Дополнительный текст, который добавляется непосредственно в конец итогового сообщения.
- removalstr, optional
-
Ожидаемая версия удаления. По умолчанию (пустая строка) версия удаления автоматически вычисляется на основе since. Укажите другое ложное значение, чтобы не назначать дату удаления. Нельзя использовать вместе с pending.
Примеры
# To warn of the deprecation of "matplotlib.name_of_module" warn_deprecated('1.4.0', name='matplotlib.name_of_module', obj_type='module')
© 2012–2026 Matplotlib Development Team. All rights reserved.
Licensed under the Matplotlib License Agreement.
https://matplotlib.org/stable/api/_api_api.html