Repository: YtenSoftware/Nety (language: python)

Issue:
Removed Python3.2 from Travis, added Python3.5 and Python3.6



Discussion / hints:

Fix patch:
diff --git a/.gitignore b/.gitignore
index cea041e..d9d33b1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,6 +5,8 @@ build
 *.orig
 tags
 .tox
-ciscoconfparse.egg-*/
+nety.egg-*/
 .eggs/*
 .cache/*
+.coverage
+.DS_Store
diff --git a/.travis.yml b/.travis.yml
index 013de25..2b180a0 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -8,9 +8,9 @@ language: python
 python:
  - 2.6
  - 2.7
- - 3.2
  - 3.3
  - 3.4
+ - 3.5
  - pypy
  - pypy3
 
@@ -23,9 +23,4 @@ install:
  - pip install --upgrade -q nety
 
 
-script: make test
-
-matrix:
-  allow_failures:
-    ## FIXME Python3.2 is broken (github issue #14)
-    - python: 3.2
+script: make test
\ No newline at end of file
diff --git a/BUILD.ME b/BUILD.ME
index 4b81412..d5a1976 100644
--- a/BUILD.ME
+++ b/BUILD.ME
@@ -1,12 +1,12 @@
 mkdir local_copy
 cd local_copy
 hg init
-hg pull http://bitbucket.org/mpenning/ciscoconfparse
+hg pull http://bitbucket.org/mpenning/nety
 hg update
-hg pull git+ssh://git@github.com:mpenning/ciscoconfparse.git
+hg pull git+ssh://git@github.com:mpenning/nety.git
 hg update
 ### Version updates:
-# - Update ciscoconfparse.version_tuple
+# - Update nety.version_tuple
 # - Update .travis.yml
 # - Update copyright year in README.rst
 # - Update copyright year in sphinx-doc/license_copyright.rst
@@ -15,15 +15,15 @@ hg update
 hg commit ...
 python setup.py sdist; python setup.py register; python setup.py sdist upload
 ## Clean up repo after build
-rm -rf ciscoconfparse/*pyc; rm -rf dist/ ciscoconfparse.egg-info/ setuptools*
-rm -rf ciscoconfparse/ciscoconfparse.egg-info/
+rm -rf nety/*pyc; rm -rf dist/ nety.egg-info/ setuptools*
+rm -rf nety/nety.egg-info/
 rm -rf .eggs/
 # Push docs
 python deploy_docs.py
 # Push to bitbucket
 cp .hgrc .hg/
 hg bookmark -f master
-hg push https://mpenning@bitbucket.org/mpenning/ciscoconfparse
+hg push https://mpenning@bitbucket.org/mpenning/nety
 ## On my system, with ~/.pypirc
 # Push to github
-hg push git+ssh://git@github.com:mpenning/ciscoconfparse.git
+hg push git+ssh://git@github.com:mpenning/nety.git
diff --git a/CHANGES b/CHANGES
index cf3f61e..06c0414 100644
--- a/CHANGES
+++ b/CHANGES
@@ -27,7 +27,7 @@
 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.12  20150301 Fix Github issue #24: recursive dependencies in setup.py and nety/__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
@@ -40,7 +40,7 @@
 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.24  20150123 Fix github issue #13 (nety 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
@@ -101,9 +101,9 @@
 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.27  20140326 Added a new append_line() method to nety.
 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
+        work with python3 in nety/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
diff --git a/Makefile b/Makefile
index 9fc2a63..75d35ba 100644
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,6 @@
 PY27DEVTESTS=cd tests;find ./* -name 'test_*.py' -exec /opt/virtual_env/py27_test/bin/py.test -s {} \;
 PY34DEVTESTS=cd tests;find ./* -name 'test_*.py' -exec /opt/virtual_env/py34_test/bin/py.test -s {} \;
-BITBUCKETPUSH = $(shell bash -c 'read -s -p "Bitbucket Password: " pwd; hg push "https://mpenning:$$pwd@bitbucket.org/mpenning/ciscoconfparse"')
+BITBUCKETPUSH = $(shell bash -c 'read -s -p "Bitbucket Password: " pwd; hg push "https://mpenning:$$pwd@bitbucket.org/mpenning/nety"')
 DOCHOST ?= $(shell bash -c 'read -p "documentation host: " dochost; echo $$dochost')
 
 .PHONY: package
@@ -15,8 +15,8 @@ pypi:
 repo-push:
 	cp .hgrc .hg/
 	hg bookmark -f master
-	-hg push ssh://hg@bitbucket.org/mpenning/ciscoconfparse
-	-hg push git+ssh://git@github.com:mpenning/ciscoconfparse.git
+	-hg push ssh://hg@bitbucket.org/mpenning/nety
+	-hg push git+ssh://git@github.com:mpenning/nety.git
 .PHONY: tutorial
 tutorial:
 	rst2html5 --jquery --reveal-js --pretty-print-code --embed-stylesheet --embed-content --embed-images tutorial/ccp_tutorial.rst > tutorial/ccp_tutorial.html
@@ -58,24 +58,24 @@ devpkgs:
 	pip install --upgrade ipaddr
 .PHONY: flake
 flake:
-	flake8 --ignore E501,E226,E225,E221,E303,E302,E265,E128,E125,E124,E41,W291 --max-complexity 10 ciscoconfparse | less
+	flake8 --ignore E501,E226,E225,E221,E303,E302,E265,E128,E125,E124,E41,W291 --max-complexity 10 nety | less
 .PHONY: coverage
 coverage:
 	@echo "[[[ py.test Coverage ]]]"
-	cd tests;py.test --cov-report term-missing --cov=ciscoconfparse.py -s -v
+	cd tests;py.test --cov-report term-missing --cov=nety.py -s -v
 .PHONY: devtest
 devtest:
 	@echo "[[[ Python 2.7 tests ]]]"
-	/opt/virtual_env/py27_test/bin/python ciscoconfparse/ciscoconfparse.py;
+	/opt/virtual_env/py27_test/bin/python nety/nety.py;
 	$(PY27DEVTESTS)
 	#@echo "[[[ Python 3.4 tests ]]]"
-	#/opt/virtual_env/py34_test/bin/python ciscoconfparse/ciscoconfparse.py
+	#/opt/virtual_env/py34_test/bin/python nety/nety.py
 	$(PY34DEVTESTS)
 	make clean
 .PHONY: test
 test:
 	# Run the doc tests and unit tests
-	cd tests; python ../ciscoconfparse/ciscoconfparse.py; ./runtests.sh
+	cd tests; python ../nety/nety.py; ./runtests.sh
 .PHONY: clean
 clean:
 	find ./* -name '*.pyc' -exec rm {} \;
@@ -86,7 +86,7 @@ clean:
 	@# remove all the MockSSH keys
 	-find ./* -name '*.key' -exec rm {} \;
 	-rm -rf .eggs/
-	-rm -rf dist/ ciscoconfparse.egg-info/ setuptools*
+	-rm -rf dist/ nety.egg-info/ setuptools*
 .PHONY: help
 help:
 	@# An @ sign prevents outputting the command itself to stdout
diff --git a/README.rst b/README.rst
index 21b207b..9afde78 100644
--- a/README.rst
+++ b/README.rst
@@ -103,7 +103,7 @@ already have setuptools_, you can install as usual:
 ::
 
       # Substitute whatever Nety version you like...
-      easy_install -U Nety==1.2.39
+      easy_install -U nety==1.3.0
 
 Alternatively you can install into Python2.x with pip_:
 
@@ -201,7 +201,7 @@ Special thanks to mpenning for his great CiscoConfParse_, Nety is a successor of
 
 .. _Python: http://python.org/
 
-.. _CiscoConfParse: https://github.com/mpenning/ciscoconfparse
+.. _CiscoConfParse: https://github.com/mpenning/nety
 
 .. _`pypy JIT`: http://pypy.org/
 
diff --git a/examples/basic_usage.py b/examples/basic_usage.py
index fab2eec..3490db5 100644
--- a/examples/basic_usage.py
+++ b/examples/basic_usage.py
@@ -1,5 +1,5 @@
 #!/usr/bin/env python
-from ciscoconfparse import CiscoConfParse
+from nety import CiscoConfParse
 
 parse = CiscoConfParse("../configs/sample_01.ios")
 
diff --git a/examples/parse_switchport_addrs.py b/examples/parse_switchport_addrs.py
index 179d852..952889c 100644
--- a/examples/parse_switchport_addrs.py
+++ b/examples/parse_switchport_addrs.py
@@ -1,7 +1,7 @@
 from operator import methodcaller
 import re
 
-from ciscoconfparse import CiscoConfParse
+from nety import CiscoConfParse
 
 def vlan_intf_dict(parse):
     """Return an integer vlan number to IP address string mapping"""
diff --git a/ciscoconfparse/__init__.py b/nety/__init__.py
similarity index 96%
rename from ciscoconfparse/__init__.py
rename to nety/__init__.py
index 017922a..ca20b96 100644
--- a/ciscoconfparse/__init__.py
+++ b/nety/__init__.py
@@ -1,4 +1,4 @@
-from ciscoconfparse import *
+from nety import *
 
 """ __init__.py - Parse, Query, Build, and Modify IOS-style configurations
      Copyright (C) 2007-2015 David Michael Pennington
diff --git a/ciscoconfparse/__main__.py b/nety/__main__.py
similarity index 94%
rename from ciscoconfparse/__main__.py
rename to nety/__main__.py
index 88fba08..68a90a3 100644
--- a/ciscoconfparse/__main__.py
+++ b/nety/__main__.py
@@ -1,7 +1,7 @@
 # Follow PEP366...
 #     Credit (the question): http://stackoverflow.com/q/2943847/667301
-__package__ = "ciscoconfparse"
-from .ciscoconfparse import *
+__package__ = "nety"
+from .nety import *
 
 """ __main__.py - Parse, Query, Build, and Modify IOS-style configurations
      Copyright (C) 2014-2015 David Michael Pennington
diff --git a/ciscoconfparse/ccp_abc.py b/nety/ccp_abc.py
similarity index 99%
rename from ciscoconfparse/ccp_abc.py
rename to nety/ccp_abc.py
index 44a79af..8407ae1 100755
--- a/ciscoconfparse/ccp_abc.py
+++ b/nety/ccp_abc.py
@@ -609,8 +609,8 @@ def re_match_iter_typed(self, regex, group=1, result_type=str, default=''):
         :func:`~models_cisco.IOSCfgLine.re_match_iter_typed` to build an 
         :func:`~ccp_util.IPv4Obj` address object for each interface.
 
-           >>> from ciscoconfparse import CiscoConfParse
-           >>> from ciscoconfparse.ccp_util import IPv4Obj
+           >>> from nety import CiscoConfParse
+           >>> from nety.ccp_util import IPv4Obj
            >>> config = [
            ...     '!',
            ...     'interface Serial1/0',
diff --git a/ciscoconfparse/ccp_flask.py b/nety/ccp_flask.py
similarity index 97%
rename from ciscoconfparse/ccp_flask.py
rename to nety/ccp_flask.py
index d3691bb..629835b 100644
--- a/ciscoconfparse/ccp_flask.py
+++ b/nety/ccp_flask.py
@@ -30,7 +30,7 @@ def _random_secret_key():
 def run(password='', debug=False, host='127.0.0.1', port=8282):
     SECRET_KEY = os.environ.get('CCP_FLASK_KEY', False) or _random_secret_key()
     USERNAME = os.environ.get('CCP_FLASK_ADMIN_USER', False) or 'admin'
-    PASSWORD = password or 'ciscoconfparse'
+    PASSWORD = password or 'nety'
     app = Flask(__name__)
     app.config.from_object(__name__)
     app.run(host=host, port=port, debug=False)
diff --git a/ciscoconfparse/ccp_util.py b/nety/ccp_util.py
similarity index 100%
rename from ciscoconfparse/ccp_util.py
rename to nety/ccp_util.py
diff --git a/ciscoconfparse/models_asa.py b/nety/models_asa.py
similarity index 99%
rename from ciscoconfparse/models_asa.py
rename to nety/models_asa.py
index fc13d0f..891bb5d 100755
--- a/ciscoconfparse/models_asa.py
+++ b/nety/models_asa.py
@@ -46,16 +46,16 @@ class ASACfgLine(BaseCfgLine):
     .. note::
 
        Originally, :class:`~models_asa.ASACfgLine` objects were only 
-       intended for advanced ciscoconfparse users.  As of ciscoconfparse 
+       intended for advanced nety users.  As of nety 
        version 0.9.10, *all users* are strongly encouraged to prefer the 
        methods directly on :class:`~models_asa.ASACfgLine` objects.  
        Ultimately, if you write scripts which call methods on 
        :class:`~models_asa.ASACfgLine` objects, your scripts will be much 
        more efficient than if you stick strictly to the classic 
-       :class:`~ciscoconfparse.CiscoConfParse` methods.
+       :class:`~nety.CiscoConfParse` methods.
 
     Args:
-        - text (str): A string containing a text copy of the ASA configuration line.  :class:`~ciscoconfparse.CiscoConfParse` will automatically identify the parent and children (if any) when it parses the configuration. 
+        - text (str): A string containing a text copy of the ASA configuration line.  :class:`~nety.CiscoConfParse` will automatically identify the parent and children (if any) when it parses the configuration. 
         - comment_delimiter (str): A string which is considered a comment for the configuration format.  Since this is for Cisco ASA-style configurations, it defaults to ``!``.
 
     Attributes:
diff --git a/ciscoconfparse/models_cisco.py b/nety/models_cisco.py
similarity index 99%
rename from ciscoconfparse/models_cisco.py
rename to nety/models_cisco.py
index d99fa68..4d65a4c 100755
--- a/ciscoconfparse/models_cisco.py
+++ b/nety/models_cisco.py
@@ -49,16 +49,16 @@ class IOSCfgLine(BaseCfgLine):
     .. note::
 
        Originally, :class:`~models_cisco.IOSCfgLine` objects were only 
-       intended for advanced ciscoconfparse users.  As of ciscoconfparse 
+       intended for advanced nety users.  As of nety 
        version 0.9.10, *all users* are strongly encouraged to prefer the 
        methods directly on :class:`~models_cisco.IOSCfgLine` objects.  
        Ultimately, if you write scripts which call methods on 
        :class:`~models_cisco.IOSCfgLine` objects, your scripts will be much 
        more efficient than if you stick strictly to the classic 
-       :class:`~ciscoconfparse.CiscoConfParse` methods.
+       :class:`~nety.CiscoConfParse` methods.
 
     Args:
-        - text (str): A string containing a text copy of the IOS configuration line.  :class:`~ciscoconfparse.CiscoConfParse` will automatically identify the parent and children (if any) when it parses the configuration. 
+        - text (str): A string containing a text copy of the IOS configuration line.  :class:`~nety.CiscoConfParse` will automatically identify the parent and children (if any) when it parses the configuration. 
         - comment_delimiter (str): A string which is considered a comment for the configuration format.  Since this is for Cisco IOS-style configurations, it defaults to ``!``.
 
     Attributes:
@@ -887,8 +887,8 @@ def in_ipv4_subnet(self, ipv4network=IPv4Obj('0.0.0.0/32', strict=False)):
         .. code-block:: python
            :emphasize-lines: 21,23
 
-           >>> from ciscoconfparse.ccp_util import IPv4Obj
-           >>> from ciscoconfparse import CiscoConfParse
+           >>> from nety.ccp_util import IPv4Obj
+           >>> from nety import CiscoConfParse
            >>> config = [
            ...     '!',
            ...     'interface Serial1/0',
@@ -977,8 +977,8 @@ def has_no_ip_proxyarp(self):
         .. code-block:: python
            :emphasize-lines: 12
 
-           >>> from ciscoconfparse.ccp_util import IPv4Obj
-           >>> from ciscoconfparse import CiscoConfParse
+           >>> from nety.ccp_util import IPv4Obj
+           >>> from nety import CiscoConfParse
            >>> config = [
            ...     '!',
            ...     'interface FastEthernet1/0',
diff --git a/ciscoconfparse/models_junos.py b/nety/models_junos.py
similarity index 98%
rename from ciscoconfparse/models_junos.py
rename to nety/models_junos.py
index 15cc20a..63fd22f 100755
--- a/ciscoconfparse/models_junos.py
+++ b/nety/models_junos.py
@@ -46,16 +46,16 @@ class JunosCfgLine(BaseCfgLine):
     .. note::
 
        Originally, :class:`~models_junos.JunosCfgLine` objects were only 
-       intended for advanced ciscoconfparse users.  As of ciscoconfparse 
+       intended for advanced nety users.  As of nety 
        version 0.9.10, *all users* are strongly encouraged to prefer the 
        methods directly on :class:`~models_junos.JunosCfgLine` objects.  
        Ultimately, if you write scripts which call methods on 
        :class:`~models_junos.JunosCfgLine` objects, your scripts will be much 
        more efficient than if you stick strictly to the classic 
-       :class:`~ciscoconfparse.CiscoConfParse` methods.
+       :class:`~nety.CiscoConfParse` methods.
 
     Args:
-        - text (str): A string containing a text copy of the Junos configuration line.  :class:`~ciscoconfparse.CiscoConfParse` will automatically identify the parent and children (if any) when it parses the configuration. 
+        - text (str): A string containing a text copy of the Junos configuration line.  :class:`~nety.CiscoConfParse` will automatically identify the parent and children (if any) when it parses the configuration. 
         - comment_delimiter (str): A string which is considered a comment for the configuration format.  Since this is for Cisco Junos-style configurations, it defaults to ``!``.
 
     Attributes:
diff --git a/ciscoconfparse/ciscoconfparse.py b/nety/nety.py
similarity index 96%
rename from ciscoconfparse/ciscoconfparse.py
rename to nety/nety.py
index 76b7221..a72b206 100755
--- a/ciscoconfparse/ciscoconfparse.py
+++ b/nety/nety.py
@@ -34,7 +34,7 @@
 from version import __version__ as __netyversion__
 
 
-""" ciscoconfparse.py - Parse, Query, Build, and Modify IOS-style configurations
+""" nety.py - Parse, Query, Build, and Modify IOS-style configurations
      Copyright (C) 2007-2015 David Michael Pennington
 
      This program is free software: you can redistribute it and/or modify
@@ -85,20 +85,20 @@ def __init__(self, config="", comment="!", debug=False, factory=False,
                - debug (bool): ``debug`` defaults to False, and should be kept that way unless you're working on a very tricky config parsing problem.  Debug output is not particularly friendly
                - factory (bool): ``factory`` defaults to False; if set ``True``, it enables a beta-quality configuration line classifier.
                - linesplit_rgx (str): ``linesplit_rgx`` is used when parsing configuration files to find where new configuration lines are.  It is best to leave this as the default, unless you're working on a system that uses unusual line terminations (for instance something besides Unix, OSX, or Windows)
-               - ignore_blank_lines (bool): ``ignore_blank_lines`` defaults to True; when this is set True, ciscoconfparse ignores blank configuration lines.  You might want to set ``ignore_blank_lines`` to False if you intentionally use blank lines in your configuration (ref: Github Issue #2), or you are parsing configurations which naturally have blank lines (such as Cisco Nexus configurations).
+               - ignore_blank_lines (bool): ``ignore_blank_lines`` defaults to True; when this is set True, nety ignores blank configuration lines.  You might want to set ``ignore_blank_lines`` to False if you intentionally use blank lines in your configuration (ref: Github Issue #2), or you are parsing configurations which naturally have blank lines (such as Cisco Nexus configurations).
                - syntax (str): ``syntax`` defaults to 'ios'; You can choose from the following values: ios, asa
 
            Attributes:
                - comment_delimiter (str): A string containing the comment-delimiter
-               - ConfigObjs (:class:`~ciscoconfparse.IOSConfigList`) : A custom list, which contains all parsed :class:`~models_cisco.IOSCfgLine` instances.
+               - ConfigObjs (:class:`~nety.IOSConfigList`) : A custom list, which contains all parsed :class:`~models_cisco.IOSCfgLine` instances.
                - all_parents (list) : A list of all parent :class:`~models_cisco.IOSCfgLine` instances.
                - last_index (int) : An integer with the last index in ``ConfigObjs``
            Returns:
-               - An instance of a :class:`~ciscoconfparse.CiscoConfParse` object
+               - An instance of a :class:`~nety.CiscoConfParse` object
 
 
            This example illustrates how to parse a simple Cisco IOS configuration
-           with :class:`~ciscoconfparse.CiscoConfParse` into a variable called 
+           with :class:`~nety.CiscoConfParse` into a variable called 
            ``parse``.  This example also illustrates what the ``ConfigObjs`` 
            and ``ioscfg`` attributes contain.
 
@@ -234,7 +234,7 @@ def __repr__(self):
     @property
     def ioscfg(self):
         """A list containing all text configuration statements"""
-        ## I keep this here to emulate the legacy ciscoconfparse behavior
+        ## I keep this here to emulate the legacy nety behavior
         return list(map(attrgetter('text'), self.ConfigObjs))
 
     @property
@@ -243,43 +243,43 @@ def objs(self):
         return self.ConfigObjs
 
     def atomic(self):
-        """Call :func:`~ciscoconfparse.CiscoConfParse.atomic` to manually fix 
+        """Call :func:`~nety.CiscoConfParse.atomic` to manually fix 
         up ``ConfigObjs`` relationships 
         after modifying a parsed configuration.  This method is slow; try to 
-        batch calls to :func:`~ciscoconfparse.CiscoConfParse.atomic()` if 
+        batch calls to :func:`~nety.CiscoConfParse.atomic()` if 
         possible.
 
         .. warning::
 
            If you modify a configuration after parsing it with 
-           :class:`~ciscoconfparse.CiscoConfParse`, you *must* call 
-           :func:`~ciscoconfparse.CiscoConfParse.commit` or 
-           :func:`~ciscoconfparse.CiscoConfParse.atomic` before searching 
+           :class:`~nety.CiscoConfParse`, you *must* call 
+           :func:`~nety.CiscoConfParse.commit` or 
+           :func:`~nety.CiscoConfParse.atomic` before searching 
            the configuration again with methods such as 
-           :func:`~ciscoconfparse.CiscoConfParse.find_objects` or 
-           :func:`~ciscoconfparse.CiscoConfParse.find_lines`.  Failure to 
-           call :func:`~ciscoconfparse.CiscoConfParse.commit` or 
-           :func:`~ciscoconfparse.CiscoConfParse.atomic` on config 
+           :func:`~nety.CiscoConfParse.find_objects` or 
+           :func:`~nety.CiscoConfParse.find_lines`.  Failure to 
+           call :func:`~nety.CiscoConfParse.commit` or 
+           :func:`~nety.CiscoConfParse.atomic` on config 
            modifications could lead to unexpected search results.
         """
         self.ConfigObjs._bootstrap_from_text()
 
     def commit(self):
-        """Alias for calling the :func:`~ciscoconfparse.CiscoConfParse.atomic` 
+        """Alias for calling the :func:`~nety.CiscoConfParse.atomic` 
         method.  This method is slow; try to batch calls to 
-        :func:`~ciscoconfparse.CiscoConfParse.commit()` if possible.
+        :func:`~nety.CiscoConfParse.commit()` if possible.
 
         .. warning::
 
            If you modify a configuration after parsing it with 
-           :class:`~ciscoconfparse.CiscoConfParse`, you *must* call 
-           :func:`~ciscoconfparse.CiscoConfParse.commit` or 
-           :func:`~ciscoconfparse.CiscoConfParse.atomic` before searching 
+           :class:`~nety.CiscoConfParse`, you *must* call 
+           :func:`~nety.CiscoConfParse.commit` or 
+           :func:`~nety.CiscoConfParse.atomic` before searching 
            the configuration again with methods such as 
-           :func:`~ciscoconfparse.CiscoConfParse.find_objects` or 
-           :func:`~ciscoconfparse.CiscoConfParse.find_lines`.  Failure to 
-           call :func:`~ciscoconfparse.CiscoConfParse.commit` or 
-           :func:`~ciscoconfparse.CiscoConfParse.atomic` on config 
+           :func:`~nety.CiscoConfParse.find_objects` or 
+           :func:`~nety.CiscoConfParse.find_lines`.  Failure to 
+           call :func:`~nety.CiscoConfParse.commit` or 
+           :func:`~nety.CiscoConfParse.atomic` on config 
            modifications could lead to unexpected search results.
         """
         self.atomic()
@@ -351,7 +351,7 @@ def find_interface_objects(self, intfspec, exactmatch=True):
             - exactmatch (bool): Defaults to True; when True, this option requires ``intfspec`` match the whole interface name and number.
 
         Returns:
-            - list.  A list of matching :class:`~ciscoconfparse.IOSIntfLine` objects
+            - list.  A list of matching :class:`~nety.IOSIntfLine` objects
 
         .. code-block:: python
            :emphasize-lines: 12,15
@@ -395,7 +395,7 @@ def find_objects_dna(self, dnaspec, exactmatch=False):
         matches ``dnaspec`` and return the :class:`~models_cisco.IOSCfgLine` 
         objects in a python list.  
 
-        .. note:: :func:`~ciscoconfparse.CiscoConfParse.find_objects_dna` requires the configuration to be parsed with factory=True
+        .. note:: :func:`~nety.CiscoConfParse.find_objects_dna` requires the configuration to be parsed with factory=True
         
 
         Args:
@@ -404,7 +404,7 @@ def find_objects_dna(self, dnaspec, exactmatch=False):
             - exactmatch (bool): Defaults to False.  When set True, this option requires ``dnaspec`` match the whole configuration line, instead of a portion of the configuration line.
 
         Returns:
-            - list.  A list of matching :class:`~ciscoconfparse.IOSCfgLine` objects
+            - list.  A list of matching :class:`~nety.IOSCfgLine` objects
 
         .. code-block:: python
            :emphasize-lines: 8
@@ -440,13 +440,13 @@ def find_objects(self, linespec, exactmatch=False, ignore_ws=False):
         """Find all :class:`~models_cisco.IOSCfgLine` objects whose text 
         matches ``linespec`` and return the :class:`~models_cisco.IOSCfgLine` 
         objects in a python list.  
-        :func:`~ciscoconfparse.CiscoConfParse.find_objects` is similar to 
-        :func:`~ciscoconfparse.CiscoConfParse.find_lines`; however, the former 
+        :func:`~nety.CiscoConfParse.find_objects` is similar to 
+        :func:`~nety.CiscoConfParse.find_lines`; however, the former 
         returns a list of :class:`~models_cisco.IOSCfgLine` objects, while the 
         latter returns a list of text configuration statements.  Going 
         forward, I strongly encourage people to start using 
-        :func:`~ciscoconfparse.CiscoConfParse.find_objects` instead of 
-        :func:`~ciscoconfparse.CiscoConfParse.find_lines`.
+        :func:`~nety.CiscoConfParse.find_objects` instead of 
+        :func:`~nety.CiscoConfParse.find_lines`.
 
         Args:
             - linespec (str): A string or python regular expression, which should be matched
@@ -455,11 +455,11 @@ def find_objects(self, linespec, exactmatch=False, ignore_ws=False):
             - ignore_ws (bool): boolean that controls whether whitespace is ignored.  Default is False.
 
         Returns:
-            - list.  A list of matching :class:`~ciscoconfparse.IOSCfgLine` objects
+            - list.  A list of matching :class:`~nety.IOSCfgLine` objects
 
         This example illustrates the difference between 
-        :func:`~ciscoconfparse.CiscoConfParse.find_objects` and 
-        :func:`~ciscoconfparse.CiscoConfParse.find_lines`.
+        :func:`~nety.CiscoConfParse.find_objects` and 
+        :func:`~nety.CiscoConfParse.find_lines`.
 
         .. code-block:: python
            :emphasize-lines: 12,15
@@ -552,7 +552,7 @@ def find_children(self, linespec, exactmatch=False, ignore_ws=False):
         .. code-block:: python
            :emphasize-lines: 11
 
-           >>> from ciscoconfparse import CiscoConfParse
+           >>> from nety import CiscoConfParse
            >>> config = ['username ddclient password 7 107D3D232342041E3A',
            ...           'archive',
            ...           ' log config',
@@ -625,7 +625,7 @@ def find_all_children(self, linespec, exactmatch=False, ignore_ws=False):
         .. code-block:: python
            :emphasize-lines: 11
 
-           >>> from ciscoconfparse import CiscoConfParse
+           >>> from nety import CiscoConfParse
            >>> config = ['username ddclient password 7 107D3D232342041E3A',
            ...           'archive',
            ...           ' log config',
@@ -712,7 +712,7 @@ class class-default
         .. code-block:: python
            :emphasize-lines: 22,25
 
-           >>> from ciscoconfparse import CiscoConfParse
+           >>> from nety import CiscoConfParse
            >>> config = ['!', 
            ...           'policy-map EXTERNAL_CBWFQ', 
            ...           ' class IP_PREC_HIGH', 
@@ -783,7 +783,7 @@ def find_objects_w_child(self, parentspec, childspec, ignore_ws=False):
         Returns:
             - list.  A list of matching parent :class:`~models_cisco.IOSCfgLine` objects
 
-        This example uses :func:`~ciscoconfparse.find_objects_w_child()` to 
+        This example uses :func:`~nety.find_objects_w_child()` to 
         find all ports that are members of access vlan 300 in following 
         config...
 
@@ -1420,7 +1420,7 @@ class ALL
         .. code-block:: python
            :emphasize-lines: 23
 
-           >>> from ciscoconfparse import CiscoConfParse
+           >>> from nety import CiscoConfParse
            >>> config = ['!', 
            ...           'policy-map EXTERNAL_CBWFQ', 
            ...           ' description implement an EXTERNAL_CBWFQ policy',
@@ -1500,7 +1500,7 @@ def replace_children(self, parentspec, childspec, replacestr,
         .. code-block:: python
            :emphasize-lines: 13
 
-           >>> from ciscoconfparse import CiscoConfParse
+           >>> from nety import CiscoConfParse
            >>> config = ['!', 
            ...           'interface GigabitEthernet1/1',
            ...           ' description {I have a broken storm-control config}',
@@ -1802,7 +1802,7 @@ def sync_diff(self, cfgspec, linespec, uncfgspec=None,
             - linespec (str): A regular expression, which filters lines to be diff'd
 
         Kwargs:
-            - uncfgspec (str): A regular expression, which is used to unconfigure lines.  When ciscoconfparse removes a line, it takes the entire portion of the line that matches ``uncfgspec``, and prepends "no" to it.
+            - uncfgspec (str): A regular expression, which is used to unconfigure lines.  When nety removes a line, it takes the entire portion of the line that matches ``uncfgspec``, and prepends "no" to it.
             - ignore_order (bool): Indicates whether the configuration should be reordered to minimize the number of diffs.  Default: True (usually it's a good idea to leave ``ignore_order`` True, except for ACL comparisions)
             - remove_lines (bool): Indicates whether the lines which are *not* in ``cfgspec`` should be removed.  Default: True.  When ``remove_lines`` is True, all other config lines matching the linespec that are *not* listed in the cfgspec will be removed with the uncfgspec regex.
             - debug (bool): Miscellaneous debugging; Default: False
@@ -2187,10 +2187,10 @@ def __init__(self, data=None, comment_delimiter='!', debug=False,
             - data (list): A list of parsed :class:`~models_cisco.IOSCfgLine` objects
             - comment (str): A comment delimiter.  This should only be changed when parsing non-Cisco IOS configurations, which do not use a !  as the comment delimiter.  ``comment`` defaults to '!'
             - debug (bool): ``debug`` defaults to False, and should be kept that way unless you're working on a very tricky config parsing problem.  Debug output is not particularly friendly
-            - ignore_blank_lines (bool): ``ignore_blank_lines`` defaults to True; when this is set True, ciscoconfparse ignores blank configuration lines.  You might want to set ``ignore_blank_lines`` to False if you intentionally use blank lines in your configuration (ref: Github Issue #2).
+            - ignore_blank_lines (bool): ``ignore_blank_lines`` defaults to True; when this is set True, nety ignores blank configuration lines.  You might want to set ``ignore_blank_lines`` to False if you intentionally use blank lines in your configuration (ref: Github Issue #2).
 
         Returns:
-           - An instance of an :class:`~ciscoconfparse.IOSConfigList` object.
+           - An instance of an :class:`~nety.IOSConfigList` object.
 
         """
         #data = kwargs.get('data', None)
@@ -2519,7 +2519,7 @@ def _add_child_to_parent(self, _list, idx, indent, parentobj, childobj):
             pass
         if childobj.is_comment and (_list[idx-1].indent>indent):
             ## I *really* hate making this exception, but legacy 
-            ##   ciscoconfparse never marked a comment as a child 
+            ##   nety never marked a comment as a child 
             ##   when the line immediately above it was indented more
             ##   than the comment line
             pass
@@ -2574,7 +2574,7 @@ def __init__(self, data=None, comment_delimiter='!', debug=False,
             - data (list): A list of parsed :class:`~models_asa.ASACfgLine` objects
             - comment (str): A comment delimiter.  This should only be changed when parsing non-Cisco IOS configurations, which do not use a !  as the comment delimiter.  ``comment`` defaults to '!'
             - debug (bool): ``debug`` defaults to False, and should be kept that way unless you're working on a very tricky config parsing problem.  Debug output is not particularly friendly
-            - ignore_blank_lines (bool): ``ignore_blank_lines`` defaults to True; when this is set True, ciscoconfparse ignores blank configuration lines.  You might want to set ``ignore_blank_lines`` to False if you intentionally use blank lines in your configuration.
+            - ignore_blank_lines (bool): ``ignore_blank_lines`` defaults to True; when this is set True, nety ignores blank configuration lines.  You might want to set ``ignore_blank_lines`` to False if you intentionally use blank lines in your configuration.
 
         Attributes:
             - names (dict): A Python dictionary, which maps a Cisco ASA name to a string representing the address
@@ -2583,7 +2583,7 @@ def __init__(self, data=None, comment_delimiter='!', debug=False,
             - access_list (dict): A Python dictionary, which maps a Cisco ASA access-list name to the list of ACEs for that ACL
  
         Returns:
-            - An instance of an :class:`~ciscoconfparse.ASAConfigList` object.
+            - An instance of an :class:`~nety.ASAConfigList` object.
  
         """
         super(ASAConfigList, self).__init__()
@@ -2841,7 +2841,7 @@ def _add_child_to_parent(self, _list, idx, indent, parentobj, childobj):
                 .format(parentobj.children))
         if childobj.is_comment and (_list[idx-1].indent>indent):
             ## I *really* hate making this exception, but legacy 
-            ##   ciscoconfparse never marked a comment as a child 
+            ##   nety never marked a comment as a child 
             ##   when the line immediately above it was indented more
             ##   than the comment line
             pass
@@ -3052,5 +3052,5 @@ def ConfigLineFactory(text="", comment_delimiter="!", syntax='ios'):
         for line in diff:
             print(line)
     else:
-        raise RuntimeError("FATAL: ciscoconfparse was called with unknown" + \
+        raise RuntimeError("FATAL: nety was called with unknown" + \
             " parameters")
diff --git a/ciscoconfparse/protocol_values.py b/nety/protocol_values.py
similarity index 100%
rename from ciscoconfparse/protocol_values.py
rename to nety/protocol_values.py
diff --git a/ciscoconfparse/version.py b/nety/version.py
similarity index 100%
rename from ciscoconfparse/version.py
rename to nety/version.py
diff --git a/sphinx-doc/Makefile b/sphinx-doc/Makefile
index b8464ca..6d18d9e 100755
--- a/sphinx-doc/Makefile
+++ b/sphinx-doc/Makefile
@@ -73,9 +73,9 @@ qthelp:
 	@echo
 	@echo "Build finished; now you can run "qcollectiongenerator" with the" \
 	      ".qhcp project file in $(BUILDDIR)/qthelp, like this:"
-	@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/ciscoconfparse.qhcp"
+	@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/nety.qhcp"
 	@echo "To view the help file:"
-	@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/ciscoconfparse.qhc"
+	@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/nety.qhc"
 
 latex:
 	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
diff --git a/sphinx-doc/api.rst b/sphinx-doc/api.rst
index 2ce7664..a6b99ee 100644
--- a/sphinx-doc/api.rst
+++ b/sphinx-doc/api.rst
@@ -4,9 +4,9 @@
 API
 ===
 
-.. module:: ciscoconfparse
+.. module:: nety
 
-This part of the documentation covers all the significant Python classes and methods used in :class:`~ciscoconfparse.CiscoConfParse()`.
+This part of the documentation covers all the significant Python classes and methods used in :class:`~nety.CiscoConfParse()`.
 
 Contents:
 
diff --git a/sphinx-doc/api_CiscoConfParse.rst b/sphinx-doc/api_CiscoConfParse.rst
index f532ccb..4db7cbd 100644
--- a/sphinx-doc/api_CiscoConfParse.rst
+++ b/sphinx-doc/api_CiscoConfParse.rst
@@ -3,7 +3,7 @@
 CiscoConfParse Object
 ---------------------
 
-.. autoclass:: ciscoconfparse.CiscoConfParse
+.. autoclass:: nety.CiscoConfParse
       :members:
       :undoc-members:
       :inherited-members:
diff --git a/sphinx-doc/api_IOSConfigList.rst b/sphinx-doc/api_IOSConfigList.rst
index d3f428d..44f9b82 100644
--- a/sphinx-doc/api_IOSConfigList.rst
+++ b/sphinx-doc/api_IOSConfigList.rst
@@ -3,7 +3,7 @@
 IOSConfigList Object
 --------------------
 
-.. autoclass:: ciscoconfparse.IOSConfigList
+.. autoclass:: nety.IOSConfigList
       :members:
       :inherited-members:
 
diff --git a/sphinx-doc/conf.py b/sphinx-doc/conf.py
index 5b382eb..820882e 100755
--- a/sphinx-doc/conf.py
+++ b/sphinx-doc/conf.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 #
-# ciscoconfparse documentation build configuration file, created by
+# nety documentation build configuration file, created by
 # sphinx-quickstart on Fri Oct 16 17:50:54 2009.
 #
 # This file is execfile()d with the current directory set to its containing dir.
@@ -15,10 +15,10 @@
 import time
 # Relative import path referenced to this sphinx-doc directory
 sys.path.insert(0, os.path.join(os.path.abspath(os.path.dirname(__file__)), 
-    "..", "ciscoconfparse"))
+    "..", "nety"))
 
 from sphinx.ext.autodoc import AttributeDocumenter, ClassLevelDocumenter
-import ciscoconfparse, version, ccp_abc
+import nety, version, ccp_abc
 try:
     import sphinx_bootstrap_theme
 except:
@@ -56,7 +56,7 @@
 
 # General information about the project.
 project = u'Nety'
-copyright = ciscoconfparse.__copyright__
+copyright = nety.__copyright__
 
 # The version info for the project you're documenting, acts as replacement for
 # |version| and |release|, also used in various other places throughout the
@@ -65,7 +65,7 @@
 # The short X.Y version.
 version = '.'.join(map(str, version.__version_tuple__[:2]))
 # The full version, including alpha/beta/rc tags.
-release = ciscoconfparse.__version__
+release = nety.__version__
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.
diff --git a/sphinx-doc/history.rst b/sphinx-doc/history.rst
index b7c3fd4..b2679e6 100755
--- a/sphinx-doc/history.rst
+++ b/sphinx-doc/history.rst
@@ -2,11 +2,11 @@
 History and Python Apologetic
 =============================
 
-:class:`~ciscoconfparse.CiscoConfParse()` was born from audit requirements.  When I first built the module, I was contracting for a company with hundreds of devices; PCI compliance obligated us to perform security audits on the configs and management wanted it done quarterly.  Our company was supposed to have an automated tool, but nobody could get it to work.  I offered to build an audit and diff script instead of our entire team spending hundreds of man-hours on a manual task each quarter.
+:class:`~nety.CiscoConfParse()` was born from audit requirements.  When I first built the module, I was contracting for a company with hundreds of devices; PCI compliance obligated us to perform security audits on the configs and management wanted it done quarterly.  Our company was supposed to have an automated tool, but nobody could get it to work.  I offered to build an audit and diff script instead of our entire team spending hundreds of man-hours on a manual task each quarter.
 
 At first, I tried using a canned Perl config-parsing library; it was great when it worked, but the library suffered from mysterious crashes on certain configs.  I tried auditing the troublesome configs manually, but dealing with the crashes put me behind schedule.  I reached a point where I realized the audit results were going to be late if something didn't change, so I wrote the author for help, but he literally said that he wasn't really sure how the library works. [#]_ 
 
-With the deadline approaching, I wound up spending a full weekend of my own time writing my first endeavor in Python.  It worked so well, I found myself building similar tools for other accounts that weren't even mine.  After more work, I ultimately I published this as open-source software.  ciscoconfparse is available to anyone who wants to invest a little effort on the front-end.  Many companies in the US and Europe are already using it to audit their configs; I only ask that you drop me a line [#]_ and let me know if you like it and how I can improve the library.
+With the deadline approaching, I wound up spending a full weekend of my own time writing my first endeavor in Python.  It worked so well, I found myself building similar tools for other accounts that weren't even mine.  After more work, I ultimately I published this as open-source software.  nety is available to anyone who wants to invest a little effort on the front-end.  Many companies in the US and Europe are already using it to audit their configs; I only ask that you drop me a line [#]_ and let me know if you like it and how I can improve the library.
 
 .. [#] *This is not so much a slam on the module or author; it's part of Perl syntax.  After six months, most people have a hard time remembering the meaning of those quirky idioms that make their code tick.  Perl's syntax, and its convoluted error messages are why I left ten previous years of Perl experience behind me, and started fresh with Python in 2007.*
 
diff --git a/sphinx-doc/index.rst b/sphinx-doc/index.rst
index 3ed46a0..a03e55e 100755
--- a/sphinx-doc/index.rst
+++ b/sphinx-doc/index.rst
@@ -1,4 +1,4 @@
-Welcome to ciscoconfparse's documentation!
+Welcome to nety's documentation!
 ==========================================
 
 Contents:
diff --git a/sphinx-doc/installation.rst b/sphinx-doc/installation.rst
index 086c687..ee45801 100755
--- a/sphinx-doc/installation.rst
+++ b/sphinx-doc/installation.rst
@@ -55,25 +55,25 @@ Using the Python in Windows
 
 Please see the official `Python on Windows`_ documentation.
 
-Using :mod:`ciscoconfparse`
+Using :mod:`nety`
 ---------------------------
 
 Once you know how to find and use python on your system, it's time to ensure 
-you have a copy of :mod:`ciscoconfparse`.   Many of the examples assume you 
-have imported :class:`~ciscoconfparse.CiscoConfParse` at the interpreter 
+you have a copy of :mod:`nety`.   Many of the examples assume you 
+have imported :class:`~nety.CiscoConfParse` at the interpreter 
 before you start...
 
 .. code-block:: python
 
-   >>> from ciscoconfparse import CiscoConfParse
+   >>> from nety import CiscoConfParse
 
 Try importing `CiscoConfParse` in the python interpreter now.  If it doesn't 
-work, then you'll need to install ciscoconfparse.
+work, then you'll need to install nety.
 
-Installing :mod:`ciscoconfparse`
+Installing :mod:`nety`
 --------------------------------
 
-ciscoconfparse_ needs  Python versions 2.6, 2.7 or 3.2+; the OS should not
+nety_ needs  Python versions 2.6, 2.7 or 3.2+; the OS should not
 matter. If you want to run it under a Python virtualenv_, it's been heavily
 tested in that environment as well. 
 
@@ -85,7 +85,7 @@ You can check your python version with the ``-V`` switch...
    Python 2.7.3
    [mpenning@Mudslide ~]$
 
-The best way to get ciscoconfparse is with pip_ or setuptools_.
+The best way to get nety is with pip_ or setuptools_.
 
 Install with pip
 ~~~~~~~~~~~~~~~~
@@ -94,12 +94,12 @@ If you already have pip_, you can install as usual:
 
 Alternatively you can install with pip_: :: 
 
-      pip install --upgrade ciscoconfparse
+      pip install --upgrade nety
 
-If you have a specific version of ciscoconfparse in mind, you can specify that
+If you have a specific version of nety in mind, you can specify that
 at the command-line ::
 
-      pip install ciscoconfparse==1.2.39
+      pip install nety==1.3.0
 
 
 Install with setuptools
@@ -107,19 +107,19 @@ Install with setuptools
 
 If you don't have pip_, you can use setuptools_...  ::
 
-      # Substitute whatever ciscoconfparse version you like...
-      easy_install -U ciscoconfparse
+      # Substitute whatever nety version you like...
+      easy_install -U nety
 
-If you have a specific version of ciscoconfparse in mind, you can specify that
+If you have a specific version of nety in mind, you can specify that
 at the command-line ::
 
-      easy_install -U ciscoconfparse==1.2.39
+      easy_install -U nety==1.3.0
 
 Install from the source
 ~~~~~~~~~~~~~~~~~~~~~~~
 
 If you don't have either pip_ or setuptools_, you can 
-`download the ciscoconfparse compressed tarball`_, extract it and 
+`download the nety compressed tarball`_, extract it and 
 run the ``setup.py`` script in the tarball: ::
 
       python setup.py install
@@ -134,15 +134,15 @@ or `bitbucket repo`_:
   ::
 
       hg init
-      hg clone https://bitbucket.org/mpenning/ciscoconfparse
+      hg clone https://bitbucket.org/mpenning/nety
 
 - From github_:
   ::
 
-      git clone git://github.com//mpenning/ciscoconfparse
+      git clone git://github.com//mpenning/nety
 
 
-.. _`download the ciscoconfparse compressed tarball`: https://pypi.python.org/pypi/ciscoconfparse/ 
+.. _`download the nety compressed tarball`: https://pypi.python.org/pypi/nety/ 
 
 .. _`Python on Windows`: https://docs.python.org/2/faq/windows.html
 
@@ -150,18 +150,18 @@ or `bitbucket repo`_:
 
 .. _pip: https://pypi.python.org/pypi/pip
 
-.. _`github repo`: https://github.com/mpenning/ciscoconfparse
+.. _`github repo`: https://github.com/mpenning/nety
 
-.. _`bitbucket repo`: https://bitbucket.org/mpenning/ciscoconfparse
+.. _`bitbucket repo`: https://bitbucket.org/mpenning/nety
 
-.. _bitbucket: https://bitbucket.org/mpenning/ciscoconfparse
+.. _bitbucket: https://bitbucket.org/mpenning/nety
 
-.. _github: https://github.com/mpenning/ciscoconfparse
+.. _github: https://github.com/mpenning/nety
 
 .. _mercurial: http://mercurial.selenic.com/
 
 .. _virtualenv: https://pypi.python.org/pypi/virtualenv
 
-.. _ciscoconfparse: https://pypi.python.org/pypi/ciscoconfparse
+.. _nety: https://pypi.python.org/pypi/nety
 
 
diff --git a/sphinx-doc/intro.rst b/sphinx-doc/intro.rst
index d49b647..64b1c03 100755
--- a/sphinx-doc/intro.rst
+++ b/sphinx-doc/intro.rst
@@ -5,7 +5,7 @@ Introduction
 Overview
 ---------
 
-ciscoconfparse is a Python_ library, which parses through Cisco IOS-style 
+nety is a Python_ library, which parses through Cisco IOS-style 
 configurations.  It can:
 
 - Audit existing router / switch / firewall / wlc configurations
@@ -17,9 +17,9 @@ The library examines an IOS-style config and breaks it into a set of linked
 parent / child relationships; each configuration line is stored in a different 
 :class:`~models_cisco.IOSCfgLine` object.
 
-.. figure:: _static/ciscoconfparse_overview.png
+.. figure:: _static/nety_parent_child.png
    :width: 600px
-   :alt: ciscoconfparse overview
+   :alt: nety overview
    :align: left
 
    Figure 1, An Example of Parent-line / Child-line relationships
@@ -45,7 +45,7 @@ hierarchy in them.
 |br|
 |br|
 
-What is ciscoconfparse good for?
+What is nety good for?
 ----------------------------------
 
 After several network evolutions, you may have a tangled mess of conflicting or 
@@ -54,16 +54,16 @@ FHRP timers, routing protocols, duplicated subnets, cdp, console passwords, or
 aaa schemes have a measurable affect on up time and beg for a tool to audit them.
 However, manually scrubbing configurations is a long and error-prone process.
 
-Audits aren't the only use for ciscoconfparse.  Let's suppose you are working 
+Audits aren't the only use for nety.  Let's suppose you are working 
 on a design and need a list of dot1q trunks on a switch with more than 400 
 interfaces.  You can't grep for them because you need the interface names of 
 layer2 trunks; the interface name is stored on one line, and the trunk 
 configuration is stored somewhere below the interface name.  With 
-ciscoconfparse, it's really this easy...
+nety, it's really this easy...
 
 .. sourcecode:: python
 
-   >>> from ciscoconfparse import CiscoConfParse
+   >>> from nety import CiscoConfParse
    >>> parse = CiscoConfParse('/tftpboot/largeConfig.conf')
    >>> trunks = parse.find_parents_w_child("^interface", "switchport trunk")
    >>> for intf in trunks:
@@ -113,14 +113,14 @@ These are a few selected public mentions about CiscoConfParse; I usually try not
 
 .. raw:: html
 
-   <a href="https://github.com/mpenning/ciscoconfparse/issues/13#issuecomment-71340177"><img src="https://raw.githubusercontent.com/mpenning/ciscoconfparse/master/sphinx-doc/_static/crackerjackmack.png" width="800" alt="CiscoConfParse Github issue #13"></a>
+   <a href="https://github.com/mpenning/nety/issues/13#issuecomment-71340177"><img src="https://raw.githubusercontent.com/mpenning/nety/master/sphinx-doc/_static/crackerjackmack.png" width="800" alt="CiscoConfParse Github issue #13"></a>
 
 |br|
 |br|
 
 .. raw:: html
 
-   <a href="http://www.reddit.com/r/Python/comments/2zxew5/interesting_dmca_notice_gplv3_license_violation/#cptgtl7"><img src="https://raw.githubusercontent.com/mpenning/ciscoconfparse/master/sphinx-doc/_static/reddit_20150328.png" width="500" alt="Reddit comment - 20150328"></a>
+   <a href="http://www.reddit.com/r/Python/comments/2zxew5/interesting_dmca_notice_gplv3_license_violation/#cptgtl7"><img src="https://raw.githubusercontent.com/mpenning/nety/master/sphinx-doc/_static/reddit_20150328.png" width="500" alt="Reddit comment - 20150328"></a>
 
 |br|
 |br|
@@ -147,7 +147,7 @@ These are a few selected public mentions about CiscoConfParse; I usually try not
 What's new in version 1.0.0
 ---------------------------
 
-I wrote :mod:`ciscoconfparse` seven years ago as literally my first Python 
+I wrote :mod:`nety` seven years ago as literally my first Python 
 project; through the years, my understanding of Python improved, and I also 
 found many missing features along the way. Some of these features, like 
 changing a configuration after it was parsed, required non-trivial changes to 
@@ -160,13 +160,13 @@ changes were made:
 - Major improvement in config parsing speed
 - Much better unit-test coverage
 - Too many bug fixes to count
-- New feature - :mod:`ciscoconfparse` inserts, deletes and appends config lines
+- New feature - :mod:`nety` inserts, deletes and appends config lines
 - Rearchitected the library, with an eye towards more future improvements
-- Revisions in scripting flow.  All users are encouraged to use :class:`~models_cisco.IOSCfgLine()` objects whenever possible.  Typically, you'll start by matching them with :func:`~ciscoconfparse.CiscoConfParse.find_objects()`.  Working directly with :class:`~models_cisco.IOSCfgLine()` objects makes your scripts less complicated and it also makes them faster than using legacy :mod:`ciscoconfparse` syntax.
+- Revisions in scripting flow.  All users are encouraged to use :class:`~models_cisco.IOSCfgLine()` objects whenever possible.  Typically, you'll start by matching them with :func:`~nety.CiscoConfParse.find_objects()`.  Working directly with :class:`~models_cisco.IOSCfgLine()` objects makes your scripts less complicated and it also makes them faster than using legacy :mod:`nety` syntax.
 
-.. _`brace-delimited configurations`: https://github.com/mpenning/ciscoconfparse/blob/81cb4bee7c5ad95301b9e8b3562d70f11fa32505/configs/sample_01.junos
-.. _`Github Issue #17`: https://github.com/mpenning/ciscoconfparse/issues/17
-.. _`This project [ciscoconfparse] has really been a lifesaver`: https://github.com/mpenning/ciscoconfparse/issues/13#issuecomment-71340177
+.. _`brace-delimited configurations`: https://github.com/mpenning/nety/blob/81cb4bee7c5ad95301b9e8b3562d70f11fa32505/configs/sample_01.junos
+.. _`Github Issue #17`: https://github.com/mpenning/nety/issues/17
+.. _`This project [nety] has really been a lifesaver`: https://github.com/mpenning/nety/issues/13#issuecomment-71340177
 .. _`Dive into Python`: http://www.diveintopython.net/
 .. _`Dive into Python3`: http://www.diveintopython3.net/
 .. _`regular expressions`: https://docs.python.org/2/howto/regex.html
diff --git a/sphinx-doc/legacy_syntax.rst b/sphinx-doc/legacy_syntax.rst
index aa54dec..e1b048a 100755
--- a/sphinx-doc/legacy_syntax.rst
+++ b/sphinx-doc/legacy_syntax.rst
@@ -1,8 +1,8 @@
 =====================================================
-:class:`~ciscoconfparse.CiscoConfParse` Legacy Syntax
+:class:`~nety.CiscoConfParse` Legacy Syntax
 =====================================================
 
-This section will cover the legacy :class:`~ciscoconfparse.CiscoConfParse()`
+This section will cover the legacy :class:`~nety.CiscoConfParse()`
 syntax; these were the original methods before version 1.0.0; legacy
 methods always returned text strings.  This makes them easier to learn, but
 harder to write complex scripts with.  There is nothing wrong with continuing to use these methods; however, you will probably find that your scripts are more 
@@ -65,7 +65,7 @@ Finding interface names that match a substring
 
 The following script will load a configuration file from 
 ``/tftpboot/bucksnort.conf`` and use 
-:func:`~ciscoconfparse.CiscoConfParse.find_lines` to find the 
+:func:`~nety.CiscoConfParse.find_lines` to find the 
 Serial interfaces.
 
 Note that the ``^`` symbol at the beginning of the search string is a regular 
@@ -77,7 +77,7 @@ To find matching interface statements, use this code...
 .. code-block:: python
    :emphasize-lines: 3
   
-   >>> from ciscoconfparse import CiscoConfParse
+   >>> from nety import CiscoConfParse
    >>> parse = CiscoConfParse("/tftpboot/bucksnort.conf")
    >>> serial_lines = parse.find_lines("^interface Serial")
    >>> serial_lines
@@ -92,24 +92,24 @@ Finding parents with a specific child
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 The last example was a nice start, but if this was all 
-:class:`~ciscoconfparse.CiscoConfParse` could do, then it's easier to 
+:class:`~nety.CiscoConfParse` could do, then it's easier to 
 use ``grep``.
 
 Let's suppose you need to find all interfaces that are configured with 
 ``service-policy QOS_1`` in the output direction.  We will use 
-:func:`~ciscoconfparse.CiscoConfParse.find_parents_w_child` to search the 
+:func:`~nety.CiscoConfParse.find_parents_w_child` to search the 
 config.
 
-:func:`~ciscoconfparse.CiscoConfParse.find_parents_w_child` requires at least 
+:func:`~nety.CiscoConfParse.find_parents_w_child` requires at least 
 two different arguments:
 
 - The first argument is a regular expression to match the parents
 - The second argument is a regular expression to match the child
 
 If the arguments above match both the parent and child respectively, then 
-:func:`~ciscoconfparse.CiscoConfParse.find_parents_w_child` will add the 
+:func:`~nety.CiscoConfParse.find_parents_w_child` will add the 
 parent's line to a list.  This list is returned after 
-:func:`~ciscoconfparse.CiscoConfParse.find_parents_w_child` finishes analyzing 
+:func:`~nety.CiscoConfParse.find_parents_w_child` finishes analyzing 
 the configuration.
 
 In this case, we need to find parents that begin with ``^interface`` and have a child matching ``service-policy output QOS_1``.  One might wonder why we chose to put a caret (``^``) in front of the parent's regex, but not in front of the child's regex.  We did this because of the way IOS indents commands in the configuration.  Interface commands always show up at the top of the heirarchy in the configuration; interfaces do not get indented.  On the other hand, the commands applied to the interface, such as a service-policy *are* indented.  If we put a caret in front of ``service-policy output QOS_1``, it would not match anything because we would be forcing a beginning-of-the-line match.  The search and result is shown below.
@@ -135,15 +135,15 @@ Let's suppose you wanted a list of all interfaces that have CDP enabled; this im
 1.  CDP has not been disabled globally with ``no cdp run``
 2.  The interfaces in question are not configured with ``no cdp enable``
 
-:func:`~ciscoconfparse.CiscoConfParse.find_parents_wo_child` is a function to 
+:func:`~nety.CiscoConfParse.find_parents_wo_child` is a function to 
 find parents without a specific child; it requires arguments similar to 
-:func:`~ciscoconfparse.CiscoConfParse.find_parents_w_child`:
+:func:`~nety.CiscoConfParse.find_parents_w_child`:
 
 - The first argument is a regular expression to match the parents
 - The second argument is a regular expression to match the child's *exclusion*
 
 Since we need to find parents that do not have ``no cdp enable``, we will use 
-:func:`~ciscoconfparse.CiscoConfParse.find_parents_wo_child` for this query.  
+:func:`~nety.CiscoConfParse.find_parents_wo_child` for this query.  
 Note that the script below makes use of a special property of python lists... 
 empty lists test False in Python; thus, we can 
 use ``if not bool(parse.find_lines('no cdp run'))`` to ensure that CDP is 
@@ -167,7 +167,7 @@ Finding children
 
 Let's suppose you needed to look at the children of a particular parent, but 
 you didn't want the children's children.  
-:func:`~ciscoconfparse.CiscoConfParse.find_children` was made for this purpose.
+:func:`~nety.CiscoConfParse.find_children` was made for this purpose.
 
 .. code-block:: python
 
@@ -181,7 +181,7 @@ Results:
    ['policy-map QOS_1', ' class GOLD', ' class SILVER', ' class default']
 
 If you *do* want the children (recursively), then use 
-:func:`~ciscoconfparse.CiscoConfParse.find_all_children`.
+:func:`~nety.CiscoConfParse.find_all_children`.
 
 .. code-block:: python
 
@@ -196,7 +196,7 @@ If you *do* want the children (recursively), then use
 CiscoConfParse options
 ~~~~~~~~~~~~~~~~~~~~~~
 
-Several of :class:`~ciscoconfparse.CiscoConfParse`'s functions support one of these options:
+Several of :class:`~nety.CiscoConfParse`'s functions support one of these options:
 
 - exactmatch
 - ignore_ws
@@ -210,7 +210,7 @@ Not all functions support the options above; please consult the API documentatio
 Checking Passwords
 ------------------------------
 
-Sometimes you find yourself wishing you could decrypt vty or console passwords to ensure that they conform to the corporate standard.  :class:`~ciscoconfparse.CiscoConfParse` comes with a :class:`~ciscoconfparse.CiscoPassword` class that can decrypt some Cisco IOS type 7 passwords.
+Sometimes you find yourself wishing you could decrypt vty or console passwords to ensure that they conform to the corporate standard.  :class:`~nety.CiscoConfParse` comes with a :class:`~nety.CiscoPassword` class that can decrypt some Cisco IOS type 7 passwords.
 
 .. note::
 
@@ -229,11 +229,11 @@ Simple example... let's suppose you have this configuration...
     password 107D3D232342041E3A
     exec-timeout 15 0
 
-We need to ensure that the password on the console is correct.  This is easy with the :class:`~ciscoconfparse.CiscoPassword` class
+We need to ensure that the password on the console is correct.  This is easy with the :class:`~nety.CiscoPassword` class
 
 .. code-block:: python
 
-   >>> from ciscoconfparse import CiscoPassword
+   >>> from nety import *CiscoPassword
    >>> dp = CiscoPassword()
    >>> decrypted_passwd = dp.decrypt('107D3D232342041E3A')
 
diff --git a/sphinx-doc/license_copyright.rst b/sphinx-doc/license_copyright.rst
index 7830b90..669d36d 100644
--- a/sphinx-doc/license_copyright.rst
+++ b/sphinx-doc/license_copyright.rst
@@ -1,12 +1,12 @@
 License and Copyright
 =====================
 
-ciscoconfparse_ is licensed GPLv3_; Copyright `David Michael Pennington`_,
+nety_ is licensed GPLv3_; Copyright `David Michael Pennington`_,
 2007-2016.
 
 .. _`GPLv3`: http://www.gnu.org/licenses/gpl-3.0.html
 
-.. _ciscoconfparse: https://pypi.python.org/pypi/ciscoconfparse
+.. _nety: https://pypi.python.org/pypi/nety
 
 .. _`David Michael Pennington`: http://pennington.net/
 
diff --git a/sphinx-doc/tutorial.rst b/sphinx-doc/tutorial.rst
index 2a941b7..9e70206 100755
--- a/sphinx-doc/tutorial.rst
+++ b/sphinx-doc/tutorial.rst
@@ -1,9 +1,9 @@
 ================================================
-:class:`~ciscoconfparse.CiscoConfParse` Tutorial
+:class:`~nety.CiscoConfParse` Tutorial
 ================================================
 
 This is a brief tutorial which will cover the features that most 
-:class:`~ciscoconfparse.CiscoConfParse` users care about.  We make a couple 
+:class:`~nety.CiscoConfParse` users care about.  We make a couple 
 of assumptions throughout this tutorial...
 
 - You already know a scripting language like Python or Perl
diff --git a/sphinx-doc/tutorial_audit.rst b/sphinx-doc/tutorial_audit.rst
index af88e10..b1508fa 100755
--- a/sphinx-doc/tutorial_audit.rst
+++ b/sphinx-doc/tutorial_audit.rst
@@ -38,7 +38,7 @@ Next, we build this script to read and change the config:
 
 .. code-block:: python
 
-   from ciscoconfparse import CiscoConfParse
+   from nety import CiscoConfParse
 
    def standardize_intfs(parse):
 
diff --git a/sphinx-doc/tutorial_build_diffs.rst b/sphinx-doc/tutorial_build_diffs.rst
index 87cece4..f5c0a10 100755
--- a/sphinx-doc/tutorial_build_diffs.rst
+++ b/sphinx-doc/tutorial_build_diffs.rst
@@ -62,7 +62,7 @@ enable LDP.
 .. code-block:: python
    :emphasize-lines: 6,8
 
-   from ciscoconfparse import CiscoConfParse
+   from nety import CiscoConfParse
 
    # Parse the original configuration
    parse = CiscoConfParse('/tftpboot/bucksnort.conf')
diff --git a/sphinx-doc/tutorial_parent_child.rst b/sphinx-doc/tutorial_parent_child.rst
index e67245b..733316e 100755
--- a/sphinx-doc/tutorial_parent_child.rst
+++ b/sphinx-doc/tutorial_parent_child.rst
@@ -1,11 +1,11 @@
 ====================================================
-:class:`~ciscoconfparse.CiscoConfParse` Fundamentals
+:class:`~nety.CiscoConfParse` Fundamentals
 ====================================================
 
 IOS Parent-child relationships
 ------------------------------
 
-:class:`~ciscoconfparse.CiscoConfParse()` reads an IOS configuration and breaks 
+:class:`~nety.CiscoConfParse()` reads an IOS configuration and breaks 
 it into a list of parent-child relationships.  Used correctly, these 
 relationships can reveal a lot of useful information.  The concept of IOS 
 parent and child is pretty intuitive, but we'll go through a simple example 
@@ -61,7 +61,7 @@ In short:
 - Line 1 is a parent, and its children are lines 2, 4, and 7.
 - Line 2 is also a parent, and it only has one child: line 3.
 
-:class:`~ciscoconfparse.CiscoConfParse()` uses these parent-child relationships 
+:class:`~nety.CiscoConfParse()` uses these parent-child relationships 
 to build queries.  For instance, you can find a list of all parents with or 
 without a child; or you can find all the configuration elements that are 
 required to reconfigure a certain class-map.
@@ -69,7 +69,7 @@ required to reconfigure a certain class-map.
 :class:`~models_cisco.IOSCfgLine` objects
 -----------------------------------------
 
-When :class:`~ciscoconfparse.CiscoConfParse()` reads a configuration, it stores
+When :class:`~nety.CiscoConfParse()` reads a configuration, it stores
 parent-child relationships as a special :class:`~models_cisco.IOSCfgLine` 
 object.  These objects are very powerful.
 
@@ -91,13 +91,13 @@ Example: Retrieving text from an :class:`~models_cisco.IOSCfgLine` object
 This example:
 
 - Parses through a configuration
-- Finds an :class:`~models_cisco.IOSCfgLine` object with :func:`~ciscoconfparse.CiscoConfParse.find_objects()`
+- Finds an :class:`~models_cisco.IOSCfgLine` object with :func:`~nety.CiscoConfParse.find_objects()`
 - Retrieves the configuration text from that object (highlighted in yellow)
 
 .. code-block:: python
    :emphasize-lines: 9
 
-   >>> from ciscoconfparse import CiscoConfParse
+   >>> from nety import CiscoConfParse
    >>> parse = CiscoConfParse([
    ...     '!',
    ...     'interface Serial1/0', 
@@ -164,7 +164,7 @@ Example Usage: Finding interface names that match a substring
 
 The following script will load a configuration file from 
 ``/tftpboot/bucksnort.conf`` and use 
-:func:`~ciscoconfparse.CiscoConfParse.find_objects` to find the 
+:func:`~nety.CiscoConfParse.find_objects` to find the 
 Serial interfaces.
 
 Note that the ``^`` symbol at the beginning of the search string is a regular expression; ``^interface Serial`` tells python to limit the search to lines that 
@@ -173,12 +173,12 @@ Note that the ``^`` symbol at the beginning of the search string is a regular ex
 .. code-block:: python
    :emphasize-lines: 3
 
-   >>> from ciscoconfparse import CiscoConfParse
+   >>> from nety import CiscoConfParse
    >>> parse = CiscoConfParse("/tftpboot/bucksnort.conf")
    >>> serial_objs = parse.find_objects("^interface Serial")
 
 The assuming we use the configuration in the example above, 
-:func:`~ciscoconfparse.CiscoConfParse.find_objects()` scans the configuration 
+:func:`~nety.CiscoConfParse.find_objects()` scans the configuration 
 for matching config objects and stores a list of 
 :class:`~models_cisco.IOSCfgLine` objects in ``serial_objs``.
 
@@ -248,7 +248,7 @@ Method 2: `list-comprehension`_ to iterate over objects and search children
    >>> qos_intfs
    [<IOSCfgLine # 18 'interface Serial1/1'>]
 
-Method 3: :func:`~ciscoconfparse.CiscoConfParse.find_objects_w_child()`
+Method 3: :func:`~nety.CiscoConfParse.find_objects_w_child()`
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 .. code-block:: python
@@ -263,11 +263,11 @@ Method 3: :func:`~ciscoconfparse.CiscoConfParse.find_objects_w_child()`
 
 You can choose any of these methods to accomplish your task... 
 some might question why we cover the first two methods when 
-:func:`~ciscoconfparse.CiscoConfParse.find_objects_w_child()` solves 
+:func:`~nety.CiscoConfParse.find_objects_w_child()` solves 
 the problem completely.  In this case, they have a point; however, 
-:func:`~ciscoconfparse.CiscoConfParse.find_objects_w_child()` is much slower 
+:func:`~nety.CiscoConfParse.find_objects_w_child()` is much slower 
 when you have more than one child line to inspect per interface, because 
-:func:`~ciscoconfparse.CiscoConfParse.find_objects_w_child()` performs a 
+:func:`~nety.CiscoConfParse.find_objects_w_child()` performs a 
 line-by-line search of the whole configuration line each time it is called.  
 By contrast, Method 1 is more efficient because you could simply call 
 :func:`~models_cisco.IOSCfgLine.re_search_children()` multiple times for each 
@@ -283,15 +283,15 @@ Let's suppose you wanted a list of all interfaces that have CDP enabled; this im
 1.  CDP has not been disabled globally with ``no cdp run``
 2.  The interfaces in question are not configured with ``no cdp enable``
 
-:func:`~ciscoconfparse.CiscoConfParse.find_objects_wo_child` is a function to 
+:func:`~nety.CiscoConfParse.find_objects_wo_child` is a function to 
 find parents without a specific child; it requires arguments similar to 
-:func:`~ciscoconfparse.CiscoConfParse.find_objects_w_child`:
+:func:`~nety.CiscoConfParse.find_objects_w_child`:
 
 - The first argument is a regular expression to match the parents
 - The second argument is a regular expression to match the child's *exclusion*
 
 Since we need to find parents that do not have ``no cdp enable``, we will use 
-:func:`~ciscoconfparse.CiscoConfParse.find_objects_wo_child` for this query.  
+:func:`~nety.CiscoConfParse.find_objects_wo_child` for this query.  
 Note that the script below makes use of a special property of python lists... 
 empty lists test False in Python; thus, we can 
 use ``if not bool(parse.find_objects(r'no cdp run'))`` to ensure that CDP is 
diff --git a/tutorial/ccp_tutorial.rst b/tutorial/ccp_tutorial.rst
index 8163acb..54fffa7 100644
--- a/tutorial/ccp_tutorial.rst
+++ b/tutorial/ccp_tutorial.rst
@@ -3,8 +3,8 @@ CiscoConfParse Tutorial
 =======================
 
 * Search your Cisco configurations with `Python <http://python.org/>`_
-* Code repo on `github <http://github.com/mpenning/ciscoconfparse/>`_
-* `Documentation <http://www.pennington.net/py/ciscoconfparse/>`_
+* Code repo on `github <http://github.com/mpenning/nety/>`_
+* `Documentation <http://www.pennington.net/py/nety/>`_
 * Author: Mike Pennington <mike@pennington.net>
 * Date: 2015-07-04
 
@@ -19,8 +19,8 @@ Installation
 ============
 
 * Assume you're running linux and already have ``pip`` installed
-* The next command will download and install the latest version from `pypi <http://pypi.python.org/pypi/ciscoconfparse/>`_
-* ``pip install --ugprade ciscoconfparse``
+* The next command will download and install the latest version from `pypi <http://pypi.python.org/pypi/nety/>`_
+* ``pip install --ugprade nety``
 
 Examples
 =========
@@ -37,7 +37,7 @@ Search configs
    [GCC 4.7.2] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>>
-   >>> from ciscoconfparse import CiscoConfParse
+   >>> from nety import CiscoConfParse
    >>> parse = CiscoConfParse('/path/to/the/config', syntax='ios')
    >>>
    >>> # Find all interfaces with an access-list...
@@ -57,7 +57,7 @@ Modify configs
    [GCC 4.7.2] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>>
-   >>> from ciscoconfparse import CiscoConfParse
+   >>> from nety import CiscoConfParse
    >>> parse = CiscoConfParse('/path/to/the/config', syntax='ios')
    >>>
    >>> # Standardize switchport configs with 0.5% broadcast storm control
@@ -76,7 +76,7 @@ Diff configs
 
 ::
 
-   >>> from ciscoconfparse import CiscoConfParse
+   >>> from nety import CiscoConfParse
    >>> BASELINE = """!
    ... interface GigabitEthernet0/1
    ...  ip address 10.0.0.1 255.255.255.0
@@ -113,14 +113,14 @@ Notes about diffs
 Parsing Junos
 =============
 
-* Is it possible?  Yes (after `Github issue #17 <https://github.com/mpenning/ciscoconfparse/issues/17>`_)
+* Is it possible?  Yes (after `Github issue #17 <https://github.com/mpenning/nety/issues/17>`_)
 * Be aware that this will convert your Junos configuration to a Cisco-IOS style
 
 .. class:: prettyprint lang-python
 
 ::
 
-   >>> from ciscoconfparse import CiscoConfParse
+   >>> from nety import CiscoConfParse
    >>> parse = CiscoConfParse('configs/sample_01.junos', syntax='junos', comment='#!')
    >>> print '\n'.join(parse.ioscfg[0:5])
    !# Last commit: 2015-06-28 13:00:59 CST by mpenning
@@ -140,8 +140,8 @@ DNS Lookups
 * Thus, it's helpful to have DNS functionality in CiscoConfParse
 * DNS lookup support:
 
-  - Use ciscoconfparse.ccp_util.dns_lookup() for IPv4
-  - Use ciscoconfparse.ccp_util.dns6_lookup() for IPv6
+  - Use nety.ccp_util.dns_lookup() for IPv4
+  - Use nety.ccp_util.dns6_lookup() for IPv6
 
 Lookup DNS A-Record
 -------------------
@@ -150,7 +150,7 @@ Lookup DNS A-Record
 
 ::
 
-   >>> from ciscoconfparse.ccp_util import dns_lookup
+   >>> from nety.ccp_util import dns_lookup
    >>>
    >>> # Return a dictionary with all info...
    >>> dns_lookup('extfw')
@@ -171,7 +171,7 @@ Lookup DNS PTR-Record
 
 ::
 
-   >>> from ciscoconfparse.ccp_util import reverse_dns_lookup
+   >>> from nety.ccp_util import reverse_dns_lookup
    >>>
    >>> # Return a dictionary with all info...
    >>> reverse_dns_lookup('10.10.255.1')
@@ -188,7 +188,7 @@ Factory option
 IOSCfgLine
 ----------
 
-* By default, CiscoConfParse stores config lines in something called an `IOSCfgLine() <http://www.pennington.net/py/ciscoconfparse/api_IOSCfgLine.html>`_
+* By default, CiscoConfParse stores config lines in something called an `IOSCfgLine() <http://www.pennington.net/py/nety/api_IOSCfgLine.html>`_
 
   - ``IOSCfgLine()`` knows the line number
   - ``IOSCfgLine()`` knows where the parents and children are
@@ -197,13 +197,13 @@ IOSCfgLine
 IOSCFGLINE() objects
 --------------------
 
-* By default `IOSCfgLine() <http://www.pennington.net/py/ciscoconfparse/api_IOSCfgLine.html>`_ objects don't pre-parse rich information about the config
+* By default `IOSCfgLine() <http://www.pennington.net/py/nety/api_IOSCfgLine.html>`_ objects don't pre-parse rich information about the config
 
 .. class:: prettyprint lang-python
 
 ::
 
-   >>> from ciscoconfparse import CiscoConfParse
+   >>> from nety import CiscoConfParse
    >>> parse = CiscoConfParse('/path/to/config')
    >>> intf = parse.find_objects('interface GigabitEthernet0/1')[0]
    >>> intf
@@ -223,7 +223,7 @@ Custom line objects
 
 ::
 
-   >>> from ciscoconfparse import CiscoConfParse
+   >>> from nety import CiscoConfParse
    >>> parse = CiscoConfParse('/path/to/config', factory=True)
    >>> intf = parse.find_objects('interface GigabitEthernet0/1')[0]
    >>> intf
@@ -242,7 +242,7 @@ Important information
 * Parsing with ``factory=True`` is *BETA* functionality
 
   - Read the source code for documentation
-  - Only `Cisco IOS <https://github.com/mpenning/ciscoconfparse/blob/master/ciscoconfparse/models_cisco.py>`_ and `Cisco ASA <https://github.com/mpenning/ciscoconfparse/blob/master/ciscoconfparse/models_asa.py>`_ have parsers
+  - Only `Cisco IOS <https://github.com/mpenning/nety/blob/master/nety/models_cisco.py>`_ and `Cisco ASA <https://github.com/mpenning/nety/blob/master/nety/models_asa.py>`_ have parsers
   - Functionality is limited and I'm *slowly* adding more
 
 * ``factory=True`` syntax is somewhat unstable
diff --git a/version_info/version.py b/version_info/version.py
index a234cc0..b288217 100644
--- a/version_info/version.py
+++ b/version_info/version.py
@@ -1,1 +1,1 @@
-from ciscoconfparse.version import __version__, __version_tuple__
\ No newline at end of file
+from nety.version import __version__, __version_tuple__
\ No newline at end of file


Test patch:
diff --git a/tests/conftest.py b/tests/conftest.py
index f9a3d63..d0e3734 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -2,12 +2,12 @@
 import sys
 import os
 THIS_DIR = os.path.dirname(__file__)
-sys.path.insert(0, os.path.join(os.path.abspath(THIS_DIR), "../ciscoconfparse/"))
+sys.path.insert(0, os.path.join(os.path.abspath(THIS_DIR), "../nety/"))
 sys.path.insert(0, os.path.abspath(THIS_DIR))
 
 
 import pytest
-from ciscoconfparse import CiscoConfParse
+from nety import CiscoConfParse
 
 
 c01 = """policy-map QOS_1
diff --git a/tests/excldiff_test.py b/tests/excldiff_test.py
index 977746e..ee2b584 100644
--- a/tests/excldiff_test.py
+++ b/tests/excldiff_test.py
@@ -1,4 +1,4 @@
-from ciscoconfparse import CiscoConfParse
+from nety import CiscoConfParse
 
 ## this is not a valid test yet, because we don't detect parents of a line
 ## that is missing (i.e. 'no passive-interface Vlan500' below)
diff --git a/tests/parse_test.py b/tests/parse_test.py
index 7399786..aa0bce2 100644
--- a/tests/parse_test.py
+++ b/tests/parse_test.py
@@ -1,10 +1,10 @@
 import sys
 import os
 THIS_DIR = os.path.dirname(__file__)
-sys.path.insert(0, os.path.join(os.path.abspath(THIS_DIR), "../ciscoconfparse/"))
+sys.path.insert(0, os.path.join(os.path.abspath(THIS_DIR), "../nety/"))
 
 
-from ciscoconfparse import CiscoConfParse
+from nety import CiscoConfParse
 
 if sys.argv[1]=="1":
     parse = CiscoConfParse('../configs/sample_01.ios', syntax='ios', factory=False)
diff --git a/tests/performance_case.py b/tests/performance_case.py
index 200483e..c972487 100755
--- a/tests/performance_case.py
+++ b/tests/performance_case.py
@@ -4,11 +4,11 @@
 import sys
 import os
 THIS_DIR = os.path.dirname(__file__)
-sys.path.insert(0, os.path.join(os.path.abspath(THIS_DIR), "../ciscoconfparse/"))
+sys.path.insert(0, os.path.join(os.path.abspath(THIS_DIR), "../nety/"))
 
 
 # IGNORE PyFlake's barking here
-from ciscoconfparse import CiscoConfParse
+from nety import CiscoConfParse
 
 if sys.argv[1]=="1":
     run("CiscoConfParse('../configs/sample_01.ios')", sort=2)
diff --git a/tests/test_Ccp_Util.py b/tests/test_Ccp_Util.py
index aad0e96..0dff1ff 100755
--- a/tests/test_Ccp_Util.py
+++ b/tests/test_Ccp_Util.py
@@ -4,7 +4,7 @@
 import re
 import os
 THIS_DIR = os.path.dirname(__file__)
-sys.path.insert(0, os.path.join(os.path.abspath(THIS_DIR), "../ciscoconfparse/"))
+sys.path.insert(0, os.path.join(os.path.abspath(THIS_DIR), "../nety/"))
 
 from ccp_util import _RGX_IPV4ADDR, _RGX_IPV6ADDR
 from ccp_util import IPv4Obj, L4Object
diff --git a/tests/test_CiscoConfParse.py b/tests/test_CiscoConfParse.py
index a80c12a..fd1803c 100644
--- a/tests/test_CiscoConfParse.py
+++ b/tests/test_CiscoConfParse.py
@@ -7,10 +7,10 @@
 import re
 import os
 THIS_DIR = os.path.dirname(__file__)
-sys.path.insert(0, os.path.join(os.path.abspath(THIS_DIR), "../ciscoconfparse/"))
+sys.path.insert(0, os.path.join(os.path.abspath(THIS_DIR), "../nety/"))
 
-from ciscoconfparse import CiscoConfParse, IOSCfgLine, IOSIntfLine
-from ciscoconfparse import CiscoPassword
+from nety import CiscoConfParse, IOSCfgLine, IOSIntfLine
+from nety import CiscoPassword
 from ccp_util import IPv4Obj
 from passlib.hash import cisco_type7
 import pytest
diff --git a/tests/test_Models_Asa.py b/tests/test_Models_Asa.py
index b264407..c74d4c3 100755
--- a/tests/test_Models_Asa.py
+++ b/tests/test_Models_Asa.py
@@ -4,12 +4,12 @@
 import re
 import os
 THIS_DIR = os.path.dirname(__file__)
-sys.path.insert(0, os.path.join(os.path.abspath(THIS_DIR), "../ciscoconfparse/"))
+sys.path.insert(0, os.path.join(os.path.abspath(THIS_DIR), "../nety/"))
 
 import pytest
 from conftest import parse_a01, parse_a01_factory
 
-from ciscoconfparse import CiscoConfParse
+from nety import CiscoConfParse
 from models_asa import ASAObjGroupService
 from ccp_util import L4Object
 from ccp_util import IPv4Obj
diff --git a/tests/test_Models_Cisco.py b/tests/test_Models_Cisco.py
index 5d2cdfb..76412af 100755
--- a/tests/test_Models_Cisco.py
+++ b/tests/test_Models_Cisco.py
@@ -4,9 +4,9 @@
 import re
 import os
 THIS_DIR = os.path.dirname(__file__)
-sys.path.insert(0, os.path.join(os.path.abspath(THIS_DIR), "../ciscoconfparse/"))
+sys.path.insert(0, os.path.join(os.path.abspath(THIS_DIR), "../nety/"))
 
-from ciscoconfparse import CiscoConfParse
+from nety import CiscoConfParse
 from ccp_util import IPv4Obj
 import pytest
 
diff --git a/tests/test_Models_Junos.py b/tests/test_Models_Junos.py
index 535bac1..353c187 100644
--- a/tests/test_Models_Junos.py
+++ b/tests/test_Models_Junos.py
@@ -2,9 +2,9 @@
 import re
 import os
 THIS_DIR = os.path.dirname(__file__)
-sys.path.insert(0, os.path.join(os.path.abspath(THIS_DIR), "../ciscoconfparse/"))
+sys.path.insert(0, os.path.join(os.path.abspath(THIS_DIR), "../nety/"))
 
-from ciscoconfparse import CiscoConfParse
+from nety import CiscoConfParse
 from ccp_util import IPv4Obj
 import pytest