Re: Python 3 compatibility issue in tools/hook-scripts/mailer/mailer.py

2023-12-09 Thread Yasuhito FUTATSUKI
Hi,

On 2023/12/09 0:04, Daniel Sahlberg wrote:

> Den fre 8 dec. 2023 kl 05:40 skrev Yasuhito FUTATSUKI <
> futat...@yf.bsdclub.org>:



>> Then, how about this patch? It at least mailer-t1.sh passed both
>> on python=python2.7 and on python=python3.9.
>>
>> [[[
>> Fix inconsistency in path argment on Config.which_group()
>>
>> Previously, we call Config.which_group() with path as bytes in
>> Commit.__init__() and with path as str in Lock.__init__() and
>> in PropChange.__init__(), but Config.which_group handled path
>> argment as bytes. To fix it we only use str as path argment on
>> Config.wich_group().
>>
>> * tools/hook-scripts/mailer/mailer.py
>>   (Config.which_groups): Treat path as str.
>>   (Commit.__init__): convert bytes path into str before calling above.
>>
>> Found by: Ruediger Pluem (rpluem {_AT_} apache.org)
>>
>> Index: tools/hook-scripts/mailer/mailer.py
>> ===
>> --- tools/hook-scripts/mailer/mailer.py (revision 1913728)
>> +++ tools/hook-scripts/mailer/mailer.py (working copy)
>> @@ -488,7 +488,7 @@
>>  # collect the set of groups and the unique sets of params for the
>> options
>>  self.groups = { }
>>  for path, change in self.changelist:
>> -  for (group, params) in self.cfg.which_groups(path, log):
>> +  for (group, params) in self.cfg.which_groups(to_str(path), log):
>>  # turn the params into a hashable object and stash it away
>>  param_list = sorted(params.items())
>>  # collect the set of paths belonging to this group
>> @@ -1486,9 +1486,9 @@
>>  "Return the path's associated groups."
>>  groups = []
>>  for group, pattern, exclude_pattern, repos_params, search_logmsg_re
>> in self._group_re:
>> -  match = pattern.match(to_str(path))
>> +  match = pattern.match(path)
>>if match:
>> -if exclude_pattern and exclude_pattern.match(to_str(path)):
>> +if exclude_pattern and exclude_pattern.match(path):
>>continue
>>  params = repos_params.copy()
>>  params.update(match.groupdict())
>> ]]]
>>
>> Cheers,
>> --
>> Yasuhito FUTATSUKI 
>>
> 
> This looks good to me! Thanks for the detailed explaination!

Thank you for the review. However, it turned out that even with this
patch, mailer.py did not work for post-revprop-change hook.
It caused exception like

[[[
svn: E165001: post-revprop-change hook failed (exit code 1) with output:
Traceback (most recent call last):
  File 
"/home/futatuki/tmp/svn-test/mailer_test/repo-smtpoutput/hooks/mailer.py", line 
1593, in 
ret = svn.core.run_app(main, cmd, config_fname, repos_dir,
  File "/usr/local/lib/python3.9/site-packages/svn/core.py", line 324, in 
run_app
return func(application_pool, *args, **kw)
  File 
"/home/futatuki/tmp/svn-test/mailer_test/repo-smtpoutput/hooks/mailer.py", line 
148, in main
return messenger.generate(output, pool)
  File 
"/home/futatuki/tmp/svn-test/mailer_test/repo-smtpoutput/hooks/mailer.py", line 
601, in generate
output.run(self.cfg.get_diff_cmd(group, {
  File 
"/home/futatuki/tmp/svn-test/mailer_test/repo-smtpoutput/hooks/mailer.py", line 
224, in run
self.write_binary(buf)
AttributeError: 'SMTPOutput' object has no attribute 'write_binary'
]]]

On 1.14.x branch, the patch can be applied clearly, and it worked
for post-revprop-change hook.

Cheers,
-- 
Yasuhito FUTATSUKI /


Subversion 1.14.3 up for testing/signing

2023-12-09 Thread Nathan Hartman
The 1.14.3 release artifacts are now available for testing/signing.
Please get the tarballs from
  https://dist.apache.org/repos/dist/dev/subversion
and add your signatures there.

Thanks!