1.5.51  20211101 New release with modified copyrights
1.5.50  20211008 NOTE - MODIFIED RELEASE. Update copyrights, fix Github issue #208.  Also see https://stackoverflow.com/q/21064581/667301 as an alternative to deleting the original pypi package data
1.5.49  20211008 Fix typos and syntax
1.5.48  20211007 Fix insert_before() and insert_after(), update Copyrights
1.5.47  20210915 Expose a proxy function to call ipaddress.collapse_addresses()
1.5.46  20210717 More logging work... prepare for debugging overhaul.
1.5.45  20210717 Refine error logging in setup.py
1.5.44  20210717 Fix get_metadata() returned value in setup.py
1.5.37  20210717 Rework version.json to metadata.json
1.5.36  20210711 Rework git remote (i.e. origin) logic
1.5.35  20210711 Fix git tags in Makefile.    Deprecate py2.7 support
1.5.30  20210301 Add a helper-function: as_text_list(); improve performance of .delete()
1.5.29  20210128 Fix __int__() and __index__() on IPv4Obj() and IPv6Obj()
1.5.28  20210123 Enhance ccp_util.CiscoRange() to parse a wider variety of string inputs
1.5.27  20210123 Remove slow code from ccp_util.CiscoRange()
1.5.26  20210123 Make ccp_util.L4Object().__repr__() more friendly
1.5.25  20210123 Fix Github Issue #195, merge PR #194, fix multiple unreported bugs in ccp_util.L4Object()
1.5.24  20210106 Fix Github Issue #178
1.5.23  20210105 Prevent find_object_branches() from using None
1.5.22  20201127 Fix Github issue #186 (replace variables named input)
1.5.21  20201127 Fix Github issue #187
1.5.20  20201127 Fix Github issue #185
1.5.19  20200722 Add __ne__() support to IPv4Obj and IPv6Obj
1.5.18  20200721 Fix Github issue #180 - IPv4Obj() and IPv6Obj() cannot use logical compare ops with certain Python objects
1.5.17  20200711 Fix Python 2.7 packaging
1.5.7   20200711 Revise IPv4Obj & IPv6Obj __lt__(), __gt__(), and __contains__() methods (impacts sorting behavior); reformatted documentation to latest numpydoc format.  Add version number as json data instead of raw text...
1.5.6   20200627 Improve find_object_branches() speed; reformat with black
1.5.5   20200612 Beta-test new function: find_object_branches()
1.5.4   20200412 Modify IPv4Obj().__add__() and IPv6Obj().__add__() (and __sub__()) methods return IPv4Obj()/IPv6Obj() objects.  Add support for int(), bin() and hex() on the IPv4Obj() and IPv6Obj() 
1.5.3   20200412 Fix IPv6Obj().packed and IPv6Obj().exploded; add IPv4Obj().packed and IPv4Obj().exploded
1.5.2   20200412 Add __add__() and __sub__() to IPv4Obj() and IPv6Obj(); remove use of IPv6Obj().broadcast in IPv6Obj().__contains__()
1.5.1   20200223 Remove embedded junos debugging
1.5.0   20200223 Complete rewrite of junos parser (fix Github issue #70); deprecate support for Python 3.4
1.4.11  20191205 Github issue #170 Explicitly close() open filehandles
1.4.10  20191125 Integrate Github issue #169, add support for parsing pathlib.Path objects which contain a configuration
1.4.9   20191122 Add .as_cidr_net and .as_cidr_addr on IPv4Obj and IPv6Obj
1.4.8   20191121 Merge Github PR #168; rename in_portchannel and is_portchannel
1.4.7   20190910 Add support for NXOS vrf with dhcp helper-address
1.4.6   20190910 Add support for NXOS dhcp helper-address (w/ factory=True)
1.4.5   20190907 Add support for NXOS in find_interface_objects()
1.4.4   20190907 Fix Github issue #162 and Github issue #164
1.4.3   20190814 Fix Github issue #160; Add parser for various NXOS features
1.4.2   20190728 Fix Github issue #141; NOTE - This will break parsing helper-addresses under factory=True.  If you use this feature, please migrate your scripts to the new format
1.4.1   20190728 Implement re_search_children() directly on the CiscoConfParse() object
1.4.0   20190727 Fix Github issue #158, *KEYWORD CHANGE WARNING:* some methods formrely used a keyword called 'all_children'.  The new syntax is 'recurse' (ref: Github issue #159)
1.3.43  20190705 Attempt to fix Github issue #154
1.3.42  20190627 Fix Github issue #153
1.3.41  20190627 [RELEASE BROKEN] HSRP timers now return a float (used to return int).  NXOS support for HSRP (Github issue #152)
1.3.40  20190620 
1.3.39  20190527 Allow re_match_iter_typed() to use default=True
1.3.38  20190527 Add CiscoConfParse().re_match_iter_typed()
1.3.37  20190512 Take a step further towards full Python 3 compat (Github issue #98)
1.3.36  20190422 Refine Junos parsing (Github issue #142)
1.3.35  20190420 Refine IOS macro parsing (Github issue #144)
1.3.34  20190419 Add support for IOS macros (Github issue #143)
1.3.33  20190407 Merge Github PR #140 (delete_lines() bug)
1.3.32  20190317 Fix Github issue #135
1.3.31  20190316 Fix Github issues #131, 132, 133, 134
1.3.30  20190218 Fix bugs related to Python3 (Github issue #117)
1.3.29  20190207 Add IP helper-address parsing in models_cisco.py
1.3.28  20190206 Revert universal wheel packages (universal=0)
1.3.27  20190126 Build universal wheel packages
1.3.26  20190126 Build improvements - ref Github issue #127, #128
1.3.25  20190123 Another swing at Github issue #127
1.3.24  20190123 Rollback fix for Github issue #127
1.3.23  20190123 Attempt to fix Github issue #127
1.3.22  20181216 Fix Github issue #124-126 and Github issue #110
1.3.21  20181216 Fix Github issue #121 and Github issue #123
1.3.20  20180702 Fix Github issue #114 (Py3.5 requires different open() syntax)
1.3.19  20180623 Fix Github issue #111 (banner parsing broken in some cases)
1.3.18  20180609 Add * to MANIFEST.in
1.3.17  20180608 Attempt to resolve Github issue #106
1.3.16  20180601 Add dns_query() zone transfer as text
1.3.15  20180421 Distrbution change
1.3.14  20180421 Attempt to fix unit tests
1.3.13  20180421 Fix Github issue #103, Python3 ccp_util imports 
1.3.12  20180416 Upgrade comparison operations of IPv4Obj and IPv6Obj
1.3.11  20180331 Fix Github issue #101
1.3.10  20180304 Fix various bugs in dns_query(); add a query duration to the DNSResponse() object
1.3.9   20180303 Build dns_query() responses on a universal DNSResponse() object
1.3.8   20180303 Fix Python3 packaging, Github issue #98
1.3.7   20180303 [RELEASE BROKEN and removed from pypi]
1.3.6   20180213 [RELEASE BROKEN and removed from pypi]
1.3.5   20180213 [RELEASE BROKEN and removed from pypi]
1.3.4   20180213 [RELEASE BROKEN and removed from pypi]
1.3.3   20180213 [RELEASE BROKEN and removed from pypi]
1.3.2   20180210 Add all_children flag to re_match_iter_typed() [RELEASE BROKEN]
1.3.1   20180129 Raise DynamicErrorException on ipv4 dhcp interfaces
1.2.55  20180125 Add manual speed and duplex to models_nxos.py
1.2.54  20180125 Add manual speed and duplex to models_cisco.py
1.2.53  20180125 Attempt to fix Github issue #49
1.2.52  20180125 Alpha-quality nxos factory parser (ref: Github issue #71)
1.2.51  20180124 Fix packaging problem
1.2.50  20180124 Throw a ValueError on ipv4 dhcp factory interfaces
1.2.49  20170723 Fix doctest breakage
1.2.48  20170723 Fix Github issue #82
1.2.47  20170305 Fix Github issue #75, Github issue #76, Github issue #77
1.2.46  20170109 Normalize zero-padded IP address string inputs to IPv4Obj()
1.2.45  20170105 Add zero-padded ccp_util.IPv4Obj() strings, improve IPv4Obj() and IPv6Obj()
1.2.44  20161125 Improve parsing speed for the factory=True parser
1.2.43  20161125 Fix Github issue #63, add a new function: find_objects_w_all_children()
1.2.42  20161124 Fix Github issue #62, add a new object called CiscoRange()
1.2.41  20161124 Fix Github issue #51, Github issue #53, Github issue #57, Githbu issue #64, Github issue #65
1.2.40  20160430 Fix Github issue #44 (Could not parse 'ipv6 router ospf 6').  Modify default value for access_vlan.  Add new is_portchannel property.  Update copyright dates.  Remove OSX from test matrix
1.2.39  20151027 Fix TravisCI breakage
1.2.38  20151027 Integrate PR #48, which fixes github issue #47
1.2.37  20150706 Fix Github issue #37 (sync_diff() includes double negatives)
1.2.36  20150706 Add dns6_lookup(), add tutorial
1.2.35  20150703 Fix issue with ipv6 route parsing
1.2.34  20150703 Add support for ipv6 static routes in models_cisco (Github issue #34)
1.2.33  20150702 Expand coverage of icmp and standard ACLs in models_asa
1.2.32  20150701 Add find_objects_dna()
1.2.31  20150629 Fix Github issue #39 (not parsing Junos comments correctly)
1.2.30  20150627 Enhance banner delimiter parsing
1.2.29  20150627 Add dns_lookup and reverse_dns_lookup in ccp_util
1.2.28  20150627 Fix build problem
1.2.27  20150627 termcolor -> colorama
1.2.27  20150627 Forgot to check in some updates...
1.2.26  20150627 Update debugging code
1.2.25  20150623 Modest ASAObjGroupNetwork speed improvements
1.2.24  20150622 Fix Github issue #41, improve IPv4Obj docs
1.2.23  20150619 Improve IPv4Obj parsing speed
1.2.22  20150618 Improve ASAAclLine Log level parsing support
1.2.21  20150616 Initial support for ASAAclLine parsing, partial commit for Github Issue #29
1.2.20  20150611 Increase ASA config parse speed (when parsed with factory=True)
1.2.19  20150418 Fix Github issue #33 - Unicode path support, Github issue #36 - Banner delimiter issues, Github issue #37 - delete() broke in some situations
1.2.18  20150408 Fix Github issue #32 (ccp + py34 + windows broken).
1.2.17  20150406 Fix Github issue #31.  First steps towards IPv6Obj support.
1.2.16  20150401 Improve ip route detection in models_cisco, as requested by Github issue #30.  Convert more unit tests to native py.test format
1.2.15  20150322 Implement feature requested by Github issue #28 (Cisco ASA standby addrs), improve sync_diff() / fix bugs, add .geneology / .geneology_text features
1.2.14  20150307 Enhance config modification speed as documented in Github issue #26. Implement find_interface_objects() as documented in Github issue #27.  Improved unit test coverage
1.2.13  20150301 Fix Github issue #25: Python3 bites me again
1.2.12  20150301 Fix Github issue #24: recursive dependencies in setup.py and ciscoconfparse/__init__.py
1.2.11  20150301 Converted unit-tests to py.test. Fix Github issue #23 (banner detection bug), add sync_diff() feature from Github issue #22, improve setup.py script.  NOTE: going forward, sync_diff() will deprecate use of req_cfgspec_excl_diff()
1.2.10  20150210 Fix Github issue #21 in find_all_children(), update unit tests to detect github issue #21, add new-style example in examples/
1.2.9   20150202 reduce package size, enhance generator support
1.2.8   20150129 Add support for iterating over a generator (CiscoConfParse input, ref Github issue #19)
1.2.7   20150126 Fix README, again; pypi and github don't act the same way.
1.2.6   20150126 Fix README, because it looks awful on pypi (they don't allow twitter embedding)
1.2.5   20150126 Add 'indent' and 'auto_indent' options to append_to_family()
1.2.4   20150125 Fix _unique_OBJ() to work in Python2.6, which doesn't have set comprehensions
1.2.3   20150125 Add find_objects_w_parents()
1.2.2   20150125 Add support for parsing Junos as a Cisco-IOS-style configuration - github issue #17, fixed github issue #16 [Banners with comment characters in them are not parsed correctly], fixed github issue #15 [CiscoConfParse.append('config_line_here') is a null operation]
1.2.1   20150124 More parsing speed optimizations, particularly in banner parsing.  Ripped out old, unused code
1.2.0   20150124 Major parser rewrite: streamline parser, less spaghetti code, add ccp_abc.is_config_line.  This version *should* parse Cisco Nexus syntax now (but parse Cisco Nexus configs with ignore_blank_lines=False).  Implement enhancement in github issue #6
1.1.24  20150123 Fix github issue #13 (ciscoconfparse did not parse correctly when ignore_blank_lines=True); some parent assignments were missed if blank lines were in the configuration
1.1.23  20150117 Update copyrights to 2015, use list comprehension in re_search_children() to increase speed
1.1.22  20141204 More bugfixes in ccp_util.IPv4Obj(); IPv4Obj should mostly be stable and reliable now.  Added solid unit test coverage for IPv4Obj()
1.1.21  20141203 Major bugfixes in IPv4Obj, convert results from ordinal_list() from a python list to a python tuple
1.1.20  20141116 Remove numpydoc
1.1.19  20141116 Fix for Read the Docs publication
1.1.18  20141115 Doc reformating; remove duplicated ccp_util.IPv4Obj method
1.1.17  20141113 More doc reformating; add recursion for ASA group-objects on object-groups
1.1.16  20141113 Reformat docs; improve ASAConfigList()
1.1.15  20141112 Add gt and lt comparision methods to ccp_util.IPv4Obj(); consolidate test scripts into one shell script
1.1.14  20141111 Fix Python3 breakage in 1.1.13
1.1.13  20141111 Fix github issues #10 and #11.  Improve Cisco ASA parsing support
1.1.12  20140919 Enhance support for ccp_util.IPv4Obj, add Cisco ASA parsing in models_asa
1.1.11  20140918 Fix Github Issue #9
1.1.10  20140905 Enhance AAA parsing in models_cisco
1.1.9   20140904 Enhance AAA parsing in models_cisco
1.1.8   20140903 Add initial models_cisco support for parsing basic AAA configuration
1.1.7   20140902 Fix TravisCI failures
1.1.6   20140902 Replace ipaddr.IPv4Network with ccp_util.IPv4Obj for more consistency.  Started adding unittests for models_cisco functionality.  Added local_py/ipaddress.py
1.1.5   20140829 Add IOS Interface object functions in models_cisco to parse port number, interface type, etc. Added the "Huge Ugly Warning" to models_cisco.  I also removed an unnecessary isinstance() in ccp_abc to improve performance.
1.1.4   20140818 Major speed improvement when parsing large configurations (~45% faster than some previous CiscoConfParse versions)
1.1.3   20140729 Fix is_switchport parsing
1.1.2   20140515 Fix Python3 packaging (related to missing PEP366 compliance),
        more relative ipaddr imports
1.1.1   20140515 Fix Python3 breakage due to xrange
1.1.0   20140514 Improve parsing speed.  Simplify debugging logs.
1.0.7   20140507 Add build automation improvements.  Modify default value for 
        ipv4_network_object()
1.0.6   20140506 Improve docs
1.0.5   20140506 Improve docs
1.0.4   20140504 Add new find_objects_w_child() and find_objects_wo_child()
        methods.  Add more documentation.
1.0.3   20140503 Removed all examples in README.rst, and expanded those in the
        web documentation.  More non-trivial doc updates
1.0.2   20140502 Even more documentation improvements.  Changed default value
        of IOSCfgLine.re_search / re_match from None to "".
1.0.1   20140501 More documentation improvements.  Fix problem with experimental
        IOSCfgLine factory feature.
1.0.0   20140430 Significant documentation overhaul.  Add documentation of
        new IOSCfgLine methods introduced in 0.9.10, as well as making the 
        documentation more friendly to mobile devices; substitute the 
        sphinx_bootstrap_theme instead of the sphinxdoc theme.  Add line 
        highlights in code examples which hopefully make complex examples more 
        clear.
0.9.35  20140430 Update docstrings with more examples.  Improve doc Makefile
0.9.34  20140429 Update IOSCfgLine objects with a recursive delete, which
        will automatically delete children if the parent is deleted.  First 
        steps toward a long-overdue documentation update.  A lot more is left to
        do.
0.9.33  20140425 Add unit test for banner parsing coverage
0.9.32  20140422 Fix banner parent-child relationships for Github Issue #4.  
        Improve parsing speed with pre-compiled regex in _mark_banner().  
        Update example in README.rst.  Add new ignore_rgx option to the 
        re_sub() line-object method.
0.9.31  20140415 Fix DBGFLAG issue in CiscoConfParse() for Github Issue #5
0.9.30  20140404 Add ignore_blank_lines option in CiscoConfParse() for Github 
        Issue #3
0.9.29  20140404 Fix typo in CiscoConfParse()
0.9.28  20140403 Added new linesplit_rgx option in CiscoConfParse() to help
        user who filed Github Issue #2; no defaults were changed.  Added 
        Python 3.4 in .travis.yml in hopes of testing against Python 3.4
0.9.27  20140326 Added a new append_line() method to ciscoconfparse.
0.9.26  20140319  Finally caved and left my copy of ipaddr that's modified to
        work with python3 in ciscoconfparse/ipaddr.py, where Travis can find it
0.9.25  20140319 Improve speed in find_blocks(), as requested by Github 
        Issue #1.  Minor change to improve Travis CI builds
0.9.24  20140313 Fix broken Travis CI builds (because of where I moved the ipaddr module).  Added new functionality
        in models_cisco (still alpha code at this point)
0.9.23  20140305 Modify ipv4_addr_object default value in models_cisco; 
        move ipaddr module to a local folder
0.9.22  20140228 Add PIM interface support in models_cisco (still alpha at 
        this point)
0.9.21  20140226 Fix Python3.2 build (note to self... u'' isn't supported until
        Python3.3).
0.9.20  20140226 Updated README with other Cisco IOS configuration resources.  
        Fixed problems in models_cisco; improved / added docstrings. Improve
        build workflow.
0.9.19  20140217 Fixed Python3 build issue in 0.9.18
0.9.18  20140217 Updated README.rst.  Added new IOSCfgLine.lineage() &
        CiscoConfParse.lineage() methods (experimental at this point).
        Added IOSCfgLine.all_children. "President's Day holiday release"
0.9.17  20140215 Updated README.rst, add MANIFEST.in and requirements.txt.
        Several new object-oriented methods added.
0.9.16  20140212 Fix bug in ccp_abc.insert_before() and insert_after().  Made
        updates to README.rst.  Ripped out linenum references in various
        insert methods
0.9.15  20140210 Updated README.rst with inline example
0.9.14  20140209 Support for Travis CI.  Fix Travis CI build failures on
        Python3.3 (due to how __hash__() is computed).
0.9.13  20140209 Fixed Python3 compatibility, which broke a few builds ago.  
        Including ipaddr-py (patched for Python3) until versions of Python3 
        typically include it (right now, Debian 7.3 has Python3.2 without
        ipaddr-py)
0.9.12  20140208 Fixed bug in ccp_abc.py; reworked comment detection; 
        performance improvements
0.9.11  20140204 Bugfixes
0.9.10  20140203 Bugfixes and more performance improvements.  Doubled
        number of unit tests. Added alpha-quality code in another module.
0.9.9   20140131 Major insert() / append() performance improvements.   Add
        optional interface-aware config line factory objects.  Add abstract base
        classes.  Add atomic options to insert_before(), insert_after(), etc...
0.9.8   20140124 Remove debugging info
0.9.7   20140124 Major rewrite, removed support for old python versions.  
        Ripped out inefficient code I wrote as a python newbie, added more
        idiomatic structures in various places.  Also added support for 
        inserting and deleting lines via insert_before(), insert_after(), and
        insert_after_child()
0.9.6   20140106 Update copyright to 2014.  Rewrite unit tests
0.9.5   20131231 Add replace_lines() function, enhance unit tests, 
        added an exactmatch option on _find_line_OBJ().  Updated code 
        copyright to include 2014
0.9.4   20130814 Add Python3 compliance; other minor tweaks
0.9.3   20130511 Added methods to IOSCfgLine: __eq__(), __hash__(), __lt__(), 
        __gt__(), as well as simplifying several other methods.  Misc code
        maintenance...
0.9.2   20130509 Add find_children_w_parents() method... tidy up unit-tests
0.9.1   20121231 Improve docs with numpydoc and intersphinx links.  Add
        more examples / doctests.  Renamed internal CiscoConfParse methods
        with a leading _ to make Sphinx documentation more intuitive...
0.9.0   20121230 Add RST documentation into the archives and fix more build 
        issues
0.8.6   20121230 Fix packaging problems introduced when I switched to a native
        mercurial repository (examples/* and configs/* were not automatically
        packaged in the .egg / .tar.gz anymore...)
0.8.5   20121229 - Added custom comment delimiters that were in the 0.8.3a private 
        build.  Converted the unicode backslash to a true unicode instance.
0.8.4   20121229 - Add doctests, code maintenance, and more documentation fixes.
        Improved examples/req_cfgspec_all_diff.py and 
        examples/req_cfgspec_excl_diff.py.
0.8.3   20091016 - Documentation updates.  PEP8 formatting
0.8.2   20090808 - Fixed a fatal crash in find_blocks()
0.8.1   20090719 - Code reorganization.  Fixed a bad RuntimeError.  Promoted to
        production-quality at this point
0.8.0   20071011 - Removed residual internal debugging from the CiscoPassword
        class.  Added an 'ignore_ws' options to all public methods, except
	req_cfgspec_excl_diff; this option will make the method's matches 
	ignore whitespace differences (useful in some CatOS configurations).  
	After much deliberation, I have removed the explicit 'False' return 
	values for methods that do not match; instead I am returning an empty 
	list (which will test False).  Apologies for breaking any existing 
	code, but I decided against leaving beta with this behavior.  Removed
	all sys.exit(0) statements in favor of raising a RuntimeError.

0.7.5   20070804 - Fixed a bug in the parse() method, which was associating
        grandchildren as children of the grandparent.   Added unit tests.

0.7.0   20070803 - Added an optional parameter to the find_lines(), 
        find_children(), find_all_children(), and find_blocks() methods.  This
	parameter will allow the user to specify whether he wants an "exact"
	match or a normal regex match.  Also fixed a bug that broke parsing
	of configs with an indented line at the very end.

0.6.8   20070802 - Ported fixes to the CiscoPassword class from the 
        cisco_decrypt package.  Notably, there were crashes when it was called
	with certain unencrypted passwords.

0.6.7   20070801 - Fixed bug where some methods didn't return False when no 
        diffs were found

0.6.6   20070730 - Added password decryption options to the command-line help
        menu.  Modified all diff functions to return False if no diffs are found

0.6.5   20070728 - Fixed another CiscoPassword bug. Added warning if 
        CiscoPassword decryption fails.  Added command-line functionality for 
	improved interoperability with other languages (and shell-usage if 
	you like).

0.6.1   20070726 - Cosmetic restructuring of code

0.6.0   20070721 - Revised APIs.  Existing APIs should be stable now

