我正在寻找适合我的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.它运作良好,作者非常愿意接受反馈和错误报告.:-)
当您的回购活动有活动时,Github会将收件后挂钩发送到您选择的URL.我想写一个小的 Python命令行/后台(即没有GUI或webapp)应用程序在我的计算机上运行(后来在NAS上),它不断地监听那些传入的POST请求,一旦从Github 收到一个POST ,它就会处理其中包含的JSON信息.我尽快处理json是没问题的.POST可以来自github提供的少量IP; 我计划/希望在我的计算机上指定一个应该发送的端口.
问题是,我不太了解Web技术来处理搜索时发现的大量选项..我使用Django,请求,套接字,Flask,微框架......?我不知道所涉及的大多数术语是什么意思,而且大多数听起来都是因为它们提供的太多/太大而无法解决我的问题 - 我只是不堪重负而且不知道从哪里开始.
我发现的大多数关于POST/GET的教程似乎都关注发送或直接从网站请求数据,而不是继续听取它.
我觉得问题并不是一个非常困难的问题,一旦我知道去哪里/怎么做就会归结为几行.任何人都可以提供指针/教程/示例/示例代码吗?
我目前正在尝试对(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) 我有一个python脚本,它接受命令行参数,使用一些文件.我正在编写成功的测试,py.test
将这个脚本放在其脚本中,并执行它subprocess.call
.
现在我想分析代码覆盖率coverage.py
.覆盖范围,通过使用时pytest-cov
的插件(其中有子装卸内置),没有看到/覆盖我的剧本时,它从创建一个临时目录测试名为py.test
的tmpdir
夹具.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) 所以,我只是失去了一天试图找出为什么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)脚本检出某个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命令在某处做同样的事情,这会感觉不自在.
我们成功地使用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: …
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 …
我收到了一个描述C++ 11属性的链接[[deprecated]]
.这听起来非常方便,我想了解更多相关信息 - 编译器支持它,完整的文档等等.
我花了20分钟左右的谷歌搜索,但除了链接的网站,我无法在任何地方找到这个信息.部分地,由于与C++ 11相关的"弃用"一词的其他用法以及搜索引擎无法识别,这很复杂[[
.我也没有在各种SO答案中与草案标准中找到这一点.我无权使用完整的付费标准.
有没有人有关于这个[[deprecated]]
属性的更多信息?
PS:如果你很好奇,我会用它作为/sf/answers/20666061/的更好的替代品
这是参考我收到的回复,说我需要获取此脚本以激活virtualenv.
不知道这意味着什么,初学者在这里试图找出virtualenv.
考虑下面的简单包。
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.k
和c.p.k
不互相别名。因此,当我只更改 时p.k
,会检测到不允许的差异,因为由于由 引起的方程,两者必须相等connect(p, c.p)
。
如何正确使用参数作为输入并避免这些影响?