小编Chr*_*oph的帖子

最适合Github API v3的python库

我正在寻找适合我的Github APIv3的python库.

我在GH API文档中找到了一个库(python-github3).在ipython中玩了一两个小时之后,我发现探索/使用它真的不直观.我看了一下,发现有很多人至少试图写这样的图书馆.看起来更有希望(一目了然)是PyGithub另一个python-github3,它显然与第一个不同.

在我连续几天在图书馆之后尝试图书馆之前,我想向SO社区询问该图书馆是否有一个公认的,明确的,明显的选择?

我不喜欢第一个库的是(对我来说)不直观的获取数据的方法 - 你得到的一些属性,一些你得到的方法的返回值,返回值是一些复杂的对象,必须被分页和迭代等等

在这方面,PyGithub乍一看看起来更具吸引力 - 明确地向下钻取对象层次结构,然后到达包含你想要的属性:

for repo in g.get_user().get_repos(): print repo.name

那么,任何珍珠的智慧分享?我知道我没有足够的技能来快速判断图书馆的质量,这就是我转向SO社区的原因.

编辑:fwiw,我最终使用了PyGithub.它运作良好,作者非常愿意接受反馈和错误报告.:-)

python api github

80
推荐指数
3
解决办法
3万
查看次数

如何列出当前暂存或提交的git忽略的文件?

如何获取与.gitignore文件中的规则匹配但过去已暂存或提交的文件的列表?

git

61
推荐指数
2
解决办法
1万
查看次数

我如何在Python中收到Github Webhooks

当您的回购活动有活动时,Github会将收件后挂钩发送到您选择的URL.我想写一个小的 Python命令行/后台(即没有GUI或webapp)应用程序在我的计算机上运行(后来在NAS上),它不断地监听那些传入的POST请求,一旦从Github 收到一个POST ,它就会处理其中包含的JSON信息.我尽快处理json是没问题的.POST可以来自github提供的少量IP; 我计划/希望在我的计算机上指定一个应该发送的端口.

问题是,我不太了解Web技术来处理搜索时发现的大量选项..我使用Django,请求,套接字,Flask,微框架......?我不知道所涉及的大多数术语是什么意思,而且大多数听起来都是因为它们提供的太多/太大而无法解决我的问题 - 我只是不堪重负而且不知道从哪里开始.

我发现的大多数关于POST/GET的教程似乎都关注发送或直接从网站请求数据,而不是继续听取它.

我觉得问题并不是一个非常困难的问题,一旦我知道去哪里/怎么做就会归结为几行.任何人都可以提供指针/教程/示例/示例代码吗?

python post github webhooks web

35
推荐指数
2
解决办法
4万
查看次数

git-apply神秘失败,我该如何解决/修复?

我目前正在尝试对(github)存储库的PR进行代码样式检查,并且我希望向提交者提供补丁,以便他们可以轻松地修复代码样式.为此,我正在拉下他们的PR,在它上面运行我们的解密脚本以修复任何样式错误,并且想要创建一个可以轻松应用的.patch文件.但是,它一直打破一些文件.

我这样做(git版本1.7.10.4 with core.autocrlf=input,core.filemode=false):

$ git checkout pr-branch
$ git log -1 (shows: commit dbb8d3f)
$ git status (nothing to commit, working directory clean)
$ <run the code styler script, which modifies some files>
$ git diff > ../style.patch (so the patch file lands outside the repo)
$ git reset --hard HEAD (to simulate the situation at the submitter's end)
$ git log -1 (shows: commit dbb8d3f)
$ git status (nothing to commit, working directory clean, so …
Run Code Online (Sandbox Code Playgroud)

git patch

33
推荐指数
2
解决办法
5万
查看次数

如果py.test从另一个目录执行它,则coverage.py不包括脚本

我有一个python脚本,它接受命令行参数,使用一些文件.我正在编写成功的测试,py.test将这个脚本放在其脚本中,并执行它subprocess.call.

现在我想分析代码覆盖率coverage.py.覆盖范围,通过使用时pytest-cov的插件(其中有子装卸内置),没有看到/覆盖我的剧本时,它从创建一个临时目录测试名为py.testtmpdir夹具.Coverage 在其所在的目录中调用时会看到我的脚本(并且filename参数指向远程路径).

在这两种情况下,我的测试通过!覆盖范围3.6,pytest-2.3.5,pytest-cov 1.6,全部来自PyPi.

问题:即使在另一个目录中执行脚本,如何识别我的脚本?这是覆盖范围内的错误,还是一些无法做到的事情?如果后者毕竟tmpdir是py.test的股票机制,那会感到惊讶......

最小的例子:

我有一个脚本my_script.py,它只是回应arg_file.txt通过命令行参数提供的文件的内容.在两个不同的测试中,这一次在a中调用tmpdir,一次在脚本的位置调用.两个测试都通过了,但是在tmpdir测试中,我没有得到任何覆盖信息!

测试运行:

~/pytest_experiment$ py.test -s
=================================== test session starts ====================================
platform linux2 -- Python 2.7.4 -- pytest-2.3.5
plugins: cov
collected 2 items 

tests/test_in_scriptdir.py 
set_up: In directory /tmp/pytest-52/test_10
Running in directory /home/cbuchner/pytest_experiment
Command: ./my_script.py /tmp/pytest-52/test_10/arg_file.txt
--Contents of arg_file.txt--

.
tests/test_in_tmpdir.py 
set_up: In directory /tmp/pytest-52/test_11
Running in directory /tmp/pytest-52/test_11 …
Run Code Online (Sandbox Code Playgroud)

python coverage.py pytest

32
推荐指数
2
解决办法
2万
查看次数

如何让py.test识别子目录中的conftest.py?

所以,我只是失去了一天试图找出为什么py.test没有执行我的autouse,会话范围的设置和拆卸灯具.最后我偶然发现了(帽子提示这个SO评论!)插件文档中的这个小小的一点:

请注意,默认情况下,子目录中的conftest.py文件不会在工具启动时加载.

在我的项目中,我将py.test文件(conftest.py和测试文件)放在一个tests/子目录中,这似乎是一个非常标准的设置.如果我py.test在tests目录中运行,一切都正常运行.如果我py.test在项目根目录中运行,测试仍然运行,但设置/拆卸例程永远不会执行.

问题:

  • 什么是使用户能够从项目根目录正确运行测试的"规范"方法?把conftest.py根目录觉得很奇怪我的,因为我觉得所有的测试相关的文件应该留在tests子目录中.
  • 为什么(设计方面)不在conftest.py默认情况下未加载的子目录中?我发现这种行为至少可以说,考虑到默认情况下会发现子目录中的测试,所以在查找conftest文件时似乎也很少有额外的工作量.
  • 最后,如何conftest.py在子目录中加载(即远离默认值)?我在文档中找不到这个.如果可能的话,我想避免使用额外的控制台参数,那么我可以在配置文件中添加任何东西吗?

非常感谢任何洞察力和提示,我觉得当我可以为我的项目编写测试时,我很多时候会浪费/浪费时间来诊断这个问题.:-(

最小的例子:

# content of tests/conftest.py
# adapted from http://pytest.org/latest/example/special.html
import pytest
def tear_down():
    print "\nTEARDOWN after all tests"

@pytest.fixture(scope="session", autouse=True)
def set_up(request):
    print "\nSETUP before all tests"
    request.addfinalizer(tear_down)
Run Code Online (Sandbox Code Playgroud)

测试文件:

# content of tests/test_module.py
class TestClassA:
    def test_1(self):
        print "test A1 called"
    def test_2(self):
        print …
Run Code Online (Sandbox Code Playgroud)

python pytest

18
推荐指数
1
解决办法
9232
查看次数

如何找到git SHA指向分支HEAD?

为了避免在使用(python)脚本检出某个git SHA时不必要的分离HEAD,我想检查一个分支,如果该SHA恰好是分支的当前HEAD.

理想情况下,我想给git一个SHA,如果SHA在分支的当前提示上,则返回分支名称,否则返回错误.

git describe --all --exact-match <SHA> 几乎就是我需要的,只是它主要针对标签,所以如果分支标签指向我的SHA(例如,经常发生在我们的发布分支中),则只给出标签.这没用,因为签出标签会导致分离的HEAD(即使分支指向同一个SHA).

注意,我不想这样做git branch --contains- 我不需要知道哪些分支包含我的提交.

如果没有像git describe只有分支的命令,我知道我可以通过分支交叉检查我的SHA git show-ref.不过,这不是最优雅的解决方案.

我也可以这样做git name-rev --name-only <hash>,但是我必须手动检查~字符的输出,如果有一个git命令在某处做同样的事情,这会感觉不自在.

git

11
推荐指数
2
解决办法
2452
查看次数

如何使pytest等待(手动)用户操作?

我们成功地使用pytest(Python 3)来运行测试套件来测试一些硬件设备(电子设备).对于这些测试的子集,我们需要测试人员更改硬件配置,然后再将其更改.我的方法是使用附加到相关测试的模块级夹具(它们都在一个单独的模块中),有两个input调用:

@pytest.fixture(scope="module")
def disconnect_component():
    input('Disconnect component, then press enter')
    yield  # At this point all the tests with this fixture are run
    input('Connect component again, then press enter')
Run Code Online (Sandbox Code Playgroud)

跑步时,我明白了OSError: reading from stdin while output is captured.我可以通过调用pytest来避免这种情况--capture=no,并且已经确认我的方法有效,这意味着我在问题的测试子集之前获得第一个查询,并且在它们运行之后获得第二个查询.

最大的缺点是,这会停止捕获整个测试套件的stdin/stderr,这是其他一些测试所依赖的.

我也试过这样使用capsys.disabled(docs)

@pytest.fixture(scope="module")
def disconnect_component(capsys):
    with capsys.disabled():
        input('Disconnect component, then press enter')
        yield  # At this point all the tests with this fixture are run
        input('Connect component again, then press enter')
Run Code Online (Sandbox Code Playgroud)

但是当我跑步时,我得到了ScopeMismatch: …

python pytest

9
推荐指数
2
解决办法
2108
查看次数

How to find a resonance frequency of an oscillator?

I am currently trying to simulate acoustic resonators using OpenModelica, and I am wondering how to robustly/nicely calculate their resonance frequency.

As a simplified example (without Media, etc), I have implemented a dual Helmholtz resonator, in essence two volumes (compliances) connected by a pipe (inertance). The real system consists of more components connected together. The oscillation of pressure and volume flow (both complex values) follow a sinusoidal expression, with a resonance angular frequency w. This yields 8 equations for …

acoustics modelica openmodelica

8
推荐指数
1
解决办法
155
查看次数

我在哪里可以找到有关C++ [[deprecated]]属性的信息

我收到了一个描述C++ 11属性的链接[[deprecated]].这听起来非常方便,我想了解更多相关信息 - 编译器支持它,完整的文档等等.

我花了20分钟左右的谷歌搜索,但除了链接的网站,我无法在任何地方找到这个信息.部分地,由于与C++ 11相关的"弃用"一词的其他用法以及搜索引擎无法识别,这很复杂[[.我也没有在各种SO答案中与草案标准中找到这一点.我无权使用完整的付费标准.

有没有人有关于这个[[deprecated]]属性的更多信息?

PS:如果你很好奇,我会用它作为/sf/answers/20666061/的更好的替代品

c++ c++11 c++14

6
推荐指数
2
解决办法
1500
查看次数

bin/activate脚本的"来源"是什么意思?

这是参考我收到的回复,说我需要获取此脚本以激活virtualenv.

不知道这意味着什么,初学者在这里试图找出virtualenv.

bash shell

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

Modelica 参数作为输入

考虑下面的简单包。

package Test

  connector Param
    parameter Real k = 1.5;
  end Param;

  model Component
    input Param p;
    Real x;
  equation 
    der(x) = p.k;
  end Component;

  model System
    Param p;
    Component c;
  equation 
    connect(p, c.p);
  end System;

end Test;
Run Code Online (Sandbox Code Playgroud)

这工作正常,但一旦我System.p.k在模拟中更改,我就会收到以下错误:

abs(p.k-c.p.k) <= 0.0
The following error was detected at time: 0
Parameters in connected connectors must be equal
Error: Failed to start model.
Run Code Online (Sandbox Code Playgroud)

不知何故,变量p.kc.p.k不互相别名。因此,当我只更改 时p.k,会检测到不允许的差异,因为由于由 引起的方程,两者必须相等connect(p, c.p)

如何正确使用参数作为输入并避免这些影响?

modelica

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

标签 统计

python ×5

git ×3

pytest ×3

github ×2

modelica ×2

acoustics ×1

api ×1

bash ×1

c++ ×1

c++11 ×1

c++14 ×1

coverage.py ×1

openmodelica ×1

patch ×1

post ×1

shell ×1

web ×1

webhooks ×1