------------
Date: 11th Aug 2009
^^^^^^^^^^^^^^^^^^^
Changes since 0.6.x
^^^^^^^^^^^^^^^^^^^
Please Note - This release represents a major overhaul of netaddr. It breaks
backward compatibility with previous releases. See the API documentation for
full details of what is available.
Some highlights of what has changed :-
* Internal module hierarchy has been completely overhauled and redesigned. This
fixes up a lot of inconsistencies and problems with interdependent imports.
All public classes, objects, functions and constants are still published via
the main netaddr module namespace as in previous releases.
* No more AT_* and ST_* 'constants'.
* The Addr base class is gone. This removes the link between EUI and IP
functionality so the library is can now easily be split into distinct units
without many interdependencies between layer 2 and layer 3 functionality.
* The use of custom descriptor classes has been completely discontinued.
* Strategy classes and singleton objects have been replaced with a group of
strategy modules in their own netaddr.strategy namespace. Each IP or EUI
address object now holds a reference to a module rather than a singleton
object.
* Many operations that were previously static class methods are now presented as
functions in the relevant modules. See the API documentation for details.
* The IP and CIDR classes have been replaced with two new classes called
IPAddress and IPNetwork respectively. This name change is important as the IP
part of netaddr has been completed redesigned. The notion of an individual IP
address and an IP network or subnet has been made more obvious. IPAddress
objects are now true scalars and do not evaluate in a list or tuple context.
They also do not support any notion of a netmask or CIDR prefix; this is the
primary function of an IPNetwork object.
* Arbitrary IP ranges and are still supported but a lot of their functionality
has also been exposed via handy functions.
* IP globbing routines (previous known as Wildcards) have been moved into
their own submodule.
* Added a new IPSet class which fully emulates mutable Python sets. This
replaces a lot of half-baked experimental classes found in 0.5.x and 0.6.x
such as IPRangeSet and CIDRGroup. See documentation for details.
* All methods and properties that previously used or supported the 'fmt'
formatting property no longer do so. In all cases, objects are now returned to
correctly support pass through calls without side effects. It is up to the
user to extract data in the right format from the objects IPAddress objects
returned as required.
* Unit tests have been completed re-written to support docstring style tests
bundled into test suites. These are handy as they double up as documentation
being combined with wiki syntax. Implemented code coverage checking using
coverage 3.x.
* nash - a nascent shell like tool for the netaddr library (requires IPython).
* Support for RFC 1924 added ;-)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Specific bug fixes addressed in this release
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
FIXED Issue 13 - http://code.google.com/p/netaddr/issues/detail?id=13
- Searching for a match in a list of CIDR objects
FIXED Issue 26 - http://code.google.com/p/netaddr/issues/detail?id=26
- Refactor out use of isinstance()
FIXED Issue 28 - http://code.google.com/p/netaddr/issues/detail?id=28
- Add support for network block operations
FIXED Issue 34 - http://code.google.com/p/netaddr/issues/detail?id=34
- Addition issue?
--------------