我怎样才能my_math/clog.h正确地包含在包裹中my_math以让套件tox通过py.test?
项目文件结构:
my_math/__init__.py
my_math/clog.h
my_math/clog.pxd
my_math/integrate.pyx
setup.py
tests/__init__.py
tests/test_log.py
tox.ini
Run Code Online (Sandbox Code Playgroud)
my_math/clog.h
my_math/__init__.py
my_math/clog.h
my_math/clog.pxd
my_math/integrate.pyx
setup.py
tests/__init__.py
tests/test_log.py
tox.ini
Run Code Online (Sandbox Code Playgroud)
my_math/integrate.pyx
#include <python.h>
#include <math.h>
#if PY_VERSION_HEX < 0x3050000 && (defined(_WIN32) || defined(_WIN64))
// Calculates log2 of number
double log2(double n);
{
// log(n)/log(2) is log2
double log_2 = 0.693147180559945309417232121458176568075500134360255254120680;
return log(n) / log_2;
}
#endif
Run Code Online (Sandbox Code Playgroud)
安装程序.py
def extern from "clog.h":
double log2(double)
def call_log2(n):
return log2(n)
Run Code Online (Sandbox Code Playgroud)
测试/test_log.py
import os
from setuptools import …Run Code Online (Sandbox Code Playgroud) 我想通过它的文档字符串来记录一个常量。我不想让价值出现。如果我有一个很长的列表,Sphinx 会将它完全包含在我不想要的列表中。如果只显示摘录(带有省略号或其他任何内容),对我来说就可以了。但不是数千个列表元素。
module_level_variable2 = 98765
"""int: Module level variable documented inline.
The docstring may span multiple lines. The type may optionally be specified
on the first line, separated by a colon.
"""
Run Code Online (Sandbox Code Playgroud)
我尝试了以下方法:
.. autoclass:: module_level_variable2
Run Code Online (Sandbox Code Playgroud)
根本不显示文档字符串。
.. autodata:: module_level_variable2
Run Code Online (Sandbox Code Playgroud)
确实显示文档字符串和数据。
.. automethod:: module_level_variable2
Run Code Online (Sandbox Code Playgroud)
和 .. 自动属性:: module_level_variable2
不要在文档中显示任何内容(甚至不显示变量的名称)。
.. autofunction:: module_level_variable2
Run Code Online (Sandbox Code Playgroud)
只显示文档字符串。这几乎就是我想要的。但是,它通过向其添加括号将常量视为 function() - 这是错误的(为什么在make html!
我浏览了http://www.sphinx-doc.org/en/1.4.8/ext/autodoc.html但找不到告诉.. autodata::不显示数据本身的开关(但仅显示文档字符串)。
解决方案
.. autodata:: module_level_variable2
:annotation:
Run Code Online (Sandbox Code Playgroud) CliRunner列出没有参数在其文档中提供上下文.
以下内容应该是最低工作示例.真正的问题有点不同.可以通过将单击修饰函数移动到其自己的测试覆盖功能中来解决.然后点击功能几乎无用.
import click
from click.testing import CliRunner
class Config():
def __init__(self):
self.value = 651
@click.command()
@click.pass_context
def print_numberinfo(ctx):
if not hasattr(ctx.obj, 'value'):
ctx.obj = Config()
click.echo(ctx.obj.value)
def test_print_numberinfo():
ctx = click.Context(print_numberinfo, obj = Config())
ctx.obj.value = 777
runner = CliRunner()
# how do I pass ctx to runner.invoke?
result = runner.invoke(print_numberinfo)
assert result.output == str(ctx.obj.value) + '\n'
Run Code Online (Sandbox Code Playgroud)