matplotlib._api#
Hilfsfunktionen zur Verwaltung der Matplotlib API.
Diese Dokumentation ist nur für Matplotlib-Entwickler relevant, nicht für Benutzer.
Warnung
Dieses Modul und seine Untermodule sind nur für den internen Gebrauch bestimmt. Verwenden Sie sie nicht in Ihrem eigenen Code. Wir können die API jederzeit ohne Vorwarnung ändern.
- matplotlib._api.caching_module_getattr(cls)[Quelle]#
Hilfsdekulator zur Implementierung von Modul-Level
__getattr__als Klasse.Dieser Dekulator muss auf der obersten Ebene des Moduls wie folgt verwendet werden:
@caching_module_getattr class __getattr__: # The class *must* be named ``__getattr__``. @property # Only properties are taken into account. def name(self): ...
Die
__getattr__-Klasse wird durch eine__getattr__-Funktion ersetzt, sodass Zugriffsversuche aufnameim Modul die entsprechende Eigenschaft auflösen (die z. B. mit_api.deprecatedzur Deprezierung von Modul-Globalen dekoriert sein kann). Die Eigenschaften sind alle implizit zwischengespeichert. Darüber hinaus wird ein geeigneter AttributeError generiert und ausgelöst, wenn keine Eigenschaft mit dem angegebenen Namen existiert.
- matplotlib._api.check_getitem(mapping, /, **kwargs)[Quelle]#
kwargs muss aus einem einzelnen Schlüssel, Wert-Paar bestehen. Wenn Schlüssel in mapping enthalten ist, wird
mapping[Wert]zurückgegeben; andernfalls wird ein geeigneter ValueError ausgelöst.Beispiele
>>> _api.check_getitem({"foo": "bar"}, arg=arg)
- matplotlib._api.check_in_list(values, /, *, _print_supported_values=True, **kwargs)[Quelle]#
Für jedes Schlüssel, Wert-Paar in kwargs wird geprüft, ob Wert in values enthalten ist; wenn nicht, wird ein geeigneter ValueError ausgelöst.
- Parameter:
- valuesiterable
Sequenz von zu prüfenden Werten.
- _print_supported_valuesbool, Standard: True
Ob values beim Auslösen von ValueError gedruckt werden sollen.
- **kwargsdict
Schlüssel, Wert-Paare als Schlüsselwortargumente, die in values gesucht werden sollen.
- Löst aus:
- ValueError
Wenn ein Wert in kwargs nicht in values gefunden wird.
Beispiele
>>> _api.check_in_list(["foo", "bar"], arg=arg, other_arg=other_arg)
- matplotlib._api.check_isinstance(types, /, **kwargs)[Quelle]#
Für jedes Schlüssel, Wert-Paar in kwargs wird geprüft, ob Wert eine Instanz von einem der types ist; wenn nicht, wird ein geeigneter TypeError ausgelöst.
Als Sonderfall wird ein
None-Eintrag in types als NoneType behandelt.Beispiele
>>> _api.check_isinstance((SomeClass, None), arg=arg)
- matplotlib._api.check_shape(shape, /, **kwargs)[Quelle]#
Für jedes Schlüssel, Wert-Paar in kwargs wird geprüft, ob Wert die Form shape hat; wenn nicht, wird ein geeigneter ValueError ausgelöst.
None in der Form wird als "freie" Größe behandelt, die jede Länge haben kann. z. B. (None, 2) -> (N, 2)
Die geprüften Werte müssen numpy-Arrays sein.
Beispiele
Zur Prüfung auf Arrays der Form (N, 2)
>>> _api.check_shape((None, 2), arg=arg, other_arg=other_arg)
- class matplotlib._api.classproperty(fget, fset=None, fdel=None, doc=None)[Quelle]#
Bases:
objectWie
property, aber löst auch beim Zugriff über die Klasse aus, und es ist die Klasse, die als Argument übergeben wird.Beispiele
class C: @classproperty def foo(cls): return cls.__name__ assert C.foo == "C"
- property fget#
- matplotlib._api.define_aliases(alias_d, cls=None)[Quelle]#
Klassendekulator zur Definition von Eigenschafts-Aliassen.
Verwendung wie:
@_api.define_aliases({"property": ["alias", ...], ...}) class C: ...
Für jede Eigenschaft wird, wenn die entsprechende
get_propertybisher in der Klasse definiert ist, ein Alias namensget_aliasdefiniert; dasselbe geschieht für Setter. Wenn weder der Getter noch der Setter existiert, wird eine Ausnahme ausgelöst.Die Alias-Map wird als Attribut
_alias_mapauf der Klasse gespeichert und kann vonnormalize_kwargsverwendet werden (die davon ausgeht, dass höher priorisierte Aliase zuletzt kommen).
- matplotlib._api.kwarg_error(name, kw)[Quelle]#
Generiert einen TypeError, der bei Funktionsaufrufen mit falschem kwarg ausgelöst werden soll.
- Parameter:
- namestr
Der Name der aufrufenden Funktion.
- kwstr oder Iterable[str]
Entweder der ungültige Schlüsselwortargumentname oder ein Iterable, das ungültige Schlüsselwortargumente liefert (z. B. ein
kwargs-Dictionary).
- matplotlib._api.nargs_error(name, takes, given)[Quelle]#
Generiert einen TypeError, der bei Funktionsaufrufen mit falscher Arität ausgelöst werden soll.
- matplotlib._api.recursive_subclasses(cls)[Quelle]#
Gibt cls sowie direkte und indirekte Unterklassen von cls zurück.
- matplotlib._api.select_matching_signature(funcs, *args, **kwargs)[Quelle]#
Wählt und ruft die Funktion auf, die
*args, **kwargsakzeptiert.funcs ist eine Liste von Funktionen, die keine Ausnahmen auslösen dürfen (außer
TypeError, wenn die übergebenen Argumente nicht ihrer Signatur entsprechen).select_matching_signatureversucht, jede der Funktionen in funcs mit*args, **kwargsaufzurufen (in der Reihenfolge, in der sie angegeben sind). Aufrufe, die mit einemTypeErrorfehlschlagen, werden stillschweigend übersprungen. Sobald ein Aufruf erfolgreich ist, gibtselect_matching_signaturedessen Rückgabewert zurück. Wenn keine Funktion*args, **kwargsakzeptiert, wird der von dem letzten fehlgeschlagenen Aufruf ausgelösteTypeErrorerneut ausgelöst.Aufrufer sollten normalerweise sicherstellen, dass
*args, **kwargsnur eine einzige func binden kann (um Mehrdeutigkeiten zu vermeiden), obwohl dies vonselect_matching_signaturenicht geprüft wird.Anmerkungen
select_matching_signaturedient zur Implementierung von signaturüberladenen Funktionen. Im Allgemeinen sollten solche Funktionen vermieden werden, außer aus Gründen der Abwärtskompatibilität. Ein typisches Nutzungsmuster ist: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
was es my_func erlaubt, entweder mit zwei Parametern (old1 und old2) oder einem einzigen (new) aufgerufen zu werden. Beachten Sie, dass die neue Signatur zuletzt angegeben wird, damit Aufrufer einen
TypeErrorerhalten, der der neuen Signatur entspricht, wenn die übergebenen Argumente keiner Signatur entsprechen.
- matplotlib._api.warn_external(message, category=None)[Quelle]#
Wrapper für
warnings.warn, der stacklevel auf "außerhalb von Matplotlib" setzt.Der ursprüngliche Emittent der Warnung kann durch Patchen dieser Funktion zurück auf
warnings.warnerhalten werden, d.h._api.warn_external = warnings.warn(oderfunctools.partial(warnings.warn, stacklevel=2), etc.).
Hilfsfunktionen zur Deprezierung von Teilen der Matplotlib API.
Diese Dokumentation ist nur für Matplotlib-Entwickler relevant, nicht für Benutzer.
Warnung
Dieses Modul ist nur für den internen Gebrauch bestimmt. Verwenden Sie es nicht in Ihrem eigenen Code. Wir können die API jederzeit ohne Vorwarnung ändern.
- exception matplotlib._api.deprecation.MatplotlibDeprecationWarning[Quelle]#
Basis:
DeprecationWarningEine Klasse zur Ausgabe von Deprezierungswarnungen für Matplotlib-Benutzer.
- matplotlib._api.deprecation.delete_parameter(since, name, func=None, **kwargs)[Quelle]#
Dekulator, der angibt, dass der Parameter name von func depreziert wird.
Die tatsächliche Implementierung von func sollte den name-Parameter in seiner Signatur beibehalten oder ein
**kwargs-Argument akzeptieren (durch das name übergeben würde).Parameter, die nach dem deprezierten Parameter kommen, werden effektiv nur als Schlüsselwortargumente gültig (da sie nicht positionsgebunden übergeben werden können, ohne die Deprezierungswarnung für den deprezierten Parameter auszulösen) und sollten nach Ablauf der Deprezierungsperiode und Entfernung des deprezierten Parameters als solche markiert werden.
Parameter außer since, name und func sind nur als Schlüsselwortargumente gültig und werden an
warn_deprecatedweitergeleitet.Beispiele
@_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)[Quelle]#
Gibt
obj.methodmit einer Deprezierung zurück, wenn diese überschrieben wurde, andernfalls None.- Parameter:
- method
Eine ungebundene Methode, d. h. ein Ausdruck der Form
Class.method_name. Denken Sie daran, dass innerhalb des Körpers einer Methode__class__verwendet werden kann, um auf die gerade definierte Klasse zu verweisen.- obj
Entweder ein Objekt der Klasse, in der method definiert ist, oder eine Unterklasse dieser Klasse.
- allow_emptybool, Standard: False
Ob Überschreibungen durch "leere" Methoden ohne Auslösung einer Warnung erlaubt sind.
- **kwargs
Zusätzliche Parameter, die an
warn_deprecatedübergeben werden, um die Deprezierungswarnung zu generieren; muss mindestens den Schlüssel "since" enthalten.
- class matplotlib._api.deprecation.deprecate_privatize_attribute(*args, **kwargs)[Quelle]#
Bases:
objectHilfe zur Deprezierung des öffentlichen Zugriffs auf ein Attribut (oder eine Methode).
Diese Hilfe sollte nur auf Klassenebene verwendet werden, wie folgt:
class Foo: attr = _deprecate_privatize_attribute(*args, **kwargs)
wobei alle Parameter an
deprecatedweitergeleitet werden. Diese Form machtattrzu einer Eigenschaft, die Lese- und Schreibzugriffe anself._attr(gleicher Name, aber mit führendem Unterstrich) weiterleitet, mit einer Deprezierungswarnung. Beachten Sie, dass der Attributname von dem Namen abgeleitet wird, dem diese Hilfe zugewiesen wird. Diese Hilfe funktioniert auch zur Deprezierung von Methoden.
- matplotlib._api.deprecation.deprecated(since, *, message='', name='', alternative='', pending=False, obj_type=None, addendum='', removal='')[Quelle]#
Dekulator zur Kennzeichnung einer Funktion, einer Klasse oder einer Eigenschaft als depreziert.
Beim Deprezieren einer Klassenmethode, einer statischen Methode oder einer Eigenschaft sollte der
@deprecated-Dekulator unter@classmethodund@staticmethodplatziert werden (d. h.,deprecatedsollte direkt den zugrunde liegenden aufrufbaren deklarieren), aber über@property.Beim Deprezieren einer Klasse
C, die als Basisklasse in einer Mehrfachvererbungshierarchie verwendet werden soll, mussCeine__init__-Methode definieren (wennCstattdessen seine__init__von seiner eigenen Basisklasse geerbt hat, dann würde@deprecateddie__init__-Vererbung stören, wenn es seine eigene (Deprezierungswarnung ausgebende)C.__init__installiert).Die Parameter sind dieselben wie für
warn_deprecated, außer dass obj_type standardmäßig auf 'class' gesetzt wird, wenn eine Klasse dekoriert wird, auf 'attribute', wenn eine Eigenschaft dekoriert wird, und andernfalls auf 'function'.Beispiele
@deprecated('1.4.0') def the_function_to_deprecate(): pass
- matplotlib._api.deprecation.make_keyword_only(since, name, func=None)[Quelle]#
Dekulator, der angibt, dass die positionsgebundene Übergabe des Parameters name (oder eines der folgenden) an func depreziert wird.
Wenn dieser Dekulator auf eine Methode mit einem Pyplot-Wrapper angewendet wird, sollte er der äußerste Dekulator sein, damit
boilerplate.pyauf die ursprüngliche Signatur zugreifen kann.
- matplotlib._api.deprecation.rename_parameter(since, old, new, func=None)[Quelle]#
Dekulator, der angibt, dass der Parameter old von func in new umbenannt wird.
Die tatsächliche Implementierung von func sollte new verwenden, nicht old. Wenn old an func übergeben wird, wird eine Deprezierungswarnung ausgegeben und dessen Wert verwendet, auch wenn new ebenfalls per Schlüsselwort übergeben wird (dies vereinfacht Pyplot-Wrapper-Funktionen, die new immer explizit an die Axes-Methode übergeben). Wenn new ebenfalls übergeben wird, aber positionsgebunden, wird durch die zugrunde liegende Funktion während der Argumentbindung ein TypeError ausgelöst.
Beispiele
@_api.rename_parameter("3.1", "bad_name", "good_name") def func(good_name): ...
- matplotlib._api.deprecation.warn_deprecated(since, *, message='', name='', alternative='', pending=False, obj_type='', addendum='', removal='')[Quelle]#
Zeigt eine standardisierte Deprezierung an.
- Parameter:
- sincestr
Die Version, ab der diese API depreziert wurde.
- messagestr, optional
Überschreibt die Standard-Deprezierungsnachricht. Die Formatierungsoptionen
%(since)s,%(name)s,%(alternative)s,%(obj_type)s,%(addendum)sund%(removal)swerden durch die Werte der jeweiligen an diese Funktion übergebenen Argumente ersetzt.- namestr, optional
Der Name des deprezierten Objekts.
- alternativestr, optional
Eine alternative API, die der Benutzer anstelle der deprezierten API verwenden kann. Die Deprezierungswarnung informiert den Benutzer über diese Alternative, falls sie angegeben ist.
- pendingbool, optional
Wenn True, wird eine PendingDeprecationWarning anstelle einer DeprecationWarning verwendet. Kann nicht zusammen mit removal verwendet werden.
- obj_typestr, optional
Der Typ des deprezierten Objekts.
- addendumstr, optional
Zusätzlicher Text, der direkt an die endgültige Nachricht angehängt wird.
- removalstr, optional
Die erwartete Entfernungsversion. Mit dem Standardwert (leerer String) wird eine Entfernungsversion automatisch aus since berechnet. Auf andere Falsy-Werte setzen, um kein Entfernungsdatum zu planen. Kann nicht zusammen mit pending verwendet werden.
Beispiele
# To warn of the deprecation of "matplotlib.name_of_module" warn_deprecated('1.4.0', name='matplotlib.name_of_module', obj_type='module')