Skip to content

Commit

Permalink
devtools: make github-merge.py use py3
Browse files Browse the repository at this point in the history
This makes github-merge.py the first developer tool to go
all Python 3 (for context see #7717).

The changes are straightforward as the script already was
`from __future__ import division,print_function,unicode_literals`.

However urllib2 changed name, and json will only accept unicode data not
bytes.

This retains py2 compatibility for now: not strictly necessary
as it's not used by the build system - but it was easy.
  • Loading branch information
laanwj committed Mar 23, 2016
1 parent 4900641 commit f11c5a3
Showing 1 changed file with 13 additions and 7 deletions.
20 changes: 13 additions & 7 deletions contrib/devtools/github-merge.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#!/usr/bin/env python2
#!/usr/bin/env python3
# Copyright (c) 2016 Bitcoin Core Developers
# Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
Expand All @@ -19,6 +19,11 @@
from sys import stdin,stdout,stderr
import argparse
import subprocess
import json,codecs
try:
from urllib.request import Request,urlopen
except:
from urllib2 import Request,urlopen

# External tools (can be overridden using environment)
GIT = os.getenv('GIT','git')
Expand All @@ -38,7 +43,7 @@ def git_config_get(option, default=None):
Get named configuration option from git repository.
'''
try:
return subprocess.check_output([GIT,'config','--get',option]).rstrip()
return subprocess.check_output([GIT,'config','--get',option]).rstrip().decode('utf-8')
except subprocess.CalledProcessError as e:
return default

Expand All @@ -47,18 +52,19 @@ def retrieve_pr_title(repo,pull):
Retrieve pull request title from github.
Return None if no title can be found, or an error happens.
'''
import urllib2,json
try:
req = urllib2.Request("https://api.github.com/repos/"+repo+"/pulls/"+pull)
result = urllib2.urlopen(req)
result = json.load(result)
return result['title']
req = Request("https://api.github.com/repos/"+repo+"/pulls/"+pull)
result = urlopen(req)
reader = codecs.getreader('utf-8')
obj = json.load(reader(result))
return obj['title']
except Exception as e:
print('Warning: unable to retrieve pull title from github: %s' % e)
return None

def ask_prompt(text):
print(text,end=" ",file=stderr)
stderr.flush()
reply = stdin.readline().rstrip()
print("",file=stderr)
return reply
Expand Down

0 comments on commit f11c5a3

Please sign in to comment.