D974: py3: handle keyword arguments correctly in hgext/patchbomb.py
pulkit (Pulkit Goyal)
phabricator at mercurial-scm.org
Fri Oct 6 00:20:34 UTC 2017
pulkit created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.
REVISION SUMMARY
The keys of keyword arguments must be str on Python 3 which is unicode. This
patch make sure we pass keyword arguments with keys are str everywhere in this
file and access the keys depending on whether they are bytes or str.
This patch uses pycompat.{byteskwargs|strkwargs} and somewhere it also added r''
to prevent transformer from adding a b'' over there.
REPOSITORY
rHG Mercurial
REVISION DETAIL
https://phab.mercurial-scm.org/D974
AFFECTED FILES
hgext/patchbomb.py
CHANGE DETAILS
diff --git a/hgext/patchbomb.py b/hgext/patchbomb.py
--- a/hgext/patchbomb.py
+++ b/hgext/patchbomb.py
@@ -306,7 +306,7 @@
tmpfn = os.path.join(tmpdir, 'bundle')
btype = ui.config('patchbomb', 'bundletype')
if btype:
- opts['type'] = btype
+ opts[r'type'] = btype
try:
commands.bundle(ui, repo, tmpfn, dest, **opts)
return util.readfile(tmpfn)
@@ -326,8 +326,8 @@
the user through the editor.
"""
ui = repo.ui
- if opts.get('desc'):
- body = open(opts.get('desc')).read()
+ if opts.get(r'desc'):
+ body = open(opts.get(r'desc')).read()
else:
ui.write(_('\nWrite the introductory message for the '
'patch series.\n\n'))
@@ -347,21 +347,21 @@
"""
ui = repo.ui
_charsets = mail._charsets(ui)
- subj = (opts.get('subject')
+ subj = (opts.get(r'subject')
or prompt(ui, 'Subject:', 'A bundle for your repository'))
body = _getdescription(repo, '', sender, **opts)
msg = emailmod.MIMEMultipart.MIMEMultipart()
if body:
- msg.attach(mail.mimeencode(ui, body, _charsets, opts.get('test')))
+ msg.attach(mail.mimeencode(ui, body, _charsets, opts.get(r'test')))
datapart = emailmod.MIMEBase.MIMEBase('application', 'x-mercurial-bundle')
datapart.set_payload(bundle)
- bundlename = '%s.hg' % opts.get('bundlename', 'bundle')
+ bundlename = '%s.hg' % opts.get(r'bundlename', 'bundle')
datapart.add_header('Content-Disposition', 'attachment',
filename=bundlename)
emailmod.Encoders.encode_base64(datapart)
msg.attach(datapart)
- msg['Subject'] = mail.headencode(ui, subj, _charsets, opts.get('test'))
+ msg['Subject'] = mail.headencode(ui, subj, _charsets, opts.get(r'test'))
return [(msg, subj, None)]
def _makeintro(repo, sender, revs, patches, **opts):
@@ -372,27 +372,27 @@
_charsets = mail._charsets(ui)
# use the last revision which is likely to be a bookmarked head
- prefix = _formatprefix(ui, repo, revs.last(), opts.get('flag'),
+ prefix = _formatprefix(ui, repo, revs.last(), opts.get(r'flag'),
0, len(patches), numbered=True)
- subj = (opts.get('subject') or
+ subj = (opts.get(r'subject') or
prompt(ui, '(optional) Subject: ', rest=prefix, default=''))
if not subj:
return None # skip intro if the user doesn't bother
subj = prefix + ' ' + subj
body = ''
- if opts.get('diffstat'):
+ if opts.get(r'diffstat'):
# generate a cumulative diffstat of the whole patch series
diffstat = patch.diffstat(sum(patches, []))
body = '\n' + diffstat
else:
diffstat = None
body = _getdescription(repo, body, sender, **opts)
- msg = mail.mimeencode(ui, body, _charsets, opts.get('test'))
+ msg = mail.mimeencode(ui, body, _charsets, opts.get(r'test'))
msg['Subject'] = mail.headencode(ui, subj, _charsets,
- opts.get('test'))
+ opts.get(r'test'))
return (msg, subj, diffstat)
def _getpatchmsgs(repo, sender, revs, patchnames=None, **opts):
@@ -402,6 +402,7 @@
This function returns a list of "email" tuples (subject, content, None).
"""
+ bytesopts = pycompat.byteskwargs(opts)
ui = repo.ui
_charsets = mail._charsets(ui)
patches = list(_getpatches(repo, revs, **opts))
@@ -411,7 +412,7 @@
% len(patches))
# build the intro message, or skip it if the user declines
- if introwanted(ui, opts, len(patches)):
+ if introwanted(ui, bytesopts, len(patches)):
msg = _makeintro(repo, sender, revs, patches, **opts)
if msg:
msgs.append(msg)
@@ -425,8 +426,8 @@
for i, (r, p) in enumerate(zip(revs, patches)):
if patchnames:
name = patchnames[i]
- msg = makepatch(ui, repo, r, p, opts, _charsets, i + 1,
- len(patches), numbered, name)
+ msg = makepatch(ui, repo, r, p, bytesopts, _charsets,
+ i + 1, len(patches), numbered, name)
msgs.append(msg)
return msgs
@@ -567,6 +568,8 @@
Before using this command, you will need to enable email in your
hgrc. See the [email] section in hgrc(5) for details.
'''
+ stropts = opts
+ opts = pycompat.byteskwargs(opts)
_charsets = mail._charsets(ui)
@@ -660,12 +663,12 @@
prompt(ui, 'From', ui.username()))
if bundle:
- bundledata = _getbundle(repo, dest, **opts)
- bundleopts = opts.copy()
- bundleopts.pop('bundle', None) # already processed
+ bundledata = _getbundle(repo, dest, **stropts)
+ bundleopts = stropts.copy()
+ bundleopts.pop(r'bundle', None) # already processed
msgs = _getbundlemsgs(repo, sender, bundledata, **bundleopts)
else:
- msgs = _getpatchmsgs(repo, sender, revs, **opts)
+ msgs = _getpatchmsgs(repo, sender, revs, **stropts)
showaddrs = []
To: pulkit, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list