小编kfb*_*kfb的帖子

Github API批准了拉取请求

Github有一项新功能,用户可以批准拉取请求.有谁知道在Github API中哪里可以找到Pull Request批准的统计数据?

github github-api

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

一起使用pytest固定装置和peewee交易

我正在编写一组单元测试,pytest用于一些使用实现的数据库模型peewee。我想使用数据库事务(如果相关,数据库是Postgres数据库),以便在每次测试后回滚任何数据库更改。

我有一种情况,我想在测试中使用两个固定装置,但是要使两个固定装置都通过rollback方法清理其数据库模型,如下所示:

@pytest.fixture
def test_model_a():
    with db.transaction() as txn:  # `db` is my database object
        yield ModelA.create(...)
        txn.rollback()

@pytest.fixture
def test_model_b():
    with db.transaction() as txn:  # `db` is my database object
        yield ModelB.create(...)
        txn.rollback()

def test_models(test_model_a, test_model_b):
    # ...
Run Code Online (Sandbox Code Playgroud)

这行得通,但是阅读文档peewee说明这很容易出错:

如果尝试使用transaction()上下文管理器与peewee嵌套事务,则仅使用最外面的事务。但是,如果嵌套块中发生异常,则可能导致无法预料的行为,因此强烈建议您使用atomic()

但是,atomic()没有提供一种rollback()方法。似乎在显式管理事务时,关键是使用最外部的transaction(),并savepoint()在该事务内使用上下文管理器。但是可以说,在我上面的测试代码中,两个固定装置都处于同一“级别”上,我不知道在哪里创建事务以及在哪里创建保存点。

我唯一的另一个想法是使用对固定装置进行评估的顺序来决定将交易放在何处(这似乎是字母顺序的),但这确实非常脆弱。

有没有办法做到这一点?还是我的测试设计需要重新考虑?

python postgresql transactions pytest peewee

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

致命错误..在非对象上调用成员函数..

我有一个GCM包含send_notification函数的类.在另一个类中Demand.php,我试图使用send_notification函数.所以我有一个构造函数,Demand.php其中指向我的GCM类,如下所示:

 $gcm = new GCM();
Run Code Online (Sandbox Code Playgroud)

这个$gcm变量在这个类中的函数中使用,如下所示:

$result = $gcm->send_notification($registatoin_ids, $message);
Run Code Online (Sandbox Code Playgroud)

这就是我得到错误的地方:

<br />n<b>Fatal error</b>:  Call to a member function send_notification() on a non-object in..
Run Code Online (Sandbox Code Playgroud)

我搜索了这个问题,发现问题$gcm是null,这就是为什么它什么都没有调用.所以,当我把它

$gcm = new GCM();
Run Code Online (Sandbox Code Playgroud)

在我的功能内部,它正常工作.但是没有别的办法吗?我的意思是,如果只是通过$gcm在构造函数中创建Demand.php

以下是我所指的部分:

function __construct() {
    require_once 'GCM.php';
    require_once 'DB_Connect.php';
    require_once 'DB_Functions.php';
    // connecting to database
    $this->db = new DB_Connect();
    $this->db->connect();
    $gcm = new GCM();
    $df = new DB_Functions();

}

// destructor
function __destruct() {

} …
Run Code Online (Sandbox Code Playgroud)

php

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

如何使用Sublime Text完成编辑提交消息?

我将Sublime Text配置为我的Git提交编辑器.当我做git commitSublime打开并且我写了提交消息然后我保存文件并关闭它,但是在git终端它仍然停留在git提交中,并且没有将控制台返回给我!

使用Sublime编辑后如何返回控制台?

git sublimetext

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

使用 GitHub 的 REST API 更新带有多行描述的版本

我正在使用 JSON 更新 GitHub 版本的描述,其中包含该版本的提交列表。

问题是,如果描述有换行符,命令会失败:

Stdout: {
Stdout:   "message": "Problems parsing JSON",
Stdout:   "documentation_url": "https://developer.github.com/v3"
Stdout: }
Run Code Online (Sandbox Code Playgroud)

我让它工作的唯一方法是用空格替换换行符:

def API_JSON = sprintf ('{"body": "%s"}', description.replace('\n',' '));
Run Code Online (Sandbox Code Playgroud)

但是,如果没有换行符,说明很难阅读。有没有办法使用 API/JSON 设置 GitHub 版本的描述并保留换行符?

release github-api

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

如何使用python中的Github api从字符串计算SHA?

我想用 Github API 更新一个文件并将其提交到一个分支中。我在创建提交时遇到了麻烦。SHA 与预期的不匹配。

{
    'documentation_url': 'https://developer.github.com/enterprise/2.7/v3/repos/contents/',
    'message': 'pom.xml does not match de42fdd980f9b8067a2af982de46b8d5547e4597'
}
Run Code Online (Sandbox Code Playgroud)

我执行以下操作:

import hashlib
myfile = "new content of my README"
resulting_file = base64.b64encode(bytes(myfile, "utf-8"))
file_as_str = str(resulting_file.decode('utf-8'))
sha = hashlib.sha1(file_as_str.encode('utf-8')).hexdigest()

url = 'https://someurl.com/someproject/contents/README.md?access_token=' + access_token
data = '{"message": "bla bla", "content": "'+file_as_str+'", "sha": "'+sha+'", "branch": "'+branch+'"}'
response = requests.put(url, data=data)
Run Code Online (Sandbox Code Playgroud)

我不想使用 lib 来执行此操作以更好地了解正在发生的事情。可能 SHA 未正确生成,但我无法确定原因。有人可以帮忙吗?

python git github-api

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