UrlParser: remove _url_updates
commitf6ff496386cbabc60e66389dbab90d4dbc5bfc48
authorxiongchiamiov <xiong.chiamiov@gmail.com>
Tue, 21 Apr 2015 19:41:59 +0000 (21 12:41 -0700)
committerxiongchiamiov <xiong.chiamiov@gmail.com>
Wed, 22 Apr 2015 18:35:14 +0000 (22 11:35 -0700)
treeedba1ff67843fadcf58aea7edae6e25398731a78
parentaba271169d088f6a90fc58ce6905baab43c2f023
UrlParser: remove _url_updates

While investigating one issue I got distracted by another issue with the
newly-written `__eq__` method of `UrlParser`, which in turn got me frustrated
with the `_url_updates` attribute.

You see, after parsing a url into a `UrlParser`, we've been keeping the
original url parameters in `_query_dict`, updates to it in `_url_updates`, and
merging them together on `unparse()`.  At first glance, this seems like a
reasonable thing to do.

However, this was in reality a pretty weak guarantee.  The first time you call
`unparse()`, `_query_dict` was being updated with the contents of
`_url_updates`.  Additionally, it is very easy to accidentally modify the
`_query_dict` object (`unparse()` was probably doing it on accident).

A much better way to have a record of the original query string would be to
keep a separate copy of it in a privatish attribute - as with `_orig_url` and
`_orig_netloc`.  The good news is that I didn't find any place where we do in
fact need that, so I just left it out.  But it would be easy to add in the
future if necessary.

Anyways, now there is just **one** dictionary of query parameters - one place
to look when trying to determine the current state of the parsed url without
turning it back into a string.
r2/r2/lib/utils/utils.py