小编hyl*_*los的帖子

如何在 Cython 中正确包含头文件(setup.py)?

我怎样才能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)

setuptools cython

7
推荐指数
1
解决办法
3477
查看次数

如何使用 sphinx(没有数据的文档字符串)记录常量(模块级变量)?

我想通过它的文档字符串来记录一个常量。我不想让价值出现。如果我有一个很长的列表,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)

python-sphinx

6
推荐指数
0
解决办法
2173
查看次数

如何将ctx(Context)传递给CliRunner?

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)

python python-click

5
推荐指数
1
解决办法
1590
查看次数

标签 统计

cython ×1

python ×1

python-click ×1

python-sphinx ×1

setuptools ×1