(original) (raw)



On Mon, Apr 13, 2009 at 12:56 AM, Antoine Pitrou <solipsis@pitrou.net> wrote:

Mart S�mermaa <mrts.pydev <at> gmail.com> writes:
>
> Proposal: add add\_query\_params() for appending query parameters to an URL to
urllib.parse and urlparse.

Is there anything to /remove/ a query parameter?

I'd say this is outside the scope of add\_query\_params().

As for the duplicate handling, I've implemented a threefold strategy that should address all use cases raised before:

�def add\_query\_params(\*args, \*\*kwargs):
��� """
��� add\_query\_parms(url, \[allow\_dups, \[args\_dict, \[separator\]\]\], \*\*kwargs)

��� Appends query parameters to an URL and returns the result.

��� :param url: the URL to update, a string.
��� :param allow\_dups: if
������� \* True: plainly append new parameters, allowing all duplicates
��������� (default),
������� \* False: disallow duplicates in values and regroup keys so that
��������� different values for the same key are adjacent,
������� \* None: disallow duplicates in keys -- each key can have a single
��������� value and later values override the value (like dict.update()).
��� :param args\_dict: optional dictionary of parameters, default is {}.
��� :param separator: either ';' or '&', the separator between key-value
������� pairs, default is '&'.
��� :param kwargs: parameters as keyword arguments.

��� :return: original URL with updated query parameters or the original URL
������� unchanged if no parameters given.
��� """

The commit is

http://github.com/mrts/qparams/blob/b9bdbec46bf919d142ff63e6b2b822b5d57b6f89/qparams.py

extensive description of the behaviour is in the doctests.