matplotlib._api
#
Funções auxiliares para gerenciar a API Matplotlib.
Esta documentação é relevante apenas para desenvolvedores Matplotlib, não para usuários.
Aviso
Este módulo e seus submódulos são apenas para uso interno. Não os use em seu próprio código. Podemos alterar a API a qualquer momento sem aviso prévio.
- matplotlib._api. caching_module_getattr ( cls ) [fonte] #
Decorador auxiliar para implementar o nível do módulo
__getattr__
como uma classe.Este decorador deve ser utilizado no nível superior do módulo da seguinte forma:
@caching_module_getattr class __getattr__: # The class *must* be named ``__getattr__``. @property # Only properties are taken into account. def name(self): ...
A
__getattr__
classe será substituída por uma__getattr__
função de modo que tentar acessarname
o módulo resolva a propriedade correspondente (que pode ser decorada, por exemplo_api.deprecated
, para depreciar globals do módulo). As propriedades são todas armazenadas em cache implicitamente. Além disso, um AttributeError adequado é gerado e levantado se não existir nenhuma propriedade com o nome fornecido.
- matplotlib._api. check_getitem ( _mapping , ** kwargs ) [fonte] #
kwargs deve consistir em uma única chave, par de valores. Se a chave estiver em _mapping , retorne
_mapping[value]
; caso contrário, gere um ValueError apropriado.Exemplos
>>> _api.check_getitem({"foo": "bar"}, arg=arg)
- matplotlib._api. check_in_list ( _values , * , _print_supported_values = True , ** kwargs ) [source] #
Para cada chave, par de valor em kwargs , verifique se o valor está em _values .
- Parâmetros :
- _valores iteráveis
Sequência de valores a serem verificados.
- _print_supported_values bool, padrão: True
Se deve imprimir _values ao aumentar ValueError.
- ** ditado dos kwargs
chave, pares de valor como argumentos de palavra-chave para localizar em _values .
- Aumentos :
- ValueError
Se algum valor em kwargs não for encontrado em _values .
Exemplos
>>> _api.check_in_list(["foo", "bar"], arg=arg, other_arg=other_arg)
- matplotlib._api. check_isinstance ( _types , ** kwargs ) [fonte] #
Para cada chave, par de valor em kwargs , verifique se value é uma instância de um dos _types ; caso contrário, gere um TypeError apropriado.
Como um caso especial, uma
None
entrada em _types é tratada como NoneType.Exemplos
>>> _api.check_isinstance((SomeClass, None), arg=arg)
- matplotlib._api. check_shape ( _shape , ** kwargs ) [fonte] #
Para cada chave, par de valor em kwargs , verifique se o valor tem a forma _shape , caso contrário, gere um ValueError apropriado.
Nenhum na forma é tratado como um tamanho "livre" que pode ter qualquer comprimento. por exemplo (Nenhum, 2) -> (N, 2)
Os valores verificados devem ser matrizes numpy.
Exemplos
Para verificar matrizes em forma de (N, 2)
>>> _api.check_shape((None, 2), arg=arg, other_arg=other_arg)
- classe matplotlib._api. classproperty ( fget , fset = Nenhum , fdel = Nenhum , doc = Nenhum ) [fonte] #
Bases:
object
Como
property
, mas também dispara no acesso por meio da classe, e é a classe que é passada como argumento.Exemplos
class C: @classproperty def foo(cls): return cls.__name__ assert C.foo == "C"
- propriedade fget #
- matplotlib._api. define_aliases ( alias_d , cls = Nenhum ) [fonte] #
Decorador de classe para definir aliases de propriedade.
Usar como
@_api.define_aliases({"property": ["alias", ...], ...}) class C: ...
Para cada propriedade, se a correspondente
get_property
estiver definida na classe até o momento,get_alias
será definido um alias nomeado; o mesmo será feito para os setters. Se nem o getter nem o setter existirem, uma exceção será gerada.O mapa de alias é armazenado como o
_alias_map
atributo na classe e pode ser usado pornormalize_kwargs
(o que assume que os aliases de prioridade mais alta vêm por último).
- matplotlib._api. recursive_subclasses ( cls ) [fonte] #
Rendimento cls e subclasses diretas e indiretas de cls .
- matplotlib._api. select_matching_signature ( funcs , * args , ** kwargs ) [fonte] #
Selecione e chame a função que aceita .
*args, **kwargs
funcs é uma lista de funções que não devem gerar nenhuma exceção (exceto
TypeError
se os argumentos passados não corresponderem à sua assinatura).select_matching_signature
tenta chamar cada uma das funções em funcs com (na ordem em que são dadas). As chamadas que falham com um são ignoradas silenciosamente. Assim que uma chamada for bem-sucedida, retorna seu valor de retorno. Se nenhuma função aceitar , então o levantado pela última chamada com falha é levantado novamente.*args, **kwargs
TypeError
select_matching_signature
*args, **kwargs
TypeError
Normalmente, os chamadores devem garantir que any possa vincular apenas uma única função (para evitar qualquer ambiguidade), embora isso não seja verificado por .
*args, **kwargs
select_matching_signature
Notas
select_matching_signature
destina-se a ajudar na implementação de funções com sobrecarga de assinatura. Em geral, essas funções devem ser evitadas, exceto por questões de retrocompatibilidade. Um padrão de uso típico é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
que permite que my_func seja chamado com dois parâmetros ( old1 e old2 ) ou um único ( new ). Observe que a nova assinatura é fornecida por último, para que os chamadores obtenham uma
TypeError
correspondência com a nova assinatura se os argumentos que eles transmitiram não corresponderem a nenhuma assinatura.
- matplotlib._api. warning_external ( mensagem , categoria = Nenhum ) [fonte] #
warnings.warn
wrapper que define stacklevel como "fora do Matplotlib".O emissor original do aviso pode ser obtido corrigindo esta função de volta para
warnings.warn
, ou seja, (ou , etc.)._api.warn_external = warnings.warn
functools.partial(warnings.warn, stacklevel=2)
Funções auxiliares para depreciar partes da API Matplotlib.
Esta documentação é relevante apenas para desenvolvedores Matplotlib, não para usuários.
Aviso
Este módulo é apenas para uso interno. Não o use em seu próprio código. Podemos alterar a API a qualquer momento sem aviso prévio.
- exceção matplotlib._api.deprecation. MatplotlibDeprecationWarning [fonte] #
Bases:
DeprecationWarning
Uma classe para emitir avisos de descontinuação para usuários do Matplotlib.
- matplotlib._api.deprecation. delete_parameter ( since , name , func = None , ** kwargs ) [source] #
Decorador indicando que o nome do parâmetro de func está sendo obsoleto.
A implementação real de func deve manter o parâmetro name em sua assinatura ou aceitar um
**kwargs
argumento (através do qual name seria passado).Os parâmetros que vêm após o parâmetro obsoleto tornam-se efetivamente apenas palavras-chave (já que não podem ser transmitidos posicionalmente sem acionar o DeprecationWarning no parâmetro obsoleto) e devem ser marcados como tal após o período de obsolescência ter passado e o parâmetro obsoleto ser removido.
Parâmetros diferentes de since , name e func são apenas palavras-chave e encaminhados para
warn_deprecated
.Exemplos
@_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 ) [source] #
Retorne
obj.method
com uma depreciação se tiver sido substituído, caso contrário, None.- Parâmetros :
- método
Um método não vinculado, ou seja, uma expressão da forma
Class.method_name
. Lembre-se que dentro do corpo de um método, pode-se sempre usar__class__
para se referir à classe que está sendo definida no momento.- obj
Um objeto da classe onde o método é definido ou uma subclasse dessa classe.
- allow_empty bool, padrão: False
Se deve permitir substituições por métodos "vazios" sem emitir um aviso.
- ** kwargs
Parâmetros adicionais passados para
warn_deprecated
gerar o aviso de descontinuação; deve incluir pelo menos a chave "desde".
- classe matplotlib._api.deprecation. deprecate_privatize_attribute ( * args , ** kwargs ) [fonte] #
Bases:
object
Auxiliar para depreciar o acesso público a um atributo (ou método).
Este helper deve ser utilizado apenas no escopo da classe, conforme abaixo:
class Foo: attr = _deprecate_privatize_attribute(*args, **kwargs)
onde todos os parâmetros são encaminhados para
deprecated
. Este formulário criaattr
uma propriedade que encaminha o acesso de leitura e gravação paraself._attr
(mesmo nome, mas com um sublinhado à esquerda), com um aviso de descontinuação. Observe que o nome do atributo é derivado do nome atribuído a este auxiliar . Este auxiliar também funciona para métodos obsoletos.
- matplotlib._api.deprecation. obsoleto ( desde , * , mensagem = '' , nome = '' , alternativa = '' , pendente = False , obj_type = Nenhum , adendo = '' , remoção = '' ) [source] #
Decorator para marcar uma função, uma classe ou uma propriedade como obsoleta.
Ao depreciar um método de classe, um método estático ou uma propriedade, o
@deprecated
decorador deve ir para baixo@classmethod
e@staticmethod
(ou seja,deprecated
deve decorar diretamente o callable subjacente), mas para cima@property
.Ao depreciar uma classe
C
destinada a ser usada como uma classe base em uma hierarquia de herança múltipla,C
deve -se definir um__init__
método (seC
, em vez disso, for herdado__init__
de sua própria classe base,@deprecated
isso atrapalharia a__init__
herança ao instalar seu próprio (emissão de depreciação)C.__init__
).Os parâmetros são os mesmos de
warn_deprecated
, exceto que o padrão obj_type é 'class' se estiver decorando uma classe, 'attribute' se decorando uma propriedade e 'function' caso contrário.Exemplos
@deprecated('1.4.0') def the_function_to_deprecate(): pass
- matplotlib._api.deprecation. make_keyword_only ( since , name , func = None ) [source] #
Decorador indicando que passar o nome do parâmetro (ou qualquer um dos seguintes) posicionalmente para func está sendo obsoleto.
Quando usado em um método que possui um wrapper pyplot, este deve ser o decorador mais externo, para que
boilerplate.py
possa acessar a assinatura original.
- matplotlib._api.deprecation. rename_parameter ( since , old , new , func = None ) [source] #
Decorador indicando que o parâmetro old de func foi renomeado para new .
A implementação real de func deve usar new , não old . Se old for passado para func , um DeprecationWarning é emitido e seu valor é usado, mesmo que new também seja passado por palavra-chave (isso é para simplificar as funções wrapper pyplot, que sempre passam new explicitamente para o método Axes). Se new também for passado, mas posicionalmente, um TypeError será levantado pela função subjacente durante a ligação do argumento.
Exemplos
@_api.rename_parameter("3.1", "bad_name", "good_name") def func(good_name): ...
- matplotlib._api.deprecation. warning_deprecated ( desde , * , mensagem = '' , nome = '' , alternativa = '' , pendente = False , obj_type = '' , adendo = '' , remoção = '' ) [fonte] #
Exibir uma depreciação padronizada.
- Parâmetros :
- desde str
A versão na qual esta API foi preterida.
- mensagem str, opcional
Substitua a mensagem de descontinuação padrão. Os especificadores de formato
%(since)s
,%(name)s
,%(alternative)s
,%(obj_type)s
,%(addendum)s
e%(removal)s
serão substituídos pelos valores dos respectivos argumentos passados para esta função.- nome str, opcional
O nome do objeto obsoleto.
- str alternativo , opcional
Uma API alternativa que o usuário pode usar no lugar da API obsoleta. O aviso de descontinuação informará o usuário sobre essa alternativa, se fornecida.
- bool pendente , opcional
Se for True, usa um PendingDeprecationWarning em vez de um DeprecationWarning. Não pode ser usado em conjunto com a remoção .
- obj_type str, opcional
O tipo de objeto sendo obsoleto.
- adendo str, opcional
Texto adicional anexado diretamente à mensagem final.
- linha de remoção , opcional
A versão de remoção esperada. Com o padrão (uma string vazia), uma versão de remoção é calculada automaticamente desde . Defina outros valores Falsy para não agendar uma data de remoção. Não pode ser usado junto com pendentes .
Exemplos
# To warn of the deprecation of "matplotlib.name_of_module" warn_deprecated('1.4.0', name='matplotlib.name_of_module', obj_type='module')