New submission from Mart Sõmermaa <m...@mrts.pri.ee>: Proposal --------
Add update_query_params() for updating or adding URL query parameters to urllib.parse and urlparse. Discussion ---------- Python-dev: http://mail.python.org/pipermail/python-dev/2009-April/088675.html Previously in Python-ideas: http://mail.python.org/pipermail/python-ideas/2009-March/003728.html The consensus seems to be that this is needed, opinions on how the API should look like vary. Behaviour --------- The following features were requested by different people: - ability to order parameters (by passing them in a ordered data structure) - "plain" behaviour that would keep the existing parameters as is and add passed in parameters, retaining duplicates - behaviour that removes duplicated values - dict.update()-like behaviour that would not allow duplicate keys (updating values for existing keys) - removal of existing parameters Implementation -------------- http://github.com/mrts/qparams/tree/master in particular http://github.com/mrts/qparams/blob/bf1b29ad46f9d848d5609de6de0bfac1200da310/qparams.py See the docstring in qparams.py for Currently, positional arguments are used to avoid name collisions in keyword arguments that were initially devised as the default, easy way to pass parameters. As the function signature has grown quite complex, this looks suboptimal. Also, the general sentiment was that the current three-valued logic for choosing key update strategy is also suboptimal. Instead, the strategy should be passed via a function and the strategies listed above should be provided in the module. Finally, removing keys is currently missing. It was proposed that passing foo=None would remove the parameter foo. Currently, None is used to mark parameters that do not take values, another marker is needed for that if removal is to be marked with None. Following on Nick Coghlan's suggestion in http://mail.python.org/pipermail/python-dev/2009-April/088866.html and considering the preference for a strategy function, the API could look as follows: def add_query_params(url, params, strategy=allow_dulicates, sep='&') I.e. keyword arguments would not be supported and the "default" use would be as follows: >>> add_query_params('foo', dict(bar='baz')) 'foo?bar=baz' ---------- components: Library (Lib) messages: 86802 nosy: mrts severity: normal status: open title: Add a function for updating URL query parameters type: feature request versions: Python 2.7, Python 3.1 _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue5877> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com