Closed andresdelfino closed 5 years ago
Doc says:
"If parser_list is provided, it must be a *sequence* of strings which name modules that have a function named create_parser()"
but code concatenas parser_list with an existing list:
for parser_name in parser_list + default_parser_list:
Fix this by stating parser_list must be a specific kind of sequence, that is, a list.
I'm just going to presume this issue has been around a long time, but I think that's a pretty safe presumption.
Accepting a general sequence instead of only a list would reasonable, and I'd support a fix that caused the code to accept a general sequence (or any iterable) by calling list() on the passed-in value, starting with 3.8.
The patch provided looks good for versions in maintenance. (It would also be fine for 3.8 if there's no interest in generalizing the code to accept arbitrary iterables).
I think it makes sense for make_parser to accept any iterable too. I'll update the PR when I have the testcase ready.
It probably makes more sense to keep that PR for the maintenance branches, and create a new branch / PR to land on master.
Admittedly, my Git-fu is not strong, but since the PR was opened against master, and given that the PR as is won't be merged to master, can it still be "backported" to 3.7, 3.6, and 2.7?
Shouldn't I update the PR so it can be merged to master (that won't be backported), and then open a new PR against 3.7 that will be backported to 3.6 and 2.7?
The existing PR can be re-targeted to merge to a maintenance branch (I'd be inclined to merge manually, myself, but will have to check the current devguide to make sure that's still allowed).
A new PR can be made for the non-documentation fix for master.
My thought is that a PR is more about the patch than about the workflow; a different patch can be handled in a separate PR, and review & discussion are used to determine which PR should be applied where.
New changeset 1487b651caa62647f8f8c9e8432e475e3566130c by Tal Einat (Andrés Delfino) in branch '3.7': [3.7] bpo-34789: xml.sax.make_parser expects a list not just any sequence (GH-9542) https://github.com/python/cpython/commit/1487b651caa62647f8f8c9e8432e475e3566130c
New changeset 38d7620baab96c702243cfa193377a38888ec10f by Miss Islington (bot) in branch '3.6': [3.7] bpo-34789: xml.sax.make_parser expects a list not just any sequence (GH-9542) https://github.com/python/cpython/commit/38d7620baab96c702243cfa193377a38888ec10f
New changeset 9dcb517f8ebba16a46ec2a6a97bb3e4a97daeae9 by Miss Islington (bot) in branch '2.7': [3.7] bpo-34789: xml.sax.make_parser expects a list not just any sequence (GH-9542) https://github.com/python/cpython/commit/9dcb517f8ebba16a46ec2a6a97bb3e4a97daeae9
New changeset a6dc531063efe3a8d47ff4639729060c72a3688c by Tal Einat (Andrés Delfino) in branch 'master': bpo-34789: make xml.sax.make_parser accept iterables of all types (GH-9576) https://github.com/python/cpython/commit/a6dc531063efe3a8d47ff4639729060c72a3688c
Thanks for reporting the issue and making the PRs, Andrés!
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields: ```python assignee = None closed_at =
created_at =
labels = ['expert-XML', '3.8', 'type-feature', '3.7']
title = 'Make xml.sax.make_parser accept iterables'
updated_at =
user = 'https://github.com/andresdelfino'
```
bugs.python.org fields:
```python
activity =
actor = 'taleinat'
assignee = 'docs@python'
closed = True
closed_date =
closer = 'taleinat'
components = ['XML']
creation =
creator = 'adelfino'
dependencies = []
files = []
hgrepos = []
issue_num = 34789
keywords = ['patch']
message_count = 11.0
messages = ['326261', '326262', '326279', '326280', '326283', '326285', '328544', '328545', '328546', '328555', '328556']
nosy_count = 5.0
nosy_names = ['fdrake', 'taleinat', 'docs@python', 'adelfino', 'miss-islington']
pr_nums = ['9542', '9576', '10123', '10124']
priority = 'normal'
resolution = 'fixed'
stage = 'resolved'
status = 'closed'
superseder = None
type = 'enhancement'
url = 'https://bugs.python.org/issue34789'
versions = ['Python 2.7', 'Python 3.6', 'Python 3.7', 'Python 3.8']
```