Я документирую свой проект с помощью сфинкса и используя расширение sphinxcontrib.napoleon, которое позволяет мне использовать docstrings в стиле Google.Может ли sphinx игнорировать определенные метки в docstrings python?
Вот функция от моего проекта
def nn_normalized_weight(normweight_fn, qaid2_nns, qreq_):
"""
Weights nearest neighbors using the chosen function
Args:
normweight_fn (func): chosen weight function e.g. lnbnn
qaid2_nns (dict): query descriptor nearest neighbors and distances. qaid -> (qfx2_nnx, qfx2_dist)
qreq_ (QueryRequest): hyper-parameters
Returns:
tuple(dict, dict) : (qaid2_weight, qaid2_selnorms)
Example:
>>> from ibeis.model.hots.nn_weights import *
>>> from ibeis.model.hots import nn_weights
>>> ibs, daid_list, qaid_list, qaid2_nns, qreq_ = nn_weights.testdata_nn_weights()
>>> qaid = qaid_list[0]
>>> #----
>>> normweight_fn = lnbnn_fn
>>> tup1 = nn_weights.nn_normalized_weight(normweight_fn, qaid2_nns, qreq_)
>>> (qaid2_weight1, qaid2_selnorms1) = tup1
>>> weights1 = qaid2_weight1[qaid]
>>> selnorms1 = qaid2_selnorms1[qaid]
>>> #---
>>> # test NN_WEIGHT_FUNC_DICT
>>> #---
>>> nn_normonly_weight = nn_weights.NN_WEIGHT_FUNC_DICT['lnbnn']
>>> tup2 = nn_normonly_weight(qaid2_nns, qreq_)
>>> (qaid2_weight2, qaid2_selnorms2) = tup2
>>> selnorms2 = qaid2_selnorms2[qaid]
>>> weights2 = qaid2_weight2[qaid]
>>> assert np.all(weights1 == weights2)
>>> assert np.all(selnorms1 == selnorms2)
Ignore:
#from ibeis.model.hots import neighbor_index as hsnbrx
#nnindexer = hsnbrx.new_ibeis_nnindexer(ibs, daid_list)
"""
#utool.stash_testdata('qaid2_nns')
#
K = qreq_.qparams.K
Knorm = qreq_.qparams.Knorm
rule = qreq_.qparams.normalizer_rule
# Prealloc output
qaid2_weight = {qaid: None for qaid in six.iterkeys(qaid2_nns)}
qaid2_selnorms = {qaid: None for qaid in six.iterkeys(qaid2_nns)}
# Database feature index to chip index
for qaid in six.iterkeys(qaid2_nns):
(qfx2_idx, qfx2_dist) = qaid2_nns[qaid]
# Apply normalized weights
(qfx2_normweight, qfx2_normmeta) = apply_normweight(
normweight_fn, qaid, qfx2_idx, qfx2_dist, rule, K, Knorm, qreq_)
# Output
qaid2_weight[qaid] = qfx2_normweight
qaid2_selnorms[qaid] = qfx2_normmeta
return (qaid2_weight, qaid2_selnorms)
Когда я анализирую это с сфинкса-apidoc Это правильно разбирает арг, возвращается, и раздел примеров, но затем теги в разделе игнорируемых, а также.
Раздел игнорирования выглядит очень уродливым, так как у него все отделилось. Я хотел бы удалить его. Есть ли способ настроить sphinx игнорировать некоторые теги, например Ignore :?
Я знаю, что я мог бы извлечь его из docstr, но это очень неудобно, поскольку я хотел бы иметь место без ведущих # sybmols, где я могу скопировать и вставить тестовый код в ipython и из него.
Я не знаю ответа на часть Сфинкса вашего вопроса, но так как вы говорите * «как бы я хотел бы иметь место без ведущих сибмолов ...» * Возможно, это обходное решение помогает вы: вы можете поместить строку (любое выражение действительно) самостоятельно в любом месте кода Python, это совершенно верно. Поэтому после docstring вы можете просто вставить еще одну строку (возможно, также многострочную с тремя кавычками), содержащую ваш блок игнорирования. Вам нужно будет проверить, нужно ли разделять две строки (из-за [неявной конкатенации литерала строки] (http://stackoverflow.com/a/26433185/1599111)). –
@LukasGraf, который является моим текущим обходным путем, кажется, работает, но я удивлен тем, что, похоже, не хватает функции в Sphinx. Я желаю добавить функциональность самостоятельно, если кто-то указывает мне на начальную точку. – Erotemic