diff --git a/.coveragerc b/.coveragerc index 62d465b56..3f585295c 100644 --- a/.coveragerc +++ b/.coveragerc @@ -24,7 +24,7 @@ omit = */site-packages/ordereddict.py */site-packages/nose/* */__init__.py - /lib/exabgp/dep/* + /src/exabgp/dep/* /qa/* /dev/* /debian/* diff --git a/Dockerfile b/Dockerfile index f6696daf5..2b78d1f03 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,7 +4,7 @@ RUN mkdir -p /src COPY setup.py /src COPY CHANGELOG.rst /src COPY debian/ /src -COPY lib/ /src/lib/ +COPY src/ /src/lib/ RUN pip install --upgrade pip setuptools RUN cd /src && pip install . diff --git a/README.md b/README.md index acde28789..008eccd16 100644 --- a/README.md +++ b/README.md @@ -65,7 +65,7 @@ It is also possible to download the latest archive from github > ./sbin/exabgp --help > ./sbin/exabgp --run healthcheck --help -> env PYTHONPATH=./lib python -m exabgp healthcheck --help +> env PYTHONPATH=./src python -m exabgp healthcheck --help > ./bin/healthcheck --help ``` @@ -79,7 +79,7 @@ or to use git master > ./sbin/exabgp --help > ./sbin/exabgp --run healthcheck --help -> env PYTHONPATH=./lib python -m exabgp healthcheck --help +> env PYTHONPATH=./src python -m exabgp healthcheck --help > ./bin/healthcheck --help ``` @@ -90,17 +90,23 @@ or change git to use any previous release (here 4.2.6) > ./sbin/exabgp --version ``` -once you have the code, it is possible to create a self-contained executable which only requires an install python3 interpreter +It is possible to create a self-contained executable which only requires an installed python3 interpreter ``` > cd exabgp-git > python3 -m zipapp -o /usr/local/sbin/exabgp -m exabgp.application:main -p "/usr/bin/env python3" lib -> /usr/local/sbin/exabgp --version +> /usr/local/sbin/exabgp --version +``` +or +``` +> cd exabgp-git +> release binary /usr/local/sbin/exabgp +> /usr/local/sbin/exabgp --version ``` Multiple versions can be used simultaneously without conflict when ExaBGP is ran from extracted archives and/or local git repositories. -ExaBGP 3.4 and previous versions are python2 applications. ExaBGP 4.0 had support for both Python2 and 3. ExaBGP and later are targeting python3 only. +ExaBGP 3.4 and previous versions are python2 applications. ExaBGP 4.0 had support for both Python2 and 3. current version of ExaBGP are targeting python3 (3.6+) only. ## Upgrade diff --git a/bin/exabgpcli b/bin/exabgpcli index 7b55fdbec..ffe77eaf9 100755 --- a/bin/exabgpcli +++ b/bin/exabgpcli @@ -2,7 +2,7 @@ path="$(cd "$(dirname "$0")"/.. ; pwd)" -export PYTHONPATH="$path"/lib +export PYTHONPATH="$path"/src for INTERPRETER in "$INTERPRETER" python3 pypy3; do INTERPRETER="$(command -v "$INTERPRETER")" && break diff --git a/bin/healthcheck b/bin/healthcheck index 24befcdde..59eab729d 100755 --- a/bin/healthcheck +++ b/bin/healthcheck @@ -2,19 +2,24 @@ path="$(cd "$(dirname "$0")"/.. ; pwd)" -export PYTHONPATH="$path"/lib:/usr/share/exabgp/lib/3.4.4 +export PYTHONPATH="$path"/src -for INTERPRETER in "$INTERPRETER" pypy python2.7 python2.6 python2 python; do - INTERPRETER="$(command -v "$INTERPRETER")" && break +for INTERPRETER in "$INTERPRETER" python3 pypy3; do + INTERPRETER="$(command -v "$INTERPRETER")" && break done +if [ "$INTERPRETER" = "" ]; then + echo "ExaBGP could not find a python3 interpreter" + exit 1 +fi + APPLICATION="$("$INTERPRETER" -c " import sys import os -print [os.path.join(_, 'exabgp', 'application', 'healthcheck.py') +print([os.path.join(_, 'exabgp', 'application', 'healthcheck.py') for _ in sys.path if os.path.isfile('/'.join((_, 'exabgp', 'application', 'healthcheck.py')))][0] -")" +)")" -exec "$INTERPRETER" "$APPLICATION" "$@" +exec env "$INTERPRETER" "$APPLICATION" "$@" diff --git a/dev/bin/unittest b/dev/bin/unittest index 973accc8d..65603f023 100755 --- a/dev/bin/unittest +++ b/dev/bin/unittest @@ -2,9 +2,9 @@ path="$(cd "$(dirname "$0")"/../.. ; pwd)" -export PYTHONPATH=$path/lib +export PYTHONPATH=$path/src -for INTERPRETER in "$INTERPRETER" pypy python2.7 python2.6 python2 python; do +for INTERPRETER in "$INTERPRETER" python3 pypy3; do INTERPRETER="$(command -v "$INTERPRETER")" && break done diff --git a/dev/release/google b/dev/release/google index 1d4e88461..bb54b46d2 100755 --- a/dev/release/google +++ b/dev/release/google @@ -20,7 +20,7 @@ fi # This is not safe against race condition, but I trust my own machine to not be hacked .. build=/tmp -version=`/usr/bin/env python $path/lib/exabgp/version.py` +version=`/usr/bin/env python3 $path/src/exabgp/version.py` name=exabgp-$version destination=$build/$name diff --git a/dev/static/checker b/dev/static/checker deleted file mode 100755 index d5f883959..000000000 --- a/dev/static/checker +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh -env \ - PYTHONPATH=$PYTHONPATH:lib \ - python2.6 \ - /opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/pychecker/checker.py \ - $1 diff --git a/dev/static/flakes b/dev/static/flakes deleted file mode 100755 index f6caa33e6..000000000 --- a/dev/static/flakes +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh -env \ - PYTHONPATH=$PYTHONPATH:lib \ - python2.6 \ - /opt/local/bin/pyflakes-2.6 \ - $1 diff --git a/poetry.lock b/poetry.lock new file mode 100644 index 000000000..d0c23dc29 --- /dev/null +++ b/poetry.lock @@ -0,0 +1,409 @@ +[[package]] +category = "main" +description = "Python package for providing Mozilla's CA Bundle." +name = "certifi" +optional = true +python-versions = "*" +version = "2020.6.20" + +[[package]] +category = "main" +description = "Universal encoding detector for Python 2 and 3" +name = "chardet" +optional = true +python-versions = "*" +version = "3.0.4" + +[[package]] +category = "main" +description = "Code coverage measurement for Python" +name = "coverage" +optional = true +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" +version = "5.2.1" + +[package.extras] +toml = ["toml"] + +[[package]] +category = "main" +description = "Show coverage stats online via coveralls.io" +name = "coveralls" +optional = true +python-versions = ">= 3.5" +version = "2.1.2" + +[package.dependencies] +coverage = ">=4.1,<6.0" +docopt = ">=0.6.1" +requests = ">=1.0.0" + +[package.extras] +yaml = ["PyYAML (>=3.10)"] + +[[package]] +category = "main" +description = "Pythonic argument parser, that will make you smile" +name = "docopt" +optional = true +python-versions = "*" +version = "0.6.2" + +[[package]] +category = "main" +description = "the modular source code checker: pep8 pyflakes and co" +name = "flake8" +optional = true +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" +version = "3.8.3" + +[package.dependencies] +mccabe = ">=0.6.0,<0.7.0" +pycodestyle = ">=2.6.0a1,<2.7.0" +pyflakes = ">=2.2.0,<2.3.0" + +[package.dependencies.importlib-metadata] +python = "<3.8" +version = "*" + +[[package]] +category = "main" +description = "Internationalized Domain Names in Applications (IDNA)" +name = "idna" +optional = true +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "2.10" + +[[package]] +category = "main" +description = "Read metadata from Python packages" +marker = "python_version < \"3.8\"" +name = "importlib-metadata" +optional = true +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" +version = "1.7.0" + +[package.dependencies] +zipp = ">=0.5" + +[package.extras] +docs = ["sphinx", "rst.linker"] +testing = ["packaging", "pep517", "importlib-resources (>=1.3)"] + +[[package]] +category = "main" +description = "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API." +name = "lxml" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, != 3.4.*" +version = "4.5.2" + +[package.extras] +cssselect = ["cssselect (>=0.7)"] +html5 = ["html5lib"] +htmlsoup = ["beautifulsoup4"] +source = ["Cython (>=0.29.7)"] + +[[package]] +category = "main" +description = "McCabe checker, plugin for flake8" +name = "mccabe" +optional = true +python-versions = "*" +version = "0.6.1" + +[[package]] +category = "main" +description = "nose extends unittest to make testing easier" +name = "nose" +optional = true +python-versions = "*" +version = "1.3.7" + +[[package]] +category = "main" +description = "Cross-platform lib for process and system monitoring in Python." +name = "psutil" +optional = true +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "5.7.2" + +[package.extras] +test = ["ipaddress", "mock", "unittest2", "enum34", "pywin32", "wmi"] + +[[package]] +category = "main" +description = "A full-screen, console-based Python debugger" +name = "pudb" +optional = false +python-versions = "*" +version = "2019.2" + +[package.dependencies] +pygments = ">=1.0" +urwid = ">=1.1.1" + +[[package]] +category = "main" +description = "A YANG (RFC 6020/7950) validator and converter" +name = "pyang" +optional = false +python-versions = "*" +version = "2.3.2" + +[package.dependencies] +lxml = "*" + +[[package]] +category = "main" +description = "A pyang plugin to produce a JSON representation of module trees for use in graph libraries" +name = "pyang-jsontree-plugin" +optional = false +python-versions = "*" +version = "0.1" + +[package.dependencies] +pyang = "*" + +[[package]] +category = "main" +description = "Python style guide checker" +name = "pycodestyle" +optional = true +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "2.6.0" + +[[package]] +category = "main" +description = "passive checker of Python programs" +name = "pyflakes" +optional = true +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "2.2.0" + +[[package]] +category = "main" +description = "Pygments is a syntax highlighting package written in Python." +name = "pygments" +optional = false +python-versions = ">=3.5" +version = "2.6.1" + +[[package]] +category = "main" +description = "Python HTTP for Humans." +name = "requests" +optional = true +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +version = "2.24.0" + +[package.dependencies] +certifi = ">=2017.4.17" +chardet = ">=3.0.2,<4" +idna = ">=2.5,<3" +urllib3 = ">=1.21.1,<1.25.0 || >1.25.0,<1.25.1 || >1.25.1,<1.26" + +[package.extras] +security = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)"] +socks = ["PySocks (>=1.5.6,<1.5.7 || >1.5.7)", "win-inet-pton"] + +[[package]] +category = "main" +description = "HTTP library with thread-safe connection pooling, file post, and more." +name = "urllib3" +optional = true +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" +version = "1.25.10" + +[package.extras] +brotli = ["brotlipy (>=0.6.0)"] +secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "pyOpenSSL (>=0.14)", "ipaddress"] +socks = ["PySocks (>=1.5.6,<1.5.7 || >1.5.7,<2.0)"] + +[[package]] +category = "main" +description = "A full-featured console (xterm et al.) user interface library" +name = "urwid" +optional = false +python-versions = "*" +version = "2.1.1" + +[[package]] +category = "main" +description = "Backport of pathlib-compatible object wrapper for zip files" +marker = "python_version < \"3.8\"" +name = "zipp" +optional = true +python-versions = ">=3.6" +version = "3.1.0" + +[package.extras] +docs = ["sphinx", "jaraco.packaging (>=3.2)", "rst.linker (>=1.9)"] +testing = ["jaraco.itertools", "func-timeout"] + +[extras] +debug = ["pudb"] +developer = ["pudb", "flake8", "coveralls", "nose", "psutil"] + +[metadata] +content-hash = "b40064843bb36be46eb587d3801db76652070c94ca6d90beed385920f00a68e5" +lock-version = "1.0" +python-versions = "~3.6 || ~3.7 || ^3.8" # Compatible python versions must be declared here + +[metadata.files] +certifi = [ + {file = "certifi-2020.6.20-py2.py3-none-any.whl", hash = "sha256:8fc0819f1f30ba15bdb34cceffb9ef04d99f420f68eb75d901e9560b8749fc41"}, + {file = "certifi-2020.6.20.tar.gz", hash = "sha256:5930595817496dd21bb8dc35dad090f1c2cd0adfaf21204bf6732ca5d8ee34d3"}, +] +chardet = [ + {file = "chardet-3.0.4-py2.py3-none-any.whl", hash = "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691"}, + {file = "chardet-3.0.4.tar.gz", hash = "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae"}, +] +coverage = [ + {file = "coverage-5.2.1-cp27-cp27m-macosx_10_13_intel.whl", hash = "sha256:40f70f81be4d34f8d491e55936904db5c527b0711b2a46513641a5729783c2e4"}, + {file = "coverage-5.2.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:675192fca634f0df69af3493a48224f211f8db4e84452b08d5fcebb9167adb01"}, + {file = "coverage-5.2.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:2fcc8b58953d74d199a1a4d633df8146f0ac36c4e720b4a1997e9b6327af43a8"}, + {file = "coverage-5.2.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:64c4f340338c68c463f1b56e3f2f0423f7b17ba6c3febae80b81f0e093077f59"}, + {file = "coverage-5.2.1-cp27-cp27m-win32.whl", hash = "sha256:52f185ffd3291196dc1aae506b42e178a592b0b60a8610b108e6ad892cfc1bb3"}, + {file = "coverage-5.2.1-cp27-cp27m-win_amd64.whl", hash = "sha256:30bc103587e0d3df9e52cd9da1dd915265a22fad0b72afe54daf840c984b564f"}, + {file = "coverage-5.2.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:9ea749fd447ce7fb1ac71f7616371f04054d969d412d37611716721931e36efd"}, + {file = "coverage-5.2.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:ce7866f29d3025b5b34c2e944e66ebef0d92e4a4f2463f7266daa03a1332a651"}, + {file = "coverage-5.2.1-cp35-cp35m-macosx_10_13_x86_64.whl", hash = "sha256:4869ab1c1ed33953bb2433ce7b894a28d724b7aa76c19b11e2878034a4e4680b"}, + {file = "coverage-5.2.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:a3ee9c793ffefe2944d3a2bd928a0e436cd0ac2d9e3723152d6fd5398838ce7d"}, + {file = "coverage-5.2.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:28f42dc5172ebdc32622a2c3f7ead1b836cdbf253569ae5673f499e35db0bac3"}, + {file = "coverage-5.2.1-cp35-cp35m-win32.whl", hash = "sha256:e26c993bd4b220429d4ec8c1468eca445a4064a61c74ca08da7429af9bc53bb0"}, + {file = "coverage-5.2.1-cp35-cp35m-win_amd64.whl", hash = "sha256:4186fc95c9febeab5681bc3248553d5ec8c2999b8424d4fc3a39c9cba5796962"}, + {file = "coverage-5.2.1-cp36-cp36m-macosx_10_13_x86_64.whl", hash = "sha256:b360d8fd88d2bad01cb953d81fd2edd4be539df7bfec41e8753fe9f4456a5082"}, + {file = "coverage-5.2.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:1adb6be0dcef0cf9434619d3b892772fdb48e793300f9d762e480e043bd8e716"}, + {file = "coverage-5.2.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:098a703d913be6fbd146a8c50cc76513d726b022d170e5e98dc56d958fd592fb"}, + {file = "coverage-5.2.1-cp36-cp36m-win32.whl", hash = "sha256:962c44070c281d86398aeb8f64e1bf37816a4dfc6f4c0f114756b14fc575621d"}, + {file = "coverage-5.2.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b1ed2bdb27b4c9fc87058a1cb751c4df8752002143ed393899edb82b131e0546"}, + {file = "coverage-5.2.1-cp37-cp37m-macosx_10_13_x86_64.whl", hash = "sha256:c890728a93fffd0407d7d37c1e6083ff3f9f211c83b4316fae3778417eab9811"}, + {file = "coverage-5.2.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:538f2fd5eb64366f37c97fdb3077d665fa946d2b6d95447622292f38407f9258"}, + {file = "coverage-5.2.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:27ca5a2bc04d68f0776f2cdcb8bbd508bbe430a7bf9c02315cd05fb1d86d0034"}, + {file = "coverage-5.2.1-cp37-cp37m-win32.whl", hash = "sha256:aab75d99f3f2874733946a7648ce87a50019eb90baef931698f96b76b6769a46"}, + {file = "coverage-5.2.1-cp37-cp37m-win_amd64.whl", hash = "sha256:c2ff24df02a125b7b346c4c9078c8936da06964cc2d276292c357d64378158f8"}, + {file = "coverage-5.2.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:304fbe451698373dc6653772c72c5d5e883a4aadaf20343592a7abb2e643dae0"}, + {file = "coverage-5.2.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:c96472b8ca5dc135fb0aa62f79b033f02aa434fb03a8b190600a5ae4102df1fd"}, + {file = "coverage-5.2.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:8505e614c983834239f865da2dd336dcf9d72776b951d5dfa5ac36b987726e1b"}, + {file = "coverage-5.2.1-cp38-cp38-win32.whl", hash = "sha256:700997b77cfab016533b3e7dbc03b71d33ee4df1d79f2463a318ca0263fc29dd"}, + {file = "coverage-5.2.1-cp38-cp38-win_amd64.whl", hash = "sha256:46794c815e56f1431c66d81943fa90721bb858375fb36e5903697d5eef88627d"}, + {file = "coverage-5.2.1-cp39-cp39-macosx_10_13_x86_64.whl", hash = "sha256:16042dc7f8e632e0dcd5206a5095ebd18cb1d005f4c89694f7f8aafd96dd43a3"}, + {file = "coverage-5.2.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:c1bbb628ed5192124889b51204de27c575b3ffc05a5a91307e7640eff1d48da4"}, + {file = "coverage-5.2.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:4f6428b55d2916a69f8d6453e48a505c07b2245653b0aa9f0dee38785939f5e4"}, + {file = "coverage-5.2.1-cp39-cp39-win32.whl", hash = "sha256:9e536783a5acee79a9b308be97d3952b662748c4037b6a24cbb339dc7ed8eb89"}, + {file = "coverage-5.2.1-cp39-cp39-win_amd64.whl", hash = "sha256:b8f58c7db64d8f27078cbf2a4391af6aa4e4767cc08b37555c4ae064b8558d9b"}, + {file = "coverage-5.2.1.tar.gz", hash = "sha256:a34cb28e0747ea15e82d13e14de606747e9e484fb28d63c999483f5d5188e89b"}, +] +coveralls = [ + {file = "coveralls-2.1.2-py2.py3-none-any.whl", hash = "sha256:b3b60c17b03a0dee61952a91aed6f131e0b2ac8bd5da909389c53137811409e1"}, + {file = "coveralls-2.1.2.tar.gz", hash = "sha256:4430b862baabb3cf090d36d84d331966615e4288d8a8c5957e0fd456d0dd8bd6"}, +] +docopt = [ + {file = "docopt-0.6.2.tar.gz", hash = "sha256:49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491"}, +] +flake8 = [ + {file = "flake8-3.8.3-py2.py3-none-any.whl", hash = "sha256:15e351d19611c887e482fb960eae4d44845013cc142d42896e9862f775d8cf5c"}, + {file = "flake8-3.8.3.tar.gz", hash = "sha256:f04b9fcbac03b0a3e58c0ab3a0ecc462e023a9faf046d57794184028123aa208"}, +] +idna = [ + {file = "idna-2.10-py2.py3-none-any.whl", hash = "sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0"}, + {file = "idna-2.10.tar.gz", hash = "sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6"}, +] +importlib-metadata = [ + {file = "importlib_metadata-1.7.0-py2.py3-none-any.whl", hash = "sha256:dc15b2969b4ce36305c51eebe62d418ac7791e9a157911d58bfb1f9ccd8e2070"}, + {file = "importlib_metadata-1.7.0.tar.gz", hash = "sha256:90bb658cdbbf6d1735b6341ce708fc7024a3e14e99ffdc5783edea9f9b077f83"}, +] +lxml = [ + {file = "lxml-4.5.2-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:74f48ec98430e06c1fa8949b49ebdd8d27ceb9df8d3d1c92e1fdc2773f003f20"}, + {file = "lxml-4.5.2-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:e70d4e467e243455492f5de463b72151cc400710ac03a0678206a5f27e79ddef"}, + {file = "lxml-4.5.2-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:7ad7906e098ccd30d8f7068030a0b16668ab8aa5cda6fcd5146d8d20cbaa71b5"}, + {file = "lxml-4.5.2-cp27-cp27m-win32.whl", hash = "sha256:92282c83547a9add85ad658143c76a64a8d339028926d7dc1998ca029c88ea6a"}, + {file = "lxml-4.5.2-cp27-cp27m-win_amd64.whl", hash = "sha256:05a444b207901a68a6526948c7cc8f9fe6d6f24c70781488e32fd74ff5996e3f"}, + {file = "lxml-4.5.2-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:94150231f1e90c9595ccc80d7d2006c61f90a5995db82bccbca7944fd457f0f6"}, + {file = "lxml-4.5.2-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:bea760a63ce9bba566c23f726d72b3c0250e2fa2569909e2d83cda1534c79443"}, + {file = "lxml-4.5.2-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:c3f511a3c58676147c277eff0224c061dd5a6a8e1373572ac817ac6324f1b1e0"}, + {file = "lxml-4.5.2-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:59daa84aef650b11bccd18f99f64bfe44b9f14a08a28259959d33676554065a1"}, + {file = "lxml-4.5.2-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:c9d317efde4bafbc1561509bfa8a23c5cab66c44d49ab5b63ff690f5159b2304"}, + {file = "lxml-4.5.2-cp35-cp35m-win32.whl", hash = "sha256:9dc9006dcc47e00a8a6a029eb035c8f696ad38e40a27d073a003d7d1443f5d88"}, + {file = "lxml-4.5.2-cp35-cp35m-win_amd64.whl", hash = "sha256:08fc93257dcfe9542c0a6883a25ba4971d78297f63d7a5a26ffa34861ca78730"}, + {file = "lxml-4.5.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:121b665b04083a1e85ff1f5243d4a93aa1aaba281bc12ea334d5a187278ceaf1"}, + {file = "lxml-4.5.2-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:5591c4164755778e29e69b86e425880f852464a21c7bb53c7ea453bbe2633bbe"}, + {file = "lxml-4.5.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:cc411ad324a4486b142c41d9b2b6a722c534096963688d879ea6fa8a35028258"}, + {file = "lxml-4.5.2-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:1fa21263c3aba2b76fd7c45713d4428dbcc7644d73dcf0650e9d344e433741b3"}, + {file = "lxml-4.5.2-cp36-cp36m-win32.whl", hash = "sha256:786aad2aa20de3dbff21aab86b2fb6a7be68064cbbc0219bde414d3a30aa47ae"}, + {file = "lxml-4.5.2-cp36-cp36m-win_amd64.whl", hash = "sha256:e1cacf4796b20865789083252186ce9dc6cc59eca0c2e79cca332bdff24ac481"}, + {file = "lxml-4.5.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:80a38b188d20c0524fe8959c8ce770a8fdf0e617c6912d23fc97c68301bb9aba"}, + {file = "lxml-4.5.2-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:ecc930ae559ea8a43377e8b60ca6f8d61ac532fc57efb915d899de4a67928efd"}, + {file = "lxml-4.5.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:a76979f728dd845655026ab991df25d26379a1a8fc1e9e68e25c7eda43004bed"}, + {file = "lxml-4.5.2-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:cfd7c5dd3c35c19cec59c63df9571c67c6d6e5c92e0fe63517920e97f61106d1"}, + {file = "lxml-4.5.2-cp37-cp37m-win32.whl", hash = "sha256:5a9c8d11aa2c8f8b6043d845927a51eb9102eb558e3f936df494e96393f5fd3e"}, + {file = "lxml-4.5.2-cp37-cp37m-win_amd64.whl", hash = "sha256:4b4a111bcf4b9c948e020fd207f915c24a6de3f1adc7682a2d92660eb4e84f1a"}, + {file = "lxml-4.5.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5dd20538a60c4cc9a077d3b715bb42307239fcd25ef1ca7286775f95e9e9a46d"}, + {file = "lxml-4.5.2-cp38-cp38-manylinux1_i686.whl", hash = "sha256:2b30aa2bcff8e958cd85d907d5109820b01ac511eae5b460803430a7404e34d7"}, + {file = "lxml-4.5.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:aa8eba3db3d8761db161003e2d0586608092e217151d7458206e243be5a43843"}, + {file = "lxml-4.5.2-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:8f0ec6b9b3832e0bd1d57af41f9238ea7709bbd7271f639024f2fc9d3bb01293"}, + {file = "lxml-4.5.2-cp38-cp38-win32.whl", hash = "sha256:107781b213cf7201ec3806555657ccda67b1fccc4261fb889ef7fc56976db81f"}, + {file = "lxml-4.5.2-cp38-cp38-win_amd64.whl", hash = "sha256:f161af26f596131b63b236372e4ce40f3167c1b5b5d459b29d2514bd8c9dc9ee"}, + {file = "lxml-4.5.2.tar.gz", hash = "sha256:cdc13a1682b2a6241080745b1953719e7fe0850b40a5c71ca574f090a1391df6"}, +] +mccabe = [ + {file = "mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"}, + {file = "mccabe-0.6.1.tar.gz", hash = "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"}, +] +nose = [ + {file = "nose-1.3.7-py2-none-any.whl", hash = "sha256:dadcddc0aefbf99eea214e0f1232b94f2fa9bd98fa8353711dacb112bfcbbb2a"}, + {file = "nose-1.3.7-py3-none-any.whl", hash = "sha256:9ff7c6cc443f8c51994b34a667bbcf45afd6d945be7477b52e97516fd17c53ac"}, + {file = "nose-1.3.7.tar.gz", hash = "sha256:f1bffef9cbc82628f6e7d7b40d7e255aefaa1adb6a1b1d26c69a8b79e6208a98"}, +] +psutil = [ + {file = "psutil-5.7.2-cp27-none-win32.whl", hash = "sha256:f2018461733b23f308c298653c8903d32aaad7873d25e1d228765e91ae42c3f2"}, + {file = "psutil-5.7.2-cp27-none-win_amd64.whl", hash = "sha256:66c18ca7680a31bf16ee22b1d21b6397869dda8059dbdb57d9f27efa6615f195"}, + {file = "psutil-5.7.2-cp35-cp35m-win32.whl", hash = "sha256:5e9d0f26d4194479a13d5f4b3798260c20cecf9ac9a461e718eb59ea520a360c"}, + {file = "psutil-5.7.2-cp35-cp35m-win_amd64.whl", hash = "sha256:4080869ed93cce662905b029a1770fe89c98787e543fa7347f075ade761b19d6"}, + {file = "psutil-5.7.2-cp36-cp36m-win32.whl", hash = "sha256:d8a82162f23c53b8525cf5f14a355f5d1eea86fa8edde27287dd3a98399e4fdf"}, + {file = "psutil-5.7.2-cp36-cp36m-win_amd64.whl", hash = "sha256:0ee3c36428f160d2d8fce3c583a0353e848abb7de9732c50cf3356dd49ad63f8"}, + {file = "psutil-5.7.2-cp37-cp37m-win32.whl", hash = "sha256:ff1977ba1a5f71f89166d5145c3da1cea89a0fdb044075a12c720ee9123ec818"}, + {file = "psutil-5.7.2-cp37-cp37m-win_amd64.whl", hash = "sha256:a5b120bb3c0c71dfe27551f9da2f3209a8257a178ed6c628a819037a8df487f1"}, + {file = "psutil-5.7.2-cp38-cp38-win32.whl", hash = "sha256:10512b46c95b02842c225f58fa00385c08fa00c68bac7da2d9a58ebe2c517498"}, + {file = "psutil-5.7.2-cp38-cp38-win_amd64.whl", hash = "sha256:68d36986ded5dac7c2dcd42f2682af1db80d4bce3faa126a6145c1637e1b559f"}, + {file = "psutil-5.7.2.tar.gz", hash = "sha256:90990af1c3c67195c44c9a889184f84f5b2320dce3ee3acbd054e3ba0b4a7beb"}, +] +pudb = [ + {file = "pudb-2019.2.tar.gz", hash = "sha256:e8f0ea01b134d802872184b05bffc82af29a1eb2f9374a277434b932d68f58dc"}, +] +pyang = [ + {file = "pyang-2.3.2-py2.py3-none-any.whl", hash = "sha256:70dc510e401fe5d9aa49b9790d3e7e5afdde4ba9ee0dc3bcf8c528515c8ac358"}, + {file = "pyang-2.3.2.tar.gz", hash = "sha256:dcc5e3332e72835072a54eeb4ad36ff82e2898663ae7685502255656cb8d391b"}, +] +pyang-jsontree-plugin = [ + {file = "pyang-jsontree-plugin-0.1.tar.gz", hash = "sha256:89fb3216c61ec034f3fa6bc4a82fea457f41ac3b18cdf2b8987f361ff5031983"}, + {file = "pyang_jsontree_plugin-0.1-py2.py3-none-any.whl", hash = "sha256:91da3626d79185a06f85597729419a8375ebfa6fc4d705e5cc6128f8e7878fc6"}, +] +pycodestyle = [ + {file = "pycodestyle-2.6.0-py2.py3-none-any.whl", hash = "sha256:2295e7b2f6b5bd100585ebcb1f616591b652db8a741695b3d8f5d28bdc934367"}, + {file = "pycodestyle-2.6.0.tar.gz", hash = "sha256:c58a7d2815e0e8d7972bf1803331fb0152f867bd89adf8a01dfd55085434192e"}, +] +pyflakes = [ + {file = "pyflakes-2.2.0-py2.py3-none-any.whl", hash = "sha256:0d94e0e05a19e57a99444b6ddcf9a6eb2e5c68d3ca1e98e90707af8152c90a92"}, + {file = "pyflakes-2.2.0.tar.gz", hash = "sha256:35b2d75ee967ea93b55750aa9edbbf72813e06a66ba54438df2cfac9e3c27fc8"}, +] +pygments = [ + {file = "Pygments-2.6.1-py3-none-any.whl", hash = "sha256:ff7a40b4860b727ab48fad6360eb351cc1b33cbf9b15a0f689ca5353e9463324"}, + {file = "Pygments-2.6.1.tar.gz", hash = "sha256:647344a061c249a3b74e230c739f434d7ea4d8b1d5f3721bc0f3558049b38f44"}, +] +requests = [ + {file = "requests-2.24.0-py2.py3-none-any.whl", hash = "sha256:fe75cc94a9443b9246fc7049224f75604b113c36acb93f87b80ed42c44cbb898"}, + {file = "requests-2.24.0.tar.gz", hash = "sha256:b3559a131db72c33ee969480840fff4bb6dd111de7dd27c8ee1f820f4f00231b"}, +] +urllib3 = [ + {file = "urllib3-1.25.10-py2.py3-none-any.whl", hash = "sha256:e7983572181f5e1522d9c98453462384ee92a0be7fac5f1413a1e35c56cc0461"}, + {file = "urllib3-1.25.10.tar.gz", hash = "sha256:91056c15fa70756691db97756772bb1eb9678fa585d9184f24534b100dc60f4a"}, +] +urwid = [ + {file = "urwid-2.1.1.tar.gz", hash = "sha256:7870866e35b00b71b0c9ccdd1281c8e7fac3806d60b9c1075c95dd5dad88d526"}, +] +zipp = [ + {file = "zipp-3.1.0-py3-none-any.whl", hash = "sha256:aa36550ff0c0b7ef7fa639055d797116ee891440eac1a56f378e2d3179e0320b"}, + {file = "zipp-3.1.0.tar.gz", hash = "sha256:c599e4d75c98f6798c509911d08a22e6c021d074469042177c8c86fb92eefd96"}, +] diff --git a/pyproject.toml b/pyproject.toml index 7ede5ae83..5ea1d44a5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,16 +7,15 @@ requires = ["setuptools", "wheel"] # PEP 508 specifications. [tool.poetry] name = 'exabgp' version = '5.0.0' -description = 'exabgp' +description = 'BGP swiss army knife' authors = [ 'Thomas Mangin ' ] readme = 'README.md' repository = 'https://github.com/exa-networks/exabgp' homepage = 'https://github.com/exa-networks/exabgp' -license = 'BSD 3-Clause License' +license = 'BSD-3-Clause' keywords = ['bgp', 'ddos-protection', 'health-check', 'flowspec', 'bgp-ls', 'mpls', 'vpls'] - classifiers = [ 'Development Status :: 5 - Production/Stable', 'Environment :: Console', @@ -30,15 +29,32 @@ classifiers = [ 'Topic :: Internet', ] +# packages = [ +# { include = "my_package" }, +# { include = "my_other_package", format = "sdist" }, +# ] +# include = ["CHANGELOG.md"] +# exclude = ["my_package/excluded.py"] + +# [[tool.poetry.source]] +# name = 'private' +# url = 'http://example.com/simple' + [tool.poetry.dependencies] python = "~3.6 || ~3.7 || ^3.8" # Compatible python versions must be declared here +pyang = "^2.3.2" +pyang-jsontree-plugin = "^0.1" # Optional dependencies (development) -# pudb -# flake8 = { optional = true } -# coveralls = { optional = true } -# nose = { optional = true } -# psutil = { optional = true } +pudb = "^2019.2" +flake8 = { version="^3.8.3", optional = true } +coveralls = { version="2.1.2", optional = true } +nose = { version="1.3.7", optional = true } +psutil = { version="5.7.2", optional = true } + +[tool.poetry.extras] +debug = ["pudb"] +developer = ["pudb", "flake8", "coveralls", "nose", "psutil"] [tool.poetry.scripts] exabgp = 'exabgp.application.main:main' @@ -62,6 +78,7 @@ select = 'B,C,E,F,W,T4,B9' # E131 continuation line unaligned for hanging indent # the last , is required otherwise the last error ignore is not applied ignore = 'E222,E231,E241,E131,E203,E266,E501,W503,F403,F401,' +variable-rgx = "[a-z_][a-z0-9_]{0,30}$" # pycodestyle (formerly called pep8) [pycodestyle] diff --git a/qa/bin/parsing b/qa/bin/parsing index c8b62e27c..41bfa84e5 100755 --- a/qa/bin/parsing +++ b/qa/bin/parsing @@ -18,7 +18,7 @@ case $dirname in ;; esac -export PYTHONPATH=$path/lib +export PYTHONPATH=$path/src cd $path/etc/exabgp > /dev/null names=`ls *.conf` diff --git a/qa/bin/rmpyc b/qa/bin/rmpyc index 95c568bea..78eaf6d59 100755 --- a/qa/bin/rmpyc +++ b/qa/bin/rmpyc @@ -2,7 +2,7 @@ path="$(cd "$(dirname "$0")"/../.. ; pwd)" -export PYTHONPATH="$path"/lib +export PYTHONPATH="$path"/src for INTERPRETER in "$INTERPRETER" pypy python2.7 python2.6 python2 python; do INTERPRETER="$(command -v "$INTERPRETER")" && break diff --git a/release b/release index 9a244af84..da3fad7de 100755 --- a/release +++ b/release @@ -23,11 +23,11 @@ CHANGELOG = 'CHANGELOG.rst' class Path: root = os.path.join(os.getcwd(), os.path.dirname(sys.argv[0])) changelog = os.path.join(root, CHANGELOG) - lib_exa = os.path.join(root, 'lib/exabgp') - version = os.path.join(root, 'lib/exabgp/version.py') + lib_exa = os.path.join(root, 'src/exabgp') + version = os.path.join(root, 'src/exabgp/version.py') debian = os.path.join(root, 'debian/changelog') - egg = os.path.join(root, 'lib/exabgp.egg-info') - build_exabgp = os.path.join(root, 'build/lib/exabgp') + egg = os.path.join(root, 'src/exabgp.egg-info') + build_exabgp = os.path.join(root, 'build/src/exabgp') build_root = os.path.join(root, 'build') @classmethod @@ -168,7 +168,7 @@ class Git(Command): commit = None for line in os.popen('git status').read().split('\n'): if 'modified:' in line: - if 'lib/exabgp/version.py' in line or 'debian/changelog' in line or 'README' in line: + if 'src/exabgp/version.py' in line or 'debian/changelog' in line or 'README' in line: if commit is not False: commit = True else: @@ -208,7 +208,7 @@ def release_github(args): print('valid versions are:', ', '.join(candidates)) print('this release is not one of the candidates') - print('updating lib/exabgp/version.py') + print('updating src/exabgp/version.py') Version.set(release, Git.head_commit()) print('updating debian/changelog') Debian.set(release) @@ -288,14 +288,14 @@ def release_pypi(args): def remove_cache(): - for name in glob.glob('./lib/*/__pycache__'): + for name in glob.glob('./src/*/__pycache__'): shutil.rmtree(name) - for name in glob.glob('./lib/*/*/__pycache__'): + for name in glob.glob('./src/*/*/__pycache__'): shutil.rmtree(name) - for name in glob.glob('./lib/*/*.pyc'): + for name in glob.glob('./src/*/*.pyc'): os.remove(name) - for name in glob.glob('./lib/*/*/*.pyc'): + for name in glob.glob('./src/*/*/*.pyc'): os.remove(name) @@ -307,14 +307,14 @@ def generate_binary(args): sys.exit('zipapp is only available with python 3.5+') FOLDER = os.path.dirname(os.path.realpath(__file__)) - IMPORT = os.path.abspath(os.path.join(FOLDER, 'lib')) + IMPORT = os.path.abspath(os.path.join(FOLDER, 'src')) if not os.path.exists(IMPORT): sys.exit(f'could not import "{IMPORT}"') sys.path = [IMPORT] params = { - 'source': 'lib', + 'source': 'src', 'target': target, 'interpreter': '/usr/bin/env python3', 'main': 'exabgp.application.main:main', diff --git a/sbin/exabgp b/sbin/exabgp index 0b7d9b70e..3beec5a87 100755 --- a/sbin/exabgp +++ b/sbin/exabgp @@ -16,7 +16,7 @@ fi path="$(cd "$(dirname "$0")"/.. ; pwd)" export EXABGP_ROOT=$path -export PYTHONPATH="$path"/lib +export PYTHONPATH="$path"/src # Prefer `python` binary when in a venv INTS="$INTERPRETER python3 pypy3 python pyp" diff --git a/service/bgp-service-ip/run b/service/bgp-service-ip/run index 4d147ada8..18523653e 100755 --- a/service/bgp-service-ip/run +++ b/service/bgp-service-ip/run @@ -1,2 +1,2 @@ #!/bin/sh -exec nice --4 env PYTHONPATH=/opt/exabgp/lib setuidgid nobody `which python` /opt/exabgp/lib/exabgp/application/bgp.py /opt/exabgp/etc/exabgp/service-ip.txt 2>&1 +exec nice --4 env PYTHONPATH=/opt/exabgp/src setuidgid nobody `which python` /opt/exabgp/src/exabgp/application/bgp.py /opt/exabgp/etc/exabgp/service-ip.txt 2>&1 diff --git a/lib/exabgp/__init__.py b/src/exabgp/__init__.py similarity index 100% rename from lib/exabgp/__init__.py rename to src/exabgp/__init__.py diff --git a/lib/exabgp/__main__.py b/src/exabgp/__main__.py similarity index 100% rename from lib/exabgp/__main__.py rename to src/exabgp/__main__.py diff --git a/lib/exabgp/application/__init__.py b/src/exabgp/application/__init__.py similarity index 100% rename from lib/exabgp/application/__init__.py rename to src/exabgp/application/__init__.py diff --git a/lib/exabgp/application/cli.py b/src/exabgp/application/cli.py similarity index 100% rename from lib/exabgp/application/cli.py rename to src/exabgp/application/cli.py diff --git a/lib/exabgp/application/decode.py b/src/exabgp/application/decode.py similarity index 100% rename from lib/exabgp/application/decode.py rename to src/exabgp/application/decode.py diff --git a/lib/exabgp/application/environ.py b/src/exabgp/application/environ.py similarity index 100% rename from lib/exabgp/application/environ.py rename to src/exabgp/application/environ.py diff --git a/lib/exabgp/application/flow.py b/src/exabgp/application/flow.py similarity index 100% rename from lib/exabgp/application/flow.py rename to src/exabgp/application/flow.py diff --git a/lib/exabgp/application/healthcheck.py b/src/exabgp/application/healthcheck.py similarity index 100% rename from lib/exabgp/application/healthcheck.py rename to src/exabgp/application/healthcheck.py diff --git a/lib/exabgp/application/main.py b/src/exabgp/application/main.py similarity index 100% rename from lib/exabgp/application/main.py rename to src/exabgp/application/main.py diff --git a/lib/exabgp/application/netlink.py b/src/exabgp/application/netlink.py similarity index 100% rename from lib/exabgp/application/netlink.py rename to src/exabgp/application/netlink.py diff --git a/lib/exabgp/application/pipe.py b/src/exabgp/application/pipe.py similarity index 100% rename from lib/exabgp/application/pipe.py rename to src/exabgp/application/pipe.py diff --git a/lib/exabgp/application/server.py b/src/exabgp/application/server.py similarity index 100% rename from lib/exabgp/application/server.py rename to src/exabgp/application/server.py diff --git a/lib/exabgp/application/tojson.py b/src/exabgp/application/tojson.py similarity index 100% rename from lib/exabgp/application/tojson.py rename to src/exabgp/application/tojson.py diff --git a/lib/exabgp/application/validate.py b/src/exabgp/application/validate.py similarity index 100% rename from lib/exabgp/application/validate.py rename to src/exabgp/application/validate.py diff --git a/lib/exabgp/application/version.py b/src/exabgp/application/version.py similarity index 100% rename from lib/exabgp/application/version.py rename to src/exabgp/application/version.py diff --git a/lib/exabgp/bgp/__init__.py b/src/exabgp/bgp/__init__.py similarity index 100% rename from lib/exabgp/bgp/__init__.py rename to src/exabgp/bgp/__init__.py diff --git a/lib/exabgp/bgp/fsm.py b/src/exabgp/bgp/fsm.py similarity index 100% rename from lib/exabgp/bgp/fsm.py rename to src/exabgp/bgp/fsm.py diff --git a/lib/exabgp/bgp/message/__init__.py b/src/exabgp/bgp/message/__init__.py similarity index 100% rename from lib/exabgp/bgp/message/__init__.py rename to src/exabgp/bgp/message/__init__.py diff --git a/lib/exabgp/bgp/message/direction.py b/src/exabgp/bgp/message/direction.py similarity index 100% rename from lib/exabgp/bgp/message/direction.py rename to src/exabgp/bgp/message/direction.py diff --git a/lib/exabgp/bgp/message/keepalive.py b/src/exabgp/bgp/message/keepalive.py similarity index 100% rename from lib/exabgp/bgp/message/keepalive.py rename to src/exabgp/bgp/message/keepalive.py diff --git a/lib/exabgp/bgp/message/message.py b/src/exabgp/bgp/message/message.py similarity index 100% rename from lib/exabgp/bgp/message/message.py rename to src/exabgp/bgp/message/message.py diff --git a/lib/exabgp/bgp/message/nop.py b/src/exabgp/bgp/message/nop.py similarity index 100% rename from lib/exabgp/bgp/message/nop.py rename to src/exabgp/bgp/message/nop.py diff --git a/lib/exabgp/bgp/message/notification.py b/src/exabgp/bgp/message/notification.py similarity index 100% rename from lib/exabgp/bgp/message/notification.py rename to src/exabgp/bgp/message/notification.py diff --git a/lib/exabgp/bgp/message/open/__init__.py b/src/exabgp/bgp/message/open/__init__.py similarity index 100% rename from lib/exabgp/bgp/message/open/__init__.py rename to src/exabgp/bgp/message/open/__init__.py diff --git a/lib/exabgp/bgp/message/open/asn.py b/src/exabgp/bgp/message/open/asn.py similarity index 100% rename from lib/exabgp/bgp/message/open/asn.py rename to src/exabgp/bgp/message/open/asn.py diff --git a/lib/exabgp/bgp/message/open/capability/__init__.py b/src/exabgp/bgp/message/open/capability/__init__.py similarity index 100% rename from lib/exabgp/bgp/message/open/capability/__init__.py rename to src/exabgp/bgp/message/open/capability/__init__.py diff --git a/lib/exabgp/bgp/message/open/capability/addpath.py b/src/exabgp/bgp/message/open/capability/addpath.py similarity index 100% rename from lib/exabgp/bgp/message/open/capability/addpath.py rename to src/exabgp/bgp/message/open/capability/addpath.py diff --git a/lib/exabgp/bgp/message/open/capability/asn4.py b/src/exabgp/bgp/message/open/capability/asn4.py similarity index 100% rename from lib/exabgp/bgp/message/open/capability/asn4.py rename to src/exabgp/bgp/message/open/capability/asn4.py diff --git a/lib/exabgp/bgp/message/open/capability/capabilities.py b/src/exabgp/bgp/message/open/capability/capabilities.py similarity index 100% rename from lib/exabgp/bgp/message/open/capability/capabilities.py rename to src/exabgp/bgp/message/open/capability/capabilities.py diff --git a/lib/exabgp/bgp/message/open/capability/capability.py b/src/exabgp/bgp/message/open/capability/capability.py similarity index 100% rename from lib/exabgp/bgp/message/open/capability/capability.py rename to src/exabgp/bgp/message/open/capability/capability.py diff --git a/lib/exabgp/bgp/message/open/capability/extended.py b/src/exabgp/bgp/message/open/capability/extended.py similarity index 100% rename from lib/exabgp/bgp/message/open/capability/extended.py rename to src/exabgp/bgp/message/open/capability/extended.py diff --git a/lib/exabgp/bgp/message/open/capability/graceful.py b/src/exabgp/bgp/message/open/capability/graceful.py similarity index 100% rename from lib/exabgp/bgp/message/open/capability/graceful.py rename to src/exabgp/bgp/message/open/capability/graceful.py diff --git a/lib/exabgp/bgp/message/open/capability/hostname.py b/src/exabgp/bgp/message/open/capability/hostname.py similarity index 100% rename from lib/exabgp/bgp/message/open/capability/hostname.py rename to src/exabgp/bgp/message/open/capability/hostname.py diff --git a/lib/exabgp/bgp/message/open/capability/mp.py b/src/exabgp/bgp/message/open/capability/mp.py similarity index 100% rename from lib/exabgp/bgp/message/open/capability/mp.py rename to src/exabgp/bgp/message/open/capability/mp.py diff --git a/lib/exabgp/bgp/message/open/capability/ms.py b/src/exabgp/bgp/message/open/capability/ms.py similarity index 100% rename from lib/exabgp/bgp/message/open/capability/ms.py rename to src/exabgp/bgp/message/open/capability/ms.py diff --git a/lib/exabgp/bgp/message/open/capability/negotiated.py b/src/exabgp/bgp/message/open/capability/negotiated.py similarity index 100% rename from lib/exabgp/bgp/message/open/capability/negotiated.py rename to src/exabgp/bgp/message/open/capability/negotiated.py diff --git a/lib/exabgp/bgp/message/open/capability/nexthop.py b/src/exabgp/bgp/message/open/capability/nexthop.py similarity index 100% rename from lib/exabgp/bgp/message/open/capability/nexthop.py rename to src/exabgp/bgp/message/open/capability/nexthop.py diff --git a/lib/exabgp/bgp/message/open/capability/operational.py b/src/exabgp/bgp/message/open/capability/operational.py similarity index 100% rename from lib/exabgp/bgp/message/open/capability/operational.py rename to src/exabgp/bgp/message/open/capability/operational.py diff --git a/lib/exabgp/bgp/message/open/capability/refresh.py b/src/exabgp/bgp/message/open/capability/refresh.py similarity index 100% rename from lib/exabgp/bgp/message/open/capability/refresh.py rename to src/exabgp/bgp/message/open/capability/refresh.py diff --git a/lib/exabgp/bgp/message/open/capability/unknown.py b/src/exabgp/bgp/message/open/capability/unknown.py similarity index 100% rename from lib/exabgp/bgp/message/open/capability/unknown.py rename to src/exabgp/bgp/message/open/capability/unknown.py diff --git a/lib/exabgp/bgp/message/open/holdtime.py b/src/exabgp/bgp/message/open/holdtime.py similarity index 100% rename from lib/exabgp/bgp/message/open/holdtime.py rename to src/exabgp/bgp/message/open/holdtime.py diff --git a/lib/exabgp/bgp/message/open/routerid.py b/src/exabgp/bgp/message/open/routerid.py similarity index 100% rename from lib/exabgp/bgp/message/open/routerid.py rename to src/exabgp/bgp/message/open/routerid.py diff --git a/lib/exabgp/bgp/message/open/version.py b/src/exabgp/bgp/message/open/version.py similarity index 100% rename from lib/exabgp/bgp/message/open/version.py rename to src/exabgp/bgp/message/open/version.py diff --git a/lib/exabgp/bgp/message/operational.py b/src/exabgp/bgp/message/operational.py similarity index 100% rename from lib/exabgp/bgp/message/operational.py rename to src/exabgp/bgp/message/operational.py diff --git a/lib/exabgp/bgp/message/refresh.py b/src/exabgp/bgp/message/refresh.py similarity index 100% rename from lib/exabgp/bgp/message/refresh.py rename to src/exabgp/bgp/message/refresh.py diff --git a/lib/exabgp/bgp/message/unknown.py b/src/exabgp/bgp/message/unknown.py similarity index 100% rename from lib/exabgp/bgp/message/unknown.py rename to src/exabgp/bgp/message/unknown.py diff --git a/lib/exabgp/bgp/message/update/__init__.py b/src/exabgp/bgp/message/update/__init__.py similarity index 100% rename from lib/exabgp/bgp/message/update/__init__.py rename to src/exabgp/bgp/message/update/__init__.py diff --git a/lib/exabgp/bgp/message/update/attribute/__init__.py b/src/exabgp/bgp/message/update/attribute/__init__.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/__init__.py rename to src/exabgp/bgp/message/update/attribute/__init__.py diff --git a/lib/exabgp/bgp/message/update/attribute/aggregator.py b/src/exabgp/bgp/message/update/attribute/aggregator.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/aggregator.py rename to src/exabgp/bgp/message/update/attribute/aggregator.py diff --git a/lib/exabgp/bgp/message/update/attribute/aigp.py b/src/exabgp/bgp/message/update/attribute/aigp.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/aigp.py rename to src/exabgp/bgp/message/update/attribute/aigp.py diff --git a/lib/exabgp/bgp/message/update/attribute/aspath.py b/src/exabgp/bgp/message/update/attribute/aspath.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/aspath.py rename to src/exabgp/bgp/message/update/attribute/aspath.py diff --git a/lib/exabgp/bgp/message/update/attribute/atomicaggregate.py b/src/exabgp/bgp/message/update/attribute/atomicaggregate.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/atomicaggregate.py rename to src/exabgp/bgp/message/update/attribute/atomicaggregate.py diff --git a/lib/exabgp/bgp/message/update/attribute/attribute.py b/src/exabgp/bgp/message/update/attribute/attribute.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/attribute.py rename to src/exabgp/bgp/message/update/attribute/attribute.py diff --git a/lib/exabgp/bgp/message/update/attribute/attributes.py b/src/exabgp/bgp/message/update/attribute/attributes.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/attributes.py rename to src/exabgp/bgp/message/update/attribute/attributes.py diff --git a/lib/exabgp/bgp/message/update/attribute/bgpls/__init__.py b/src/exabgp/bgp/message/update/attribute/bgpls/__init__.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/bgpls/__init__.py rename to src/exabgp/bgp/message/update/attribute/bgpls/__init__.py diff --git a/lib/exabgp/bgp/message/update/attribute/bgpls/link/__init__.py b/src/exabgp/bgp/message/update/attribute/bgpls/link/__init__.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/bgpls/link/__init__.py rename to src/exabgp/bgp/message/update/attribute/bgpls/link/__init__.py diff --git a/lib/exabgp/bgp/message/update/attribute/bgpls/link/admingroup.py b/src/exabgp/bgp/message/update/attribute/bgpls/link/admingroup.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/bgpls/link/admingroup.py rename to src/exabgp/bgp/message/update/attribute/bgpls/link/admingroup.py diff --git a/lib/exabgp/bgp/message/update/attribute/bgpls/link/igpmetric.py b/src/exabgp/bgp/message/update/attribute/bgpls/link/igpmetric.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/bgpls/link/igpmetric.py rename to src/exabgp/bgp/message/update/attribute/bgpls/link/igpmetric.py diff --git a/lib/exabgp/bgp/message/update/attribute/bgpls/link/linkname.py b/src/exabgp/bgp/message/update/attribute/bgpls/link/linkname.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/bgpls/link/linkname.py rename to src/exabgp/bgp/message/update/attribute/bgpls/link/linkname.py diff --git a/lib/exabgp/bgp/message/update/attribute/bgpls/link/maxbw.py b/src/exabgp/bgp/message/update/attribute/bgpls/link/maxbw.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/bgpls/link/maxbw.py rename to src/exabgp/bgp/message/update/attribute/bgpls/link/maxbw.py diff --git a/lib/exabgp/bgp/message/update/attribute/bgpls/link/mplsmask.py b/src/exabgp/bgp/message/update/attribute/bgpls/link/mplsmask.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/bgpls/link/mplsmask.py rename to src/exabgp/bgp/message/update/attribute/bgpls/link/mplsmask.py diff --git a/lib/exabgp/bgp/message/update/attribute/bgpls/link/opaque.py b/src/exabgp/bgp/message/update/attribute/bgpls/link/opaque.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/bgpls/link/opaque.py rename to src/exabgp/bgp/message/update/attribute/bgpls/link/opaque.py diff --git a/lib/exabgp/bgp/message/update/attribute/bgpls/link/protection.py b/src/exabgp/bgp/message/update/attribute/bgpls/link/protection.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/bgpls/link/protection.py rename to src/exabgp/bgp/message/update/attribute/bgpls/link/protection.py diff --git a/lib/exabgp/bgp/message/update/attribute/bgpls/link/rsvpbw.py b/src/exabgp/bgp/message/update/attribute/bgpls/link/rsvpbw.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/bgpls/link/rsvpbw.py rename to src/exabgp/bgp/message/update/attribute/bgpls/link/rsvpbw.py diff --git a/lib/exabgp/bgp/message/update/attribute/bgpls/link/rterid.py b/src/exabgp/bgp/message/update/attribute/bgpls/link/rterid.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/bgpls/link/rterid.py rename to src/exabgp/bgp/message/update/attribute/bgpls/link/rterid.py diff --git a/lib/exabgp/bgp/message/update/attribute/bgpls/link/sradj.py b/src/exabgp/bgp/message/update/attribute/bgpls/link/sradj.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/bgpls/link/sradj.py rename to src/exabgp/bgp/message/update/attribute/bgpls/link/sradj.py diff --git a/lib/exabgp/bgp/message/update/attribute/bgpls/link/sradjlan.py b/src/exabgp/bgp/message/update/attribute/bgpls/link/sradjlan.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/bgpls/link/sradjlan.py rename to src/exabgp/bgp/message/update/attribute/bgpls/link/sradjlan.py diff --git a/lib/exabgp/bgp/message/update/attribute/bgpls/link/srlg.py b/src/exabgp/bgp/message/update/attribute/bgpls/link/srlg.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/bgpls/link/srlg.py rename to src/exabgp/bgp/message/update/attribute/bgpls/link/srlg.py diff --git a/lib/exabgp/bgp/message/update/attribute/bgpls/link/temetric.py b/src/exabgp/bgp/message/update/attribute/bgpls/link/temetric.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/bgpls/link/temetric.py rename to src/exabgp/bgp/message/update/attribute/bgpls/link/temetric.py diff --git a/lib/exabgp/bgp/message/update/attribute/bgpls/link/unrsvpbw.py b/src/exabgp/bgp/message/update/attribute/bgpls/link/unrsvpbw.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/bgpls/link/unrsvpbw.py rename to src/exabgp/bgp/message/update/attribute/bgpls/link/unrsvpbw.py diff --git a/lib/exabgp/bgp/message/update/attribute/bgpls/linkstate.py b/src/exabgp/bgp/message/update/attribute/bgpls/linkstate.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/bgpls/linkstate.py rename to src/exabgp/bgp/message/update/attribute/bgpls/linkstate.py diff --git a/lib/exabgp/bgp/message/update/attribute/bgpls/node/__init__.py b/src/exabgp/bgp/message/update/attribute/bgpls/node/__init__.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/bgpls/node/__init__.py rename to src/exabgp/bgp/message/update/attribute/bgpls/node/__init__.py diff --git a/lib/exabgp/bgp/message/update/attribute/bgpls/node/isisarea.py b/src/exabgp/bgp/message/update/attribute/bgpls/node/isisarea.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/bgpls/node/isisarea.py rename to src/exabgp/bgp/message/update/attribute/bgpls/node/isisarea.py diff --git a/lib/exabgp/bgp/message/update/attribute/bgpls/node/lterid.py b/src/exabgp/bgp/message/update/attribute/bgpls/node/lterid.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/bgpls/node/lterid.py rename to src/exabgp/bgp/message/update/attribute/bgpls/node/lterid.py diff --git a/lib/exabgp/bgp/message/update/attribute/bgpls/node/nodeflags.py b/src/exabgp/bgp/message/update/attribute/bgpls/node/nodeflags.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/bgpls/node/nodeflags.py rename to src/exabgp/bgp/message/update/attribute/bgpls/node/nodeflags.py diff --git a/lib/exabgp/bgp/message/update/attribute/bgpls/node/nodename.py b/src/exabgp/bgp/message/update/attribute/bgpls/node/nodename.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/bgpls/node/nodename.py rename to src/exabgp/bgp/message/update/attribute/bgpls/node/nodename.py diff --git a/lib/exabgp/bgp/message/update/attribute/bgpls/node/opaque.py b/src/exabgp/bgp/message/update/attribute/bgpls/node/opaque.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/bgpls/node/opaque.py rename to src/exabgp/bgp/message/update/attribute/bgpls/node/opaque.py diff --git a/lib/exabgp/bgp/message/update/attribute/bgpls/node/sralgo.py b/src/exabgp/bgp/message/update/attribute/bgpls/node/sralgo.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/bgpls/node/sralgo.py rename to src/exabgp/bgp/message/update/attribute/bgpls/node/sralgo.py diff --git a/lib/exabgp/bgp/message/update/attribute/bgpls/node/srcap.py b/src/exabgp/bgp/message/update/attribute/bgpls/node/srcap.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/bgpls/node/srcap.py rename to src/exabgp/bgp/message/update/attribute/bgpls/node/srcap.py diff --git a/lib/exabgp/bgp/message/update/attribute/bgpls/prefix/__init__.py b/src/exabgp/bgp/message/update/attribute/bgpls/prefix/__init__.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/bgpls/prefix/__init__.py rename to src/exabgp/bgp/message/update/attribute/bgpls/prefix/__init__.py diff --git a/lib/exabgp/bgp/message/update/attribute/bgpls/prefix/igpextags.py b/src/exabgp/bgp/message/update/attribute/bgpls/prefix/igpextags.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/bgpls/prefix/igpextags.py rename to src/exabgp/bgp/message/update/attribute/bgpls/prefix/igpextags.py diff --git a/lib/exabgp/bgp/message/update/attribute/bgpls/prefix/igpflags.py b/src/exabgp/bgp/message/update/attribute/bgpls/prefix/igpflags.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/bgpls/prefix/igpflags.py rename to src/exabgp/bgp/message/update/attribute/bgpls/prefix/igpflags.py diff --git a/lib/exabgp/bgp/message/update/attribute/bgpls/prefix/igptags.py b/src/exabgp/bgp/message/update/attribute/bgpls/prefix/igptags.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/bgpls/prefix/igptags.py rename to src/exabgp/bgp/message/update/attribute/bgpls/prefix/igptags.py diff --git a/lib/exabgp/bgp/message/update/attribute/bgpls/prefix/opaque.py b/src/exabgp/bgp/message/update/attribute/bgpls/prefix/opaque.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/bgpls/prefix/opaque.py rename to src/exabgp/bgp/message/update/attribute/bgpls/prefix/opaque.py diff --git a/lib/exabgp/bgp/message/update/attribute/bgpls/prefix/ospfaddr.py b/src/exabgp/bgp/message/update/attribute/bgpls/prefix/ospfaddr.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/bgpls/prefix/ospfaddr.py rename to src/exabgp/bgp/message/update/attribute/bgpls/prefix/ospfaddr.py diff --git a/lib/exabgp/bgp/message/update/attribute/bgpls/prefix/prefixmetric.py b/src/exabgp/bgp/message/update/attribute/bgpls/prefix/prefixmetric.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/bgpls/prefix/prefixmetric.py rename to src/exabgp/bgp/message/update/attribute/bgpls/prefix/prefixmetric.py diff --git a/lib/exabgp/bgp/message/update/attribute/bgpls/prefix/srigpprefixattr.py b/src/exabgp/bgp/message/update/attribute/bgpls/prefix/srigpprefixattr.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/bgpls/prefix/srigpprefixattr.py rename to src/exabgp/bgp/message/update/attribute/bgpls/prefix/srigpprefixattr.py diff --git a/lib/exabgp/bgp/message/update/attribute/bgpls/prefix/srprefix.py b/src/exabgp/bgp/message/update/attribute/bgpls/prefix/srprefix.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/bgpls/prefix/srprefix.py rename to src/exabgp/bgp/message/update/attribute/bgpls/prefix/srprefix.py diff --git a/lib/exabgp/bgp/message/update/attribute/bgpls/prefix/srrid.py b/src/exabgp/bgp/message/update/attribute/bgpls/prefix/srrid.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/bgpls/prefix/srrid.py rename to src/exabgp/bgp/message/update/attribute/bgpls/prefix/srrid.py diff --git a/lib/exabgp/bgp/message/update/attribute/clusterlist.py b/src/exabgp/bgp/message/update/attribute/clusterlist.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/clusterlist.py rename to src/exabgp/bgp/message/update/attribute/clusterlist.py diff --git a/lib/exabgp/bgp/message/update/attribute/community/__init__.py b/src/exabgp/bgp/message/update/attribute/community/__init__.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/community/__init__.py rename to src/exabgp/bgp/message/update/attribute/community/__init__.py diff --git a/lib/exabgp/bgp/message/update/attribute/community/extended/__init__.py b/src/exabgp/bgp/message/update/attribute/community/extended/__init__.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/community/extended/__init__.py rename to src/exabgp/bgp/message/update/attribute/community/extended/__init__.py diff --git a/lib/exabgp/bgp/message/update/attribute/community/extended/bandwidth.py b/src/exabgp/bgp/message/update/attribute/community/extended/bandwidth.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/community/extended/bandwidth.py rename to src/exabgp/bgp/message/update/attribute/community/extended/bandwidth.py diff --git a/lib/exabgp/bgp/message/update/attribute/community/extended/chso.py b/src/exabgp/bgp/message/update/attribute/community/extended/chso.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/community/extended/chso.py rename to src/exabgp/bgp/message/update/attribute/community/extended/chso.py diff --git a/lib/exabgp/bgp/message/update/attribute/community/extended/communities.py b/src/exabgp/bgp/message/update/attribute/community/extended/communities.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/community/extended/communities.py rename to src/exabgp/bgp/message/update/attribute/community/extended/communities.py diff --git a/lib/exabgp/bgp/message/update/attribute/community/extended/community.py b/src/exabgp/bgp/message/update/attribute/community/extended/community.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/community/extended/community.py rename to src/exabgp/bgp/message/update/attribute/community/extended/community.py diff --git a/lib/exabgp/bgp/message/update/attribute/community/extended/encapsulation.py b/src/exabgp/bgp/message/update/attribute/community/extended/encapsulation.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/community/extended/encapsulation.py rename to src/exabgp/bgp/message/update/attribute/community/extended/encapsulation.py diff --git a/lib/exabgp/bgp/message/update/attribute/community/extended/flowspec_scope.py b/src/exabgp/bgp/message/update/attribute/community/extended/flowspec_scope.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/community/extended/flowspec_scope.py rename to src/exabgp/bgp/message/update/attribute/community/extended/flowspec_scope.py diff --git a/lib/exabgp/bgp/message/update/attribute/community/extended/l2info.py b/src/exabgp/bgp/message/update/attribute/community/extended/l2info.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/community/extended/l2info.py rename to src/exabgp/bgp/message/update/attribute/community/extended/l2info.py diff --git a/lib/exabgp/bgp/message/update/attribute/community/extended/mac_mobility.py b/src/exabgp/bgp/message/update/attribute/community/extended/mac_mobility.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/community/extended/mac_mobility.py rename to src/exabgp/bgp/message/update/attribute/community/extended/mac_mobility.py diff --git a/lib/exabgp/bgp/message/update/attribute/community/extended/origin.py b/src/exabgp/bgp/message/update/attribute/community/extended/origin.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/community/extended/origin.py rename to src/exabgp/bgp/message/update/attribute/community/extended/origin.py diff --git a/lib/exabgp/bgp/message/update/attribute/community/extended/rt.py b/src/exabgp/bgp/message/update/attribute/community/extended/rt.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/community/extended/rt.py rename to src/exabgp/bgp/message/update/attribute/community/extended/rt.py diff --git a/lib/exabgp/bgp/message/update/attribute/community/extended/rt_record.py b/src/exabgp/bgp/message/update/attribute/community/extended/rt_record.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/community/extended/rt_record.py rename to src/exabgp/bgp/message/update/attribute/community/extended/rt_record.py diff --git a/lib/exabgp/bgp/message/update/attribute/community/extended/traffic.py b/src/exabgp/bgp/message/update/attribute/community/extended/traffic.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/community/extended/traffic.py rename to src/exabgp/bgp/message/update/attribute/community/extended/traffic.py diff --git a/lib/exabgp/bgp/message/update/attribute/community/initial/__init__.py b/src/exabgp/bgp/message/update/attribute/community/initial/__init__.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/community/initial/__init__.py rename to src/exabgp/bgp/message/update/attribute/community/initial/__init__.py diff --git a/lib/exabgp/bgp/message/update/attribute/community/initial/communities.py b/src/exabgp/bgp/message/update/attribute/community/initial/communities.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/community/initial/communities.py rename to src/exabgp/bgp/message/update/attribute/community/initial/communities.py diff --git a/lib/exabgp/bgp/message/update/attribute/community/initial/community.py b/src/exabgp/bgp/message/update/attribute/community/initial/community.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/community/initial/community.py rename to src/exabgp/bgp/message/update/attribute/community/initial/community.py diff --git a/lib/exabgp/bgp/message/update/attribute/community/large/__init__.py b/src/exabgp/bgp/message/update/attribute/community/large/__init__.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/community/large/__init__.py rename to src/exabgp/bgp/message/update/attribute/community/large/__init__.py diff --git a/lib/exabgp/bgp/message/update/attribute/community/large/communities.py b/src/exabgp/bgp/message/update/attribute/community/large/communities.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/community/large/communities.py rename to src/exabgp/bgp/message/update/attribute/community/large/communities.py diff --git a/lib/exabgp/bgp/message/update/attribute/community/large/community.py b/src/exabgp/bgp/message/update/attribute/community/large/community.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/community/large/community.py rename to src/exabgp/bgp/message/update/attribute/community/large/community.py diff --git a/lib/exabgp/bgp/message/update/attribute/generic.py b/src/exabgp/bgp/message/update/attribute/generic.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/generic.py rename to src/exabgp/bgp/message/update/attribute/generic.py diff --git a/lib/exabgp/bgp/message/update/attribute/localpref.py b/src/exabgp/bgp/message/update/attribute/localpref.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/localpref.py rename to src/exabgp/bgp/message/update/attribute/localpref.py diff --git a/lib/exabgp/bgp/message/update/attribute/med.py b/src/exabgp/bgp/message/update/attribute/med.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/med.py rename to src/exabgp/bgp/message/update/attribute/med.py diff --git a/lib/exabgp/bgp/message/update/attribute/mprnlri.py b/src/exabgp/bgp/message/update/attribute/mprnlri.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/mprnlri.py rename to src/exabgp/bgp/message/update/attribute/mprnlri.py diff --git a/lib/exabgp/bgp/message/update/attribute/mpurnlri.py b/src/exabgp/bgp/message/update/attribute/mpurnlri.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/mpurnlri.py rename to src/exabgp/bgp/message/update/attribute/mpurnlri.py diff --git a/lib/exabgp/bgp/message/update/attribute/nexthop.py b/src/exabgp/bgp/message/update/attribute/nexthop.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/nexthop.py rename to src/exabgp/bgp/message/update/attribute/nexthop.py diff --git a/lib/exabgp/bgp/message/update/attribute/origin.py b/src/exabgp/bgp/message/update/attribute/origin.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/origin.py rename to src/exabgp/bgp/message/update/attribute/origin.py diff --git a/lib/exabgp/bgp/message/update/attribute/originatorid.py b/src/exabgp/bgp/message/update/attribute/originatorid.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/originatorid.py rename to src/exabgp/bgp/message/update/attribute/originatorid.py diff --git a/lib/exabgp/bgp/message/update/attribute/pmsi.py b/src/exabgp/bgp/message/update/attribute/pmsi.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/pmsi.py rename to src/exabgp/bgp/message/update/attribute/pmsi.py diff --git a/lib/exabgp/bgp/message/update/attribute/sr/__init__.py b/src/exabgp/bgp/message/update/attribute/sr/__init__.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/sr/__init__.py rename to src/exabgp/bgp/message/update/attribute/sr/__init__.py diff --git a/lib/exabgp/bgp/message/update/attribute/sr/ipv6sid.py b/src/exabgp/bgp/message/update/attribute/sr/ipv6sid.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/sr/ipv6sid.py rename to src/exabgp/bgp/message/update/attribute/sr/ipv6sid.py diff --git a/lib/exabgp/bgp/message/update/attribute/sr/labelindex.py b/src/exabgp/bgp/message/update/attribute/sr/labelindex.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/sr/labelindex.py rename to src/exabgp/bgp/message/update/attribute/sr/labelindex.py diff --git a/lib/exabgp/bgp/message/update/attribute/sr/prefixsid.py b/src/exabgp/bgp/message/update/attribute/sr/prefixsid.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/sr/prefixsid.py rename to src/exabgp/bgp/message/update/attribute/sr/prefixsid.py diff --git a/lib/exabgp/bgp/message/update/attribute/sr/srgb.py b/src/exabgp/bgp/message/update/attribute/sr/srgb.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/sr/srgb.py rename to src/exabgp/bgp/message/update/attribute/sr/srgb.py diff --git a/lib/exabgp/bgp/message/update/attribute/sr/srv6l3vpnsid.py b/src/exabgp/bgp/message/update/attribute/sr/srv6l3vpnsid.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/sr/srv6l3vpnsid.py rename to src/exabgp/bgp/message/update/attribute/sr/srv6l3vpnsid.py diff --git a/lib/exabgp/bgp/message/update/attribute/sr/srv6vpnsid.py b/src/exabgp/bgp/message/update/attribute/sr/srv6vpnsid.py similarity index 100% rename from lib/exabgp/bgp/message/update/attribute/sr/srv6vpnsid.py rename to src/exabgp/bgp/message/update/attribute/sr/srv6vpnsid.py diff --git a/lib/exabgp/bgp/message/update/eor.py b/src/exabgp/bgp/message/update/eor.py similarity index 100% rename from lib/exabgp/bgp/message/update/eor.py rename to src/exabgp/bgp/message/update/eor.py diff --git a/lib/exabgp/bgp/message/update/nlri/__init__.py b/src/exabgp/bgp/message/update/nlri/__init__.py similarity index 100% rename from lib/exabgp/bgp/message/update/nlri/__init__.py rename to src/exabgp/bgp/message/update/nlri/__init__.py diff --git a/lib/exabgp/bgp/message/update/nlri/bgpls/__init__.py b/src/exabgp/bgp/message/update/nlri/bgpls/__init__.py similarity index 100% rename from lib/exabgp/bgp/message/update/nlri/bgpls/__init__.py rename to src/exabgp/bgp/message/update/nlri/bgpls/__init__.py diff --git a/lib/exabgp/bgp/message/update/nlri/bgpls/link.py b/src/exabgp/bgp/message/update/nlri/bgpls/link.py similarity index 100% rename from lib/exabgp/bgp/message/update/nlri/bgpls/link.py rename to src/exabgp/bgp/message/update/nlri/bgpls/link.py diff --git a/lib/exabgp/bgp/message/update/nlri/bgpls/nlri.py b/src/exabgp/bgp/message/update/nlri/bgpls/nlri.py similarity index 100% rename from lib/exabgp/bgp/message/update/nlri/bgpls/nlri.py rename to src/exabgp/bgp/message/update/nlri/bgpls/nlri.py diff --git a/lib/exabgp/bgp/message/update/nlri/bgpls/node.py b/src/exabgp/bgp/message/update/nlri/bgpls/node.py similarity index 100% rename from lib/exabgp/bgp/message/update/nlri/bgpls/node.py rename to src/exabgp/bgp/message/update/nlri/bgpls/node.py diff --git a/lib/exabgp/bgp/message/update/nlri/bgpls/prefixv4.py b/src/exabgp/bgp/message/update/nlri/bgpls/prefixv4.py similarity index 100% rename from lib/exabgp/bgp/message/update/nlri/bgpls/prefixv4.py rename to src/exabgp/bgp/message/update/nlri/bgpls/prefixv4.py diff --git a/lib/exabgp/bgp/message/update/nlri/bgpls/prefixv6.py b/src/exabgp/bgp/message/update/nlri/bgpls/prefixv6.py similarity index 100% rename from lib/exabgp/bgp/message/update/nlri/bgpls/prefixv6.py rename to src/exabgp/bgp/message/update/nlri/bgpls/prefixv6.py diff --git a/lib/exabgp/bgp/message/update/nlri/bgpls/tlvs/__init__.py b/src/exabgp/bgp/message/update/nlri/bgpls/tlvs/__init__.py similarity index 100% rename from lib/exabgp/bgp/message/update/nlri/bgpls/tlvs/__init__.py rename to src/exabgp/bgp/message/update/nlri/bgpls/tlvs/__init__.py diff --git a/lib/exabgp/bgp/message/update/nlri/bgpls/tlvs/ifaceaddr.py b/src/exabgp/bgp/message/update/nlri/bgpls/tlvs/ifaceaddr.py similarity index 100% rename from lib/exabgp/bgp/message/update/nlri/bgpls/tlvs/ifaceaddr.py rename to src/exabgp/bgp/message/update/nlri/bgpls/tlvs/ifaceaddr.py diff --git a/lib/exabgp/bgp/message/update/nlri/bgpls/tlvs/ipreach.py b/src/exabgp/bgp/message/update/nlri/bgpls/tlvs/ipreach.py similarity index 100% rename from lib/exabgp/bgp/message/update/nlri/bgpls/tlvs/ipreach.py rename to src/exabgp/bgp/message/update/nlri/bgpls/tlvs/ipreach.py diff --git a/lib/exabgp/bgp/message/update/nlri/bgpls/tlvs/linkid.py b/src/exabgp/bgp/message/update/nlri/bgpls/tlvs/linkid.py similarity index 100% rename from lib/exabgp/bgp/message/update/nlri/bgpls/tlvs/linkid.py rename to src/exabgp/bgp/message/update/nlri/bgpls/tlvs/linkid.py diff --git a/lib/exabgp/bgp/message/update/nlri/bgpls/tlvs/neighaddr.py b/src/exabgp/bgp/message/update/nlri/bgpls/tlvs/neighaddr.py similarity index 100% rename from lib/exabgp/bgp/message/update/nlri/bgpls/tlvs/neighaddr.py rename to src/exabgp/bgp/message/update/nlri/bgpls/tlvs/neighaddr.py diff --git a/lib/exabgp/bgp/message/update/nlri/bgpls/tlvs/node.py b/src/exabgp/bgp/message/update/nlri/bgpls/tlvs/node.py similarity index 100% rename from lib/exabgp/bgp/message/update/nlri/bgpls/tlvs/node.py rename to src/exabgp/bgp/message/update/nlri/bgpls/tlvs/node.py diff --git a/lib/exabgp/bgp/message/update/nlri/bgpls/tlvs/ospfroute.py b/src/exabgp/bgp/message/update/nlri/bgpls/tlvs/ospfroute.py similarity index 100% rename from lib/exabgp/bgp/message/update/nlri/bgpls/tlvs/ospfroute.py rename to src/exabgp/bgp/message/update/nlri/bgpls/tlvs/ospfroute.py diff --git a/lib/exabgp/bgp/message/update/nlri/bgpls/tlvs/prefix.py b/src/exabgp/bgp/message/update/nlri/bgpls/tlvs/prefix.py similarity index 100% rename from lib/exabgp/bgp/message/update/nlri/bgpls/tlvs/prefix.py rename to src/exabgp/bgp/message/update/nlri/bgpls/tlvs/prefix.py diff --git a/lib/exabgp/bgp/message/update/nlri/cidr.py b/src/exabgp/bgp/message/update/nlri/cidr.py similarity index 100% rename from lib/exabgp/bgp/message/update/nlri/cidr.py rename to src/exabgp/bgp/message/update/nlri/cidr.py diff --git a/lib/exabgp/bgp/message/update/nlri/evpn/__init__.py b/src/exabgp/bgp/message/update/nlri/evpn/__init__.py similarity index 100% rename from lib/exabgp/bgp/message/update/nlri/evpn/__init__.py rename to src/exabgp/bgp/message/update/nlri/evpn/__init__.py diff --git a/lib/exabgp/bgp/message/update/nlri/evpn/ethernetad.py b/src/exabgp/bgp/message/update/nlri/evpn/ethernetad.py similarity index 100% rename from lib/exabgp/bgp/message/update/nlri/evpn/ethernetad.py rename to src/exabgp/bgp/message/update/nlri/evpn/ethernetad.py diff --git a/lib/exabgp/bgp/message/update/nlri/evpn/mac.py b/src/exabgp/bgp/message/update/nlri/evpn/mac.py similarity index 100% rename from lib/exabgp/bgp/message/update/nlri/evpn/mac.py rename to src/exabgp/bgp/message/update/nlri/evpn/mac.py diff --git a/lib/exabgp/bgp/message/update/nlri/evpn/multicast.py b/src/exabgp/bgp/message/update/nlri/evpn/multicast.py similarity index 100% rename from lib/exabgp/bgp/message/update/nlri/evpn/multicast.py rename to src/exabgp/bgp/message/update/nlri/evpn/multicast.py diff --git a/lib/exabgp/bgp/message/update/nlri/evpn/nlri.py b/src/exabgp/bgp/message/update/nlri/evpn/nlri.py similarity index 100% rename from lib/exabgp/bgp/message/update/nlri/evpn/nlri.py rename to src/exabgp/bgp/message/update/nlri/evpn/nlri.py diff --git a/lib/exabgp/bgp/message/update/nlri/evpn/prefix.py b/src/exabgp/bgp/message/update/nlri/evpn/prefix.py similarity index 100% rename from lib/exabgp/bgp/message/update/nlri/evpn/prefix.py rename to src/exabgp/bgp/message/update/nlri/evpn/prefix.py diff --git a/lib/exabgp/bgp/message/update/nlri/evpn/segment.py b/src/exabgp/bgp/message/update/nlri/evpn/segment.py similarity index 100% rename from lib/exabgp/bgp/message/update/nlri/evpn/segment.py rename to src/exabgp/bgp/message/update/nlri/evpn/segment.py diff --git a/lib/exabgp/bgp/message/update/nlri/flow.py b/src/exabgp/bgp/message/update/nlri/flow.py similarity index 100% rename from lib/exabgp/bgp/message/update/nlri/flow.py rename to src/exabgp/bgp/message/update/nlri/flow.py diff --git a/lib/exabgp/bgp/message/update/nlri/inet.py b/src/exabgp/bgp/message/update/nlri/inet.py similarity index 100% rename from lib/exabgp/bgp/message/update/nlri/inet.py rename to src/exabgp/bgp/message/update/nlri/inet.py diff --git a/lib/exabgp/bgp/message/update/nlri/ipvpn.py b/src/exabgp/bgp/message/update/nlri/ipvpn.py similarity index 100% rename from lib/exabgp/bgp/message/update/nlri/ipvpn.py rename to src/exabgp/bgp/message/update/nlri/ipvpn.py diff --git a/lib/exabgp/bgp/message/update/nlri/label.py b/src/exabgp/bgp/message/update/nlri/label.py similarity index 100% rename from lib/exabgp/bgp/message/update/nlri/label.py rename to src/exabgp/bgp/message/update/nlri/label.py diff --git a/lib/exabgp/bgp/message/update/nlri/nlri.py b/src/exabgp/bgp/message/update/nlri/nlri.py similarity index 100% rename from lib/exabgp/bgp/message/update/nlri/nlri.py rename to src/exabgp/bgp/message/update/nlri/nlri.py diff --git a/lib/exabgp/bgp/message/update/nlri/qualifier/__init__.py b/src/exabgp/bgp/message/update/nlri/qualifier/__init__.py similarity index 100% rename from lib/exabgp/bgp/message/update/nlri/qualifier/__init__.py rename to src/exabgp/bgp/message/update/nlri/qualifier/__init__.py diff --git a/lib/exabgp/bgp/message/update/nlri/qualifier/esi.py b/src/exabgp/bgp/message/update/nlri/qualifier/esi.py similarity index 100% rename from lib/exabgp/bgp/message/update/nlri/qualifier/esi.py rename to src/exabgp/bgp/message/update/nlri/qualifier/esi.py diff --git a/lib/exabgp/bgp/message/update/nlri/qualifier/etag.py b/src/exabgp/bgp/message/update/nlri/qualifier/etag.py similarity index 100% rename from lib/exabgp/bgp/message/update/nlri/qualifier/etag.py rename to src/exabgp/bgp/message/update/nlri/qualifier/etag.py diff --git a/lib/exabgp/bgp/message/update/nlri/qualifier/labels.py b/src/exabgp/bgp/message/update/nlri/qualifier/labels.py similarity index 100% rename from lib/exabgp/bgp/message/update/nlri/qualifier/labels.py rename to src/exabgp/bgp/message/update/nlri/qualifier/labels.py diff --git a/lib/exabgp/bgp/message/update/nlri/qualifier/mac.py b/src/exabgp/bgp/message/update/nlri/qualifier/mac.py similarity index 100% rename from lib/exabgp/bgp/message/update/nlri/qualifier/mac.py rename to src/exabgp/bgp/message/update/nlri/qualifier/mac.py diff --git a/lib/exabgp/bgp/message/update/nlri/qualifier/path.py b/src/exabgp/bgp/message/update/nlri/qualifier/path.py similarity index 100% rename from lib/exabgp/bgp/message/update/nlri/qualifier/path.py rename to src/exabgp/bgp/message/update/nlri/qualifier/path.py diff --git a/lib/exabgp/bgp/message/update/nlri/qualifier/rd.py b/src/exabgp/bgp/message/update/nlri/qualifier/rd.py similarity index 100% rename from lib/exabgp/bgp/message/update/nlri/qualifier/rd.py rename to src/exabgp/bgp/message/update/nlri/qualifier/rd.py diff --git a/lib/exabgp/bgp/message/update/nlri/rtc.py b/src/exabgp/bgp/message/update/nlri/rtc.py similarity index 100% rename from lib/exabgp/bgp/message/update/nlri/rtc.py rename to src/exabgp/bgp/message/update/nlri/rtc.py diff --git a/lib/exabgp/bgp/message/update/nlri/vpls.py b/src/exabgp/bgp/message/update/nlri/vpls.py similarity index 100% rename from lib/exabgp/bgp/message/update/nlri/vpls.py rename to src/exabgp/bgp/message/update/nlri/vpls.py diff --git a/lib/exabgp/bgp/neighbor.py b/src/exabgp/bgp/neighbor.py similarity index 100% rename from lib/exabgp/bgp/neighbor.py rename to src/exabgp/bgp/neighbor.py diff --git a/lib/exabgp/bgp/timer.py b/src/exabgp/bgp/timer.py similarity index 100% rename from lib/exabgp/bgp/timer.py rename to src/exabgp/bgp/timer.py diff --git a/lib/exabgp/configuration/__init__.py b/src/exabgp/configuration/__init__.py similarity index 100% rename from lib/exabgp/configuration/__init__.py rename to src/exabgp/configuration/__init__.py diff --git a/lib/exabgp/configuration/announce/__init__.py b/src/exabgp/configuration/announce/__init__.py similarity index 100% rename from lib/exabgp/configuration/announce/__init__.py rename to src/exabgp/configuration/announce/__init__.py diff --git a/lib/exabgp/configuration/announce/flow.py b/src/exabgp/configuration/announce/flow.py similarity index 100% rename from lib/exabgp/configuration/announce/flow.py rename to src/exabgp/configuration/announce/flow.py diff --git a/lib/exabgp/configuration/announce/ip.py b/src/exabgp/configuration/announce/ip.py similarity index 100% rename from lib/exabgp/configuration/announce/ip.py rename to src/exabgp/configuration/announce/ip.py diff --git a/lib/exabgp/configuration/announce/label.py b/src/exabgp/configuration/announce/label.py similarity index 100% rename from lib/exabgp/configuration/announce/label.py rename to src/exabgp/configuration/announce/label.py diff --git a/lib/exabgp/configuration/announce/path.py b/src/exabgp/configuration/announce/path.py similarity index 100% rename from lib/exabgp/configuration/announce/path.py rename to src/exabgp/configuration/announce/path.py diff --git a/lib/exabgp/configuration/announce/vpls.py b/src/exabgp/configuration/announce/vpls.py similarity index 100% rename from lib/exabgp/configuration/announce/vpls.py rename to src/exabgp/configuration/announce/vpls.py diff --git a/lib/exabgp/configuration/announce/vpn.py b/src/exabgp/configuration/announce/vpn.py similarity index 100% rename from lib/exabgp/configuration/announce/vpn.py rename to src/exabgp/configuration/announce/vpn.py diff --git a/lib/exabgp/configuration/capability.py b/src/exabgp/configuration/capability.py similarity index 100% rename from lib/exabgp/configuration/capability.py rename to src/exabgp/configuration/capability.py diff --git a/lib/exabgp/configuration/check.py b/src/exabgp/configuration/check.py similarity index 100% rename from lib/exabgp/configuration/check.py rename to src/exabgp/configuration/check.py diff --git a/lib/exabgp/configuration/configuration.py b/src/exabgp/configuration/configuration.py similarity index 100% rename from lib/exabgp/configuration/configuration.py rename to src/exabgp/configuration/configuration.py diff --git a/lib/exabgp/configuration/core/__init__.py b/src/exabgp/configuration/core/__init__.py similarity index 100% rename from lib/exabgp/configuration/core/__init__.py rename to src/exabgp/configuration/core/__init__.py diff --git a/lib/exabgp/configuration/core/error.py b/src/exabgp/configuration/core/error.py similarity index 100% rename from lib/exabgp/configuration/core/error.py rename to src/exabgp/configuration/core/error.py diff --git a/lib/exabgp/configuration/core/format.py b/src/exabgp/configuration/core/format.py similarity index 100% rename from lib/exabgp/configuration/core/format.py rename to src/exabgp/configuration/core/format.py diff --git a/lib/exabgp/configuration/core/location.py b/src/exabgp/configuration/core/location.py similarity index 100% rename from lib/exabgp/configuration/core/location.py rename to src/exabgp/configuration/core/location.py diff --git a/lib/exabgp/configuration/core/scope.py b/src/exabgp/configuration/core/scope.py similarity index 100% rename from lib/exabgp/configuration/core/scope.py rename to src/exabgp/configuration/core/scope.py diff --git a/lib/exabgp/configuration/core/section.py b/src/exabgp/configuration/core/section.py similarity index 100% rename from lib/exabgp/configuration/core/section.py rename to src/exabgp/configuration/core/section.py diff --git a/lib/exabgp/configuration/core/tokeniser.py b/src/exabgp/configuration/core/tokeniser.py similarity index 100% rename from lib/exabgp/configuration/core/tokeniser.py rename to src/exabgp/configuration/core/tokeniser.py diff --git a/lib/exabgp/configuration/flow/__init__.py b/src/exabgp/configuration/flow/__init__.py similarity index 100% rename from lib/exabgp/configuration/flow/__init__.py rename to src/exabgp/configuration/flow/__init__.py diff --git a/lib/exabgp/configuration/flow/match.py b/src/exabgp/configuration/flow/match.py similarity index 100% rename from lib/exabgp/configuration/flow/match.py rename to src/exabgp/configuration/flow/match.py diff --git a/lib/exabgp/configuration/flow/parser.py b/src/exabgp/configuration/flow/parser.py similarity index 100% rename from lib/exabgp/configuration/flow/parser.py rename to src/exabgp/configuration/flow/parser.py diff --git a/lib/exabgp/configuration/flow/route.py b/src/exabgp/configuration/flow/route.py similarity index 100% rename from lib/exabgp/configuration/flow/route.py rename to src/exabgp/configuration/flow/route.py diff --git a/lib/exabgp/configuration/flow/scope.py b/src/exabgp/configuration/flow/scope.py similarity index 100% rename from lib/exabgp/configuration/flow/scope.py rename to src/exabgp/configuration/flow/scope.py diff --git a/lib/exabgp/configuration/flow/then.py b/src/exabgp/configuration/flow/then.py similarity index 100% rename from lib/exabgp/configuration/flow/then.py rename to src/exabgp/configuration/flow/then.py diff --git a/lib/exabgp/configuration/l2vpn/__init__.py b/src/exabgp/configuration/l2vpn/__init__.py similarity index 100% rename from lib/exabgp/configuration/l2vpn/__init__.py rename to src/exabgp/configuration/l2vpn/__init__.py diff --git a/lib/exabgp/configuration/l2vpn/parser.py b/src/exabgp/configuration/l2vpn/parser.py similarity index 100% rename from lib/exabgp/configuration/l2vpn/parser.py rename to src/exabgp/configuration/l2vpn/parser.py diff --git a/lib/exabgp/configuration/l2vpn/vpls.py b/src/exabgp/configuration/l2vpn/vpls.py similarity index 100% rename from lib/exabgp/configuration/l2vpn/vpls.py rename to src/exabgp/configuration/l2vpn/vpls.py diff --git a/lib/exabgp/configuration/neighbor/__init__.py b/src/exabgp/configuration/neighbor/__init__.py similarity index 100% rename from lib/exabgp/configuration/neighbor/__init__.py rename to src/exabgp/configuration/neighbor/__init__.py diff --git a/lib/exabgp/configuration/neighbor/api.py b/src/exabgp/configuration/neighbor/api.py similarity index 100% rename from lib/exabgp/configuration/neighbor/api.py rename to src/exabgp/configuration/neighbor/api.py diff --git a/lib/exabgp/configuration/neighbor/family.py b/src/exabgp/configuration/neighbor/family.py similarity index 100% rename from lib/exabgp/configuration/neighbor/family.py rename to src/exabgp/configuration/neighbor/family.py diff --git a/lib/exabgp/configuration/neighbor/nexthop.py b/src/exabgp/configuration/neighbor/nexthop.py similarity index 100% rename from lib/exabgp/configuration/neighbor/nexthop.py rename to src/exabgp/configuration/neighbor/nexthop.py diff --git a/lib/exabgp/configuration/neighbor/parser.py b/src/exabgp/configuration/neighbor/parser.py similarity index 100% rename from lib/exabgp/configuration/neighbor/parser.py rename to src/exabgp/configuration/neighbor/parser.py diff --git a/lib/exabgp/configuration/operational/__init__.py b/src/exabgp/configuration/operational/__init__.py similarity index 100% rename from lib/exabgp/configuration/operational/__init__.py rename to src/exabgp/configuration/operational/__init__.py diff --git a/lib/exabgp/configuration/operational/parser.py b/src/exabgp/configuration/operational/parser.py similarity index 100% rename from lib/exabgp/configuration/operational/parser.py rename to src/exabgp/configuration/operational/parser.py diff --git a/lib/exabgp/configuration/parser.py b/src/exabgp/configuration/parser.py similarity index 100% rename from lib/exabgp/configuration/parser.py rename to src/exabgp/configuration/parser.py diff --git a/lib/exabgp/configuration/process/__init__.py b/src/exabgp/configuration/process/__init__.py similarity index 100% rename from lib/exabgp/configuration/process/__init__.py rename to src/exabgp/configuration/process/__init__.py diff --git a/lib/exabgp/configuration/process/parser.py b/src/exabgp/configuration/process/parser.py similarity index 100% rename from lib/exabgp/configuration/process/parser.py rename to src/exabgp/configuration/process/parser.py diff --git a/lib/exabgp/configuration/static/__init__.py b/src/exabgp/configuration/static/__init__.py similarity index 100% rename from lib/exabgp/configuration/static/__init__.py rename to src/exabgp/configuration/static/__init__.py diff --git a/lib/exabgp/configuration/static/mpls.py b/src/exabgp/configuration/static/mpls.py similarity index 100% rename from lib/exabgp/configuration/static/mpls.py rename to src/exabgp/configuration/static/mpls.py diff --git a/lib/exabgp/configuration/static/parser.py b/src/exabgp/configuration/static/parser.py similarity index 100% rename from lib/exabgp/configuration/static/parser.py rename to src/exabgp/configuration/static/parser.py diff --git a/lib/exabgp/configuration/static/route.py b/src/exabgp/configuration/static/route.py similarity index 100% rename from lib/exabgp/configuration/static/route.py rename to src/exabgp/configuration/static/route.py diff --git a/lib/exabgp/configuration/template/__init__.py b/src/exabgp/configuration/template/__init__.py similarity index 100% rename from lib/exabgp/configuration/template/__init__.py rename to src/exabgp/configuration/template/__init__.py diff --git a/lib/exabgp/configuration/template/neighbor.py b/src/exabgp/configuration/template/neighbor.py similarity index 100% rename from lib/exabgp/configuration/template/neighbor.py rename to src/exabgp/configuration/template/neighbor.py diff --git a/lib/exabgp/data/__init__.py b/src/exabgp/data/__init__.py similarity index 100% rename from lib/exabgp/data/__init__.py rename to src/exabgp/data/__init__.py diff --git a/lib/exabgp/data/check.py b/src/exabgp/data/check.py similarity index 100% rename from lib/exabgp/data/check.py rename to src/exabgp/data/check.py diff --git a/lib/exabgp/debug/__init__.py b/src/exabgp/debug/__init__.py similarity index 100% rename from lib/exabgp/debug/__init__.py rename to src/exabgp/debug/__init__.py diff --git a/lib/exabgp/debug/intercept.py b/src/exabgp/debug/intercept.py similarity index 100% rename from lib/exabgp/debug/intercept.py rename to src/exabgp/debug/intercept.py diff --git a/lib/exabgp/debug/report.py b/src/exabgp/debug/report.py similarity index 100% rename from lib/exabgp/debug/report.py rename to src/exabgp/debug/report.py diff --git a/lib/exabgp/environment/__init__.py b/src/exabgp/environment/__init__.py similarity index 100% rename from lib/exabgp/environment/__init__.py rename to src/exabgp/environment/__init__.py diff --git a/lib/exabgp/environment/base.py b/src/exabgp/environment/base.py similarity index 100% rename from lib/exabgp/environment/base.py rename to src/exabgp/environment/base.py diff --git a/lib/exabgp/environment/environment.py b/src/exabgp/environment/environment.py similarity index 100% rename from lib/exabgp/environment/environment.py rename to src/exabgp/environment/environment.py diff --git a/lib/exabgp/environment/hashtable.py b/src/exabgp/environment/hashtable.py similarity index 100% rename from lib/exabgp/environment/hashtable.py rename to src/exabgp/environment/hashtable.py diff --git a/lib/exabgp/environment/parsing.py b/src/exabgp/environment/parsing.py similarity index 100% rename from lib/exabgp/environment/parsing.py rename to src/exabgp/environment/parsing.py diff --git a/lib/exabgp/environment/setup.py b/src/exabgp/environment/setup.py similarity index 100% rename from lib/exabgp/environment/setup.py rename to src/exabgp/environment/setup.py diff --git a/lib/exabgp/logger/__init__.py b/src/exabgp/logger/__init__.py similarity index 100% rename from lib/exabgp/logger/__init__.py rename to src/exabgp/logger/__init__.py diff --git a/lib/exabgp/logger/color.py b/src/exabgp/logger/color.py similarity index 100% rename from lib/exabgp/logger/color.py rename to src/exabgp/logger/color.py diff --git a/lib/exabgp/logger/format.py b/src/exabgp/logger/format.py similarity index 100% rename from lib/exabgp/logger/format.py rename to src/exabgp/logger/format.py diff --git a/lib/exabgp/logger/handler.py b/src/exabgp/logger/handler.py similarity index 100% rename from lib/exabgp/logger/handler.py rename to src/exabgp/logger/handler.py diff --git a/lib/exabgp/logger/history.py b/src/exabgp/logger/history.py similarity index 100% rename from lib/exabgp/logger/history.py rename to src/exabgp/logger/history.py diff --git a/lib/exabgp/logger/option.py b/src/exabgp/logger/option.py similarity index 100% rename from lib/exabgp/logger/option.py rename to src/exabgp/logger/option.py diff --git a/lib/exabgp/logger/tty.py b/src/exabgp/logger/tty.py similarity index 100% rename from lib/exabgp/logger/tty.py rename to src/exabgp/logger/tty.py diff --git a/lib/exabgp/netlink/__init__.py b/src/exabgp/netlink/__init__.py similarity index 100% rename from lib/exabgp/netlink/__init__.py rename to src/exabgp/netlink/__init__.py diff --git a/lib/exabgp/netlink/attributes.py b/src/exabgp/netlink/attributes.py similarity index 100% rename from lib/exabgp/netlink/attributes.py rename to src/exabgp/netlink/attributes.py diff --git a/lib/exabgp/netlink/firewall.py b/src/exabgp/netlink/firewall.py similarity index 100% rename from lib/exabgp/netlink/firewall.py rename to src/exabgp/netlink/firewall.py diff --git a/lib/exabgp/netlink/message.py b/src/exabgp/netlink/message.py similarity index 100% rename from lib/exabgp/netlink/message.py rename to src/exabgp/netlink/message.py diff --git a/lib/exabgp/netlink/netlink.py b/src/exabgp/netlink/netlink.py similarity index 100% rename from lib/exabgp/netlink/netlink.py rename to src/exabgp/netlink/netlink.py diff --git a/lib/exabgp/netlink/old.py b/src/exabgp/netlink/old.py similarity index 100% rename from lib/exabgp/netlink/old.py rename to src/exabgp/netlink/old.py diff --git a/lib/exabgp/netlink/route/__init__.py b/src/exabgp/netlink/route/__init__.py similarity index 100% rename from lib/exabgp/netlink/route/__init__.py rename to src/exabgp/netlink/route/__init__.py diff --git a/lib/exabgp/netlink/route/address.py b/src/exabgp/netlink/route/address.py similarity index 100% rename from lib/exabgp/netlink/route/address.py rename to src/exabgp/netlink/route/address.py diff --git a/lib/exabgp/netlink/route/link.py b/src/exabgp/netlink/route/link.py similarity index 100% rename from lib/exabgp/netlink/route/link.py rename to src/exabgp/netlink/route/link.py diff --git a/lib/exabgp/netlink/route/neighbor.py b/src/exabgp/netlink/route/neighbor.py similarity index 100% rename from lib/exabgp/netlink/route/neighbor.py rename to src/exabgp/netlink/route/neighbor.py diff --git a/lib/exabgp/netlink/route/network.py b/src/exabgp/netlink/route/network.py similarity index 100% rename from lib/exabgp/netlink/route/network.py rename to src/exabgp/netlink/route/network.py diff --git a/lib/exabgp/netlink/sequence.py b/src/exabgp/netlink/sequence.py similarity index 100% rename from lib/exabgp/netlink/sequence.py rename to src/exabgp/netlink/sequence.py diff --git a/lib/exabgp/netlink/tc.py b/src/exabgp/netlink/tc.py similarity index 100% rename from lib/exabgp/netlink/tc.py rename to src/exabgp/netlink/tc.py diff --git a/lib/exabgp/protocol/__init__.py b/src/exabgp/protocol/__init__.py similarity index 100% rename from lib/exabgp/protocol/__init__.py rename to src/exabgp/protocol/__init__.py diff --git a/lib/exabgp/protocol/family.py b/src/exabgp/protocol/family.py similarity index 100% rename from lib/exabgp/protocol/family.py rename to src/exabgp/protocol/family.py diff --git a/lib/exabgp/protocol/ip/__init__.py b/src/exabgp/protocol/ip/__init__.py similarity index 100% rename from lib/exabgp/protocol/ip/__init__.py rename to src/exabgp/protocol/ip/__init__.py diff --git a/lib/exabgp/protocol/ip/fragment.py b/src/exabgp/protocol/ip/fragment.py similarity index 100% rename from lib/exabgp/protocol/ip/fragment.py rename to src/exabgp/protocol/ip/fragment.py diff --git a/lib/exabgp/protocol/ip/icmp.py b/src/exabgp/protocol/ip/icmp.py similarity index 100% rename from lib/exabgp/protocol/ip/icmp.py rename to src/exabgp/protocol/ip/icmp.py diff --git a/lib/exabgp/protocol/ip/netmask.py b/src/exabgp/protocol/ip/netmask.py similarity index 100% rename from lib/exabgp/protocol/ip/netmask.py rename to src/exabgp/protocol/ip/netmask.py diff --git a/lib/exabgp/protocol/ip/port.py b/src/exabgp/protocol/ip/port.py similarity index 100% rename from lib/exabgp/protocol/ip/port.py rename to src/exabgp/protocol/ip/port.py diff --git a/lib/exabgp/protocol/ip/tcp/__init__.py b/src/exabgp/protocol/ip/tcp/__init__.py similarity index 100% rename from lib/exabgp/protocol/ip/tcp/__init__.py rename to src/exabgp/protocol/ip/tcp/__init__.py diff --git a/lib/exabgp/protocol/ip/tcp/flag.py b/src/exabgp/protocol/ip/tcp/flag.py similarity index 100% rename from lib/exabgp/protocol/ip/tcp/flag.py rename to src/exabgp/protocol/ip/tcp/flag.py diff --git a/lib/exabgp/protocol/iso/__init__.py b/src/exabgp/protocol/iso/__init__.py similarity index 100% rename from lib/exabgp/protocol/iso/__init__.py rename to src/exabgp/protocol/iso/__init__.py diff --git a/lib/exabgp/protocol/resource.py b/src/exabgp/protocol/resource.py similarity index 100% rename from lib/exabgp/protocol/resource.py rename to src/exabgp/protocol/resource.py diff --git a/lib/exabgp/reactor/__init__.py b/src/exabgp/reactor/__init__.py similarity index 100% rename from lib/exabgp/reactor/__init__.py rename to src/exabgp/reactor/__init__.py diff --git a/lib/exabgp/reactor/api/__init__.py b/src/exabgp/reactor/api/__init__.py similarity index 100% rename from lib/exabgp/reactor/api/__init__.py rename to src/exabgp/reactor/api/__init__.py diff --git a/lib/exabgp/reactor/api/command/__init__.py b/src/exabgp/reactor/api/command/__init__.py similarity index 100% rename from lib/exabgp/reactor/api/command/__init__.py rename to src/exabgp/reactor/api/command/__init__.py diff --git a/lib/exabgp/reactor/api/command/announce.py b/src/exabgp/reactor/api/command/announce.py similarity index 100% rename from lib/exabgp/reactor/api/command/announce.py rename to src/exabgp/reactor/api/command/announce.py diff --git a/lib/exabgp/reactor/api/command/command.py b/src/exabgp/reactor/api/command/command.py similarity index 100% rename from lib/exabgp/reactor/api/command/command.py rename to src/exabgp/reactor/api/command/command.py diff --git a/lib/exabgp/reactor/api/command/limit.py b/src/exabgp/reactor/api/command/limit.py similarity index 100% rename from lib/exabgp/reactor/api/command/limit.py rename to src/exabgp/reactor/api/command/limit.py diff --git a/lib/exabgp/reactor/api/command/neighbor.py b/src/exabgp/reactor/api/command/neighbor.py similarity index 100% rename from lib/exabgp/reactor/api/command/neighbor.py rename to src/exabgp/reactor/api/command/neighbor.py diff --git a/lib/exabgp/reactor/api/command/reactor.py b/src/exabgp/reactor/api/command/reactor.py similarity index 100% rename from lib/exabgp/reactor/api/command/reactor.py rename to src/exabgp/reactor/api/command/reactor.py diff --git a/lib/exabgp/reactor/api/command/rib.py b/src/exabgp/reactor/api/command/rib.py similarity index 100% rename from lib/exabgp/reactor/api/command/rib.py rename to src/exabgp/reactor/api/command/rib.py diff --git a/lib/exabgp/reactor/api/command/watchdog.py b/src/exabgp/reactor/api/command/watchdog.py similarity index 100% rename from lib/exabgp/reactor/api/command/watchdog.py rename to src/exabgp/reactor/api/command/watchdog.py diff --git a/lib/exabgp/reactor/api/processes.py b/src/exabgp/reactor/api/processes.py similarity index 100% rename from lib/exabgp/reactor/api/processes.py rename to src/exabgp/reactor/api/processes.py diff --git a/lib/exabgp/reactor/api/response/__init__.py b/src/exabgp/reactor/api/response/__init__.py similarity index 100% rename from lib/exabgp/reactor/api/response/__init__.py rename to src/exabgp/reactor/api/response/__init__.py diff --git a/lib/exabgp/reactor/api/response/answer.py b/src/exabgp/reactor/api/response/answer.py similarity index 100% rename from lib/exabgp/reactor/api/response/answer.py rename to src/exabgp/reactor/api/response/answer.py diff --git a/lib/exabgp/reactor/api/response/json.py b/src/exabgp/reactor/api/response/json.py similarity index 100% rename from lib/exabgp/reactor/api/response/json.py rename to src/exabgp/reactor/api/response/json.py diff --git a/lib/exabgp/reactor/api/response/text.py b/src/exabgp/reactor/api/response/text.py similarity index 100% rename from lib/exabgp/reactor/api/response/text.py rename to src/exabgp/reactor/api/response/text.py diff --git a/lib/exabgp/reactor/api/transcoder.py b/src/exabgp/reactor/api/transcoder.py similarity index 100% rename from lib/exabgp/reactor/api/transcoder.py rename to src/exabgp/reactor/api/transcoder.py diff --git a/lib/exabgp/reactor/asynchronous.py b/src/exabgp/reactor/asynchronous.py similarity index 100% rename from lib/exabgp/reactor/asynchronous.py rename to src/exabgp/reactor/asynchronous.py diff --git a/lib/exabgp/reactor/daemon.py b/src/exabgp/reactor/daemon.py similarity index 100% rename from lib/exabgp/reactor/daemon.py rename to src/exabgp/reactor/daemon.py diff --git a/lib/exabgp/reactor/delay.py b/src/exabgp/reactor/delay.py similarity index 100% rename from lib/exabgp/reactor/delay.py rename to src/exabgp/reactor/delay.py diff --git a/lib/exabgp/reactor/interrupt.py b/src/exabgp/reactor/interrupt.py similarity index 100% rename from lib/exabgp/reactor/interrupt.py rename to src/exabgp/reactor/interrupt.py diff --git a/lib/exabgp/reactor/keepalive.py b/src/exabgp/reactor/keepalive.py similarity index 100% rename from lib/exabgp/reactor/keepalive.py rename to src/exabgp/reactor/keepalive.py diff --git a/lib/exabgp/reactor/listener.py b/src/exabgp/reactor/listener.py similarity index 100% rename from lib/exabgp/reactor/listener.py rename to src/exabgp/reactor/listener.py diff --git a/lib/exabgp/reactor/loop.py b/src/exabgp/reactor/loop.py similarity index 100% rename from lib/exabgp/reactor/loop.py rename to src/exabgp/reactor/loop.py diff --git a/lib/exabgp/reactor/network/__init__.py b/src/exabgp/reactor/network/__init__.py similarity index 100% rename from lib/exabgp/reactor/network/__init__.py rename to src/exabgp/reactor/network/__init__.py diff --git a/lib/exabgp/reactor/network/connection.py b/src/exabgp/reactor/network/connection.py similarity index 100% rename from lib/exabgp/reactor/network/connection.py rename to src/exabgp/reactor/network/connection.py diff --git a/lib/exabgp/reactor/network/error.py b/src/exabgp/reactor/network/error.py similarity index 100% rename from lib/exabgp/reactor/network/error.py rename to src/exabgp/reactor/network/error.py diff --git a/lib/exabgp/reactor/network/incoming.py b/src/exabgp/reactor/network/incoming.py similarity index 100% rename from lib/exabgp/reactor/network/incoming.py rename to src/exabgp/reactor/network/incoming.py diff --git a/lib/exabgp/reactor/network/outgoing.py b/src/exabgp/reactor/network/outgoing.py similarity index 100% rename from lib/exabgp/reactor/network/outgoing.py rename to src/exabgp/reactor/network/outgoing.py diff --git a/lib/exabgp/reactor/network/tcp.py b/src/exabgp/reactor/network/tcp.py similarity index 100% rename from lib/exabgp/reactor/network/tcp.py rename to src/exabgp/reactor/network/tcp.py diff --git a/lib/exabgp/reactor/peer.py b/src/exabgp/reactor/peer.py similarity index 100% rename from lib/exabgp/reactor/peer.py rename to src/exabgp/reactor/peer.py diff --git a/lib/exabgp/reactor/protocol.py b/src/exabgp/reactor/protocol.py similarity index 100% rename from lib/exabgp/reactor/protocol.py rename to src/exabgp/reactor/protocol.py diff --git a/lib/exabgp/rib/__init__.py b/src/exabgp/rib/__init__.py similarity index 100% rename from lib/exabgp/rib/__init__.py rename to src/exabgp/rib/__init__.py diff --git a/lib/exabgp/rib/cache.py b/src/exabgp/rib/cache.py similarity index 100% rename from lib/exabgp/rib/cache.py rename to src/exabgp/rib/cache.py diff --git a/lib/exabgp/rib/change.py b/src/exabgp/rib/change.py similarity index 100% rename from lib/exabgp/rib/change.py rename to src/exabgp/rib/change.py diff --git a/lib/exabgp/rib/incoming.py b/src/exabgp/rib/incoming.py similarity index 100% rename from lib/exabgp/rib/incoming.py rename to src/exabgp/rib/incoming.py diff --git a/lib/exabgp/rib/outgoing.py b/src/exabgp/rib/outgoing.py similarity index 100% rename from lib/exabgp/rib/outgoing.py rename to src/exabgp/rib/outgoing.py diff --git a/lib/exabgp/util/__init__.py b/src/exabgp/util/__init__.py similarity index 100% rename from lib/exabgp/util/__init__.py rename to src/exabgp/util/__init__.py diff --git a/lib/exabgp/util/cache.py b/src/exabgp/util/cache.py similarity index 100% rename from lib/exabgp/util/cache.py rename to src/exabgp/util/cache.py diff --git a/lib/exabgp/util/coroutine.py b/src/exabgp/util/coroutine.py similarity index 100% rename from lib/exabgp/util/coroutine.py rename to src/exabgp/util/coroutine.py diff --git a/lib/exabgp/util/dictionary.py b/src/exabgp/util/dictionary.py similarity index 100% rename from lib/exabgp/util/dictionary.py rename to src/exabgp/util/dictionary.py diff --git a/lib/exabgp/util/dns.py b/src/exabgp/util/dns.py similarity index 100% rename from lib/exabgp/util/dns.py rename to src/exabgp/util/dns.py diff --git a/lib/exabgp/util/enumeration.py b/src/exabgp/util/enumeration.py similarity index 100% rename from lib/exabgp/util/enumeration.py rename to src/exabgp/util/enumeration.py diff --git a/lib/exabgp/util/errstr.py b/src/exabgp/util/errstr.py similarity index 100% rename from lib/exabgp/util/errstr.py rename to src/exabgp/util/errstr.py diff --git a/lib/exabgp/util/ip.py b/src/exabgp/util/ip.py similarity index 100% rename from lib/exabgp/util/ip.py rename to src/exabgp/util/ip.py diff --git a/lib/exabgp/util/od.py b/src/exabgp/util/od.py similarity index 100% rename from lib/exabgp/util/od.py rename to src/exabgp/util/od.py diff --git a/lib/exabgp/util/usage.py b/src/exabgp/util/usage.py similarity index 100% rename from lib/exabgp/util/usage.py rename to src/exabgp/util/usage.py diff --git a/lib/exabgp/vendoring/__init__.py b/src/exabgp/vendoring/__init__.py similarity index 100% rename from lib/exabgp/vendoring/__init__.py rename to src/exabgp/vendoring/__init__.py diff --git a/lib/exabgp/vendoring/gcdump.py b/src/exabgp/vendoring/gcdump.py similarity index 100% rename from lib/exabgp/vendoring/gcdump.py rename to src/exabgp/vendoring/gcdump.py diff --git a/lib/exabgp/vendoring/lsprofcalltree.py b/src/exabgp/vendoring/lsprofcalltree.py similarity index 100% rename from lib/exabgp/vendoring/lsprofcalltree.py rename to src/exabgp/vendoring/lsprofcalltree.py diff --git a/lib/exabgp/vendoring/objgraph.py b/src/exabgp/vendoring/objgraph.py similarity index 100% rename from lib/exabgp/vendoring/objgraph.py rename to src/exabgp/vendoring/objgraph.py diff --git a/lib/exabgp/vendoring/profiler.py b/src/exabgp/vendoring/profiler.py similarity index 100% rename from lib/exabgp/vendoring/profiler.py rename to src/exabgp/vendoring/profiler.py diff --git a/lib/exabgp/version.py b/src/exabgp/version.py similarity index 100% rename from lib/exabgp/version.py rename to src/exabgp/version.py