- Added ignore_referral_errors parameter to lookup().
- Fixed ipaddress import conflicts with alternate ipaddress module.
- Tuned import exception in ipwhois.utils.
- Fixed retry handling in get_whois().
- Fixed CIDR regex parsing bug where some nets were excluded from the results.
- Fixed order on REST email fields
- Fixed setup error for initial install when dependencies don't exist.
- Added RWhois support.
- Added server and port parameters to IPWhois.get_whois().
- Added unique_addresses() to ipwhois.utils and unit tests.
- Added some unit tests to test_lookup().
- Replaced dict.copy() with copy.deepcopy(dict).
- Fixed bug in abuse emails parsing.
- Added handle and range values to returned nets dictionary.
- Fixed multi-line field parsing (Issue #36).
- Added unique_everseen() to ipwhois.utils to fix multi-line field order.
- Re-added support for RIPE RWS now that their API is fixed.
- Fixed encoding error in IPWhois.get_whois().
- Added ASNRegistryError to handle unknown ASN registry return values.
- Added ASN registry lookup third tier fallback to ARIN.
- Fixed variable naming to avoid shadows built-in confusion.
- Fixed some type errors: Expected type 'str', got 'dict[str, dict]' instead.
- Fixed RIPE RWS links, since they changed their API.
- Temporarily removed RIPE RWS functionality until they fix their API.
- Removed RADB fallback, since RIPE removed it.
- Added Python 2.6+ support.
- The country field in net dicts is now forced uppercase.
- Added APNIC RWS support for IPWhois.lookup_rws().
- Fixed issue in IPWhois.lookup_rws() for radb-grs fallback.
- Fixed special character issue in countries XML file (Issue #23).
- Moved regex string literal declarations to NIC_WHOIS dict.
- Moved RWS parsing to own private functions.
- Moved base_net dict to global BASE_NET.
- More granular exception handling in lookup functions.
- Fixed email parsing for ARIN and RIPE RWS.
- Changed some 'if key in dict' statements to try/except for slight performance increase in lookup functions.
- Removed generic exception handling (returned blank dict) on get_countries().
- More PEP 8 reformatting.
- Minor docstring modifications.
- Added some unit tests to test_lookup() and test_lookup_rws().
- Reformatting for PEP 8 compliance.
- Added LACNIC RWS (Beta v2) support for IPWhois.lookup_rws().
- Added support for network registered and updated time stamps (keys: created, updated). Value in ISO 8601 format.
- Added value assertion to test_utils.py.
- Fixed IPWhois.lookup() handling of processed values. If processing throws an exception, discard the value and not the net dictionary.
- Fixed get_countries() to work with frozen executables.
- Added dnspython3 rdtypes import to fix issue with frozen executables.
- Moved iso_3166-1_list_en.xml to /data.
- Added retry_count to IPWhois.lookup() and IPWhois.lookup_rws().
- Fixed LACNIC CIDR validation on IPWhois.lookup().
- Fixed bug in IPWhois.get_whois() for query rate limiting. This was discovered via testing multiprocessing with 8+ processes running asynchronously.
- Added support for emails (keys: abuse_emails, tech_emails, misc_emails).
- Changed regex to use group naming for more complex searching.
- Added some missing exception handling in lookup_rws().
- Added exceptions to import in __init__.py.
- Added IPWhois.__repr__().
- Moved exceptions to get_*() functions.
- Added exception HostLookupError.
- Various optimizations.
- Added some unit tests.
- Removed set_proxy() in favor of having the user provide their own urllib.request.OpenerDirector instance as a parameter to IPWhois().
- Restructured package in favor of modularity. get_countries() is now located in ipwhois.utils.
- Added exception WhoisLookupError for IPWhois.lookup() and IPWhois.lookup_rws().
- Fixed bug in set_proxy().
- Removed ARIN top level network entries from return dictionary of IPWhois.lookup_rws().
- Fixed bug in ARIN RWS parsing when only one network.
- Added IPWhois.get_host() to resolve hostname information.
- Added address and postal_code fields to parsed results.
- Normalized single/double quote use.
- Added set_proxy() function for proxy support in Whois-RWS queries.
- Added IPWhois.lookup_rws() function for Whois-RWS queries.
- Added validity checks for the asn_registry value due to a bug in the Team Cymru ASN lookup over night.
- Added timeout argument to IPWhois(). This is the default timeout in seconds for socket connections.
- Fixed decoding issue in IPWhois.get_whois().
- Added exception handling with query retry support for socket errors, timeouts, connection resets.
- Moved ASN queries to their own functions (IPWhois.get_asn_dns() and IPWhois.get_asn_whois())
- Moved whois query to its own function (IPWhois.get_whois())
- Country codes are now forced as upper case in the return dictionary.
- Fixed file path for get_countries().
- Fixed variable names that conflicted with builtins.
- Added content to README.
- Moved CHANGES.txt to CHANGES.rst and added to setup.py.
- Download URL now points to GitHub master tarball.
- Fixed README issue.
- Initial release.