diff --git a/.changelog/04299448c91147b49c25f6d09055f980.md b/.changelog/04299448c91147b49c25f6d09055f980.md deleted file mode 100644 index d60fc74..0000000 --- a/.changelog/04299448c91147b49c25f6d09055f980.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -type: none ---- -Fix changelog pr urls \ No newline at end of file diff --git a/.changelog/0a8ba4255d9a4ba29ac6f55fb83cd624.md b/.changelog/0a8ba4255d9a4ba29ac6f55fb83cd624.md deleted file mode 100644 index 2b91e72..0000000 --- a/.changelog/0a8ba4255d9a4ba29ac6f55fb83cd624.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -type: none ---- -Fix all sphinx docstring errors and warnings, not links \ No newline at end of file diff --git a/.changelog/1088e071ae0d4bff859ade49561aad91.md b/.changelog/1088e071ae0d4bff859ade49561aad91.md deleted file mode 100644 index 91a69d4..0000000 --- a/.changelog/1088e071ae0d4bff859ade49561aad91.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -type: none ---- -WIP: major restructuring of docs, README/doc split \ No newline at end of file diff --git a/.changelog/222b759159b24c63a4d576cfefb20efa.md b/.changelog/222b759159b24c63a4d576cfefb20efa.md deleted file mode 100644 index eb86781..0000000 --- a/.changelog/222b759159b24c63a4d576cfefb20efa.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -type: none ---- -Remove stray parens from doc links \ No newline at end of file diff --git a/.changelog/2809d288040441ccb8e6633f514b09b0.md b/.changelog/2809d288040441ccb8e6633f514b09b0.md deleted file mode 100644 index 91ca407..0000000 --- a/.changelog/2809d288040441ccb8e6633f514b09b0.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -type: minor ---- - -Add processor for clamping TTLs diff --git a/.changelog/2fb53cdf5bfc424fa6e84d3058605c37.md b/.changelog/2fb53cdf5bfc424fa6e84d3058605c37.md deleted file mode 100644 index a3a534c..0000000 --- a/.changelog/2fb53cdf5bfc424fa6e84d3058605c37.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -type: none ---- -Minor README fixes \ No newline at end of file diff --git a/.changelog/3d960d8405e646d6a57602286d295bbf.md b/.changelog/3d960d8405e646d6a57602286d295bbf.md deleted file mode 100644 index b271bcd..0000000 --- a/.changelog/3d960d8405e646d6a57602286d295bbf.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -type: minor ---- -Improve AutoArpa wildcard handling with wildcard_replacement option \ No newline at end of file diff --git a/.changelog/3deb7273fd0b4516a6c66636e3c1ed34.md b/.changelog/3deb7273fd0b4516a6c66636e3c1ed34.md deleted file mode 100644 index 455e625..0000000 --- a/.changelog/3deb7273fd0b4516a6c66636e3c1ed34.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -type: none ---- -Remove really old secret clearing code that doesn't apply anymore \ No newline at end of file diff --git a/.changelog/3f8fbaa8c6324b649fa64ccbec8f8f5c.md b/.changelog/3f8fbaa8c6324b649fa64ccbec8f8f5c.md deleted file mode 100644 index d0f75ed..0000000 --- a/.changelog/3f8fbaa8c6324b649fa64ccbec8f8f5c.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -type: none ---- -Add comprehensive API documentation to Zone class and related exceptions diff --git a/.changelog/503eda9ec20e470cafb7904500dd22cb.md b/.changelog/503eda9ec20e470cafb7904500dd22cb.md deleted file mode 100644 index 6f7da1d..0000000 --- a/.changelog/503eda9ec20e470cafb7904500dd22cb.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -type: minor ---- -Add glob and regex support to dynamic zone config \ No newline at end of file diff --git a/.changelog/5557cbfa56bb40bfbb97511af4659996.md b/.changelog/5557cbfa56bb40bfbb97511af4659996.md deleted file mode 100644 index a97cc07..0000000 --- a/.changelog/5557cbfa56bb40bfbb97511af4659996.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -type: none ---- -Add a custom source example to the doc \ No newline at end of file diff --git a/.changelog/559ae3e1ace54db88f122ed7299e11c0.md b/.changelog/559ae3e1ace54db88f122ed7299e11c0.md deleted file mode 100644 index 25acec0..0000000 --- a/.changelog/559ae3e1ace54db88f122ed7299e11c0.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -type: none ---- -Doc heading fixes \ No newline at end of file diff --git a/.changelog/5989661ef50b4f31a1ca8019a702a4bb.md b/.changelog/5989661ef50b4f31a1ca8019a702a4bb.md deleted file mode 100644 index 9994e08..0000000 --- a/.changelog/5989661ef50b4f31a1ca8019a702a4bb.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -type: none ---- -Update requirements*.txt \ No newline at end of file diff --git a/.changelog/5aab3287678b455f9644aa070a1e5457.md b/.changelog/5aab3287678b455f9644aa070a1e5457.md deleted file mode 100644 index e2065ca..0000000 --- a/.changelog/5aab3287678b455f9644aa070a1e5457.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -type: none ---- -Full doc coverage of the api and related cleanup \ No newline at end of file diff --git a/.changelog/5f9e8b0b6b7f4093b109a56d12239302.md b/.changelog/5f9e8b0b6b7f4093b109a56d12239302.md deleted file mode 100644 index fc3d2b5..0000000 --- a/.changelog/5f9e8b0b6b7f4093b109a56d12239302.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -type: minor ---- -Add OwnershipProcessor.should_replace to support ownership on alias zones diff --git a/.changelog/6fa199b732dc40c58481d369ce992eb3.md b/.changelog/6fa199b732dc40c58481d369ce992eb3.md deleted file mode 100644 index 217573b..0000000 --- a/.changelog/6fa199b732dc40c58481d369ce992eb3.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -type: none ---- -Spelling/type-o corrections in docs \ No newline at end of file diff --git a/.changelog/99fb6721f2d340ed933d7407c91622ca.md b/.changelog/99fb6721f2d340ed933d7407c91622ca.md deleted file mode 100644 index 2ba6b0d..0000000 --- a/.changelog/99fb6721f2d340ed933d7407c91622ca.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -type: none ---- -Pass at adding AI-assisted API documentation \ No newline at end of file diff --git a/.changelog/b146c7e36d3142c7ad5cac2518c43178.md b/.changelog/b146c7e36d3142c7ad5cac2518c43178.md new file mode 100644 index 0000000..900754c --- /dev/null +++ b/.changelog/b146c7e36d3142c7ad5cac2518c43178.md @@ -0,0 +1,4 @@ +--- +type: none +--- +Pull in the latest template changes \ No newline at end of file diff --git a/.changelog/b15794db1fe142b18e5a7da21abc76cc.md b/.changelog/b15794db1fe142b18e5a7da21abc76cc.md deleted file mode 100644 index 9a210be..0000000 --- a/.changelog/b15794db1fe142b18e5a7da21abc76cc.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -type: minor ---- -Allow CNAME to coexist if all records have lenient=True \ No newline at end of file diff --git a/.changelog/b1e000a850584f8fa14a300538a85f4f.md b/.changelog/b1e000a850584f8fa14a300538a85f4f.md deleted file mode 100644 index 2e9eed4..0000000 --- a/.changelog/b1e000a850584f8fa14a300538a85f4f.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -type: none ---- -Add a pass at documenting the life-cycle of zones during a sync \ No newline at end of file diff --git a/.changelog/bb94cc6d9dde44b38d875cf17be4bbce.md b/.changelog/bb94cc6d9dde44b38d875cf17be4bbce.md deleted file mode 100644 index da44967..0000000 --- a/.changelog/bb94cc6d9dde44b38d875cf17be4bbce.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -type: minor ---- -Full rewrite of octodns-report: support for IPv6 resolvers, async names resolution and JSON output \ No newline at end of file diff --git a/.changelog/bc86f3ff5947408287b796d73e1b1ea6.md b/.changelog/bc86f3ff5947408287b796d73e1b1ea6.md deleted file mode 100644 index 9db8729..0000000 --- a/.changelog/bc86f3ff5947408287b796d73e1b1ea6.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -type: none ---- -Fix doc linking warns \ No newline at end of file diff --git a/.changelog/bec5cc4923da4128b90cd6bc6d66af76.md b/.changelog/bec5cc4923da4128b90cd6bc6d66af76.md deleted file mode 100644 index 86e13bf..0000000 --- a/.changelog/bec5cc4923da4128b90cd6bc6d66af76.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -type: none ---- -Fix logging issues in Manager: convert generator to list and correct log method prefix diff --git a/.changelog/cbeaa629126c4d7bbb6f8b59e76b8835.md b/.changelog/cbeaa629126c4d7bbb6f8b59e76b8835.md deleted file mode 100644 index 338be56..0000000 --- a/.changelog/cbeaa629126c4d7bbb6f8b59e76b8835.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -type: none ---- -Fix venv activation not working when using a custom VENV_NAME \ No newline at end of file diff --git a/.changelog/e3c80e83e7c4487bb8cd20f31c004619.md b/.changelog/e3c80e83e7c4487bb8cd20f31c004619.md deleted file mode 100644 index 270ee04..0000000 --- a/.changelog/e3c80e83e7c4487bb8cd20f31c004619.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -type: none ---- -Add changelog slash command \ No newline at end of file diff --git a/.changelog/f8d90eb95d1d449da1da865376cd1343.md b/.changelog/f8d90eb95d1d449da1da865376cd1343.md deleted file mode 100644 index b56e188..0000000 --- a/.changelog/f8d90eb95d1d449da1da865376cd1343.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -type: none ---- -Fixes to get readthedocs happy \ No newline at end of file diff --git a/.changelog/fc2ce1a8cc5f4f1981b5b1911a28c2f8.md b/.changelog/fc2ce1a8cc5f4f1981b5b1911a28c2f8.md deleted file mode 100644 index 0b8ec28..0000000 --- a/.changelog/fc2ce1a8cc5f4f1981b5b1911a28c2f8.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -type: minor ---- -Add processor support to octodns-dump \ No newline at end of file diff --git a/.git_hooks_pre-commit b/.git_hooks_pre-commit index cb9fe46..88259f8 100755 --- a/.git_hooks_pre-commit +++ b/.git_hooks_pre-commit @@ -5,10 +5,10 @@ SCRIPT_PATH="$( dirname -- "$( readlink -f -- "${0}"; )"; )/script" # Activate OctoDNS Python venv source "${SCRIPT_PATH}/common.sh" -./script/changelog check -./script/lint -./script/format --check --quiet || ( +"${SCRIPT_PATH}/changelog" check +"${SCRIPT_PATH}/lint" +"${SCRIPT_PATH}/format" --check --quiet || ( echo "Formatting check failed, run ./script/format" && exit 1 ) -./script/coverage +"${SCRIPT_PATH}/coverage" diff --git a/CHANGELOG.md b/CHANGELOG.md index 263aee9..42cad78 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,14 @@ +## 1.14.0 - 2025-10-24 + +Minor: +* Full rewrite of octodns-report: support for IPv6 resolvers, async names resolution and JSON output - [#1321](https://github.com/octodns/octodns/pull/1321) +* Add processor for clamping TTLs - [#1318](https://github.com/octodns/octodns/pull/1318) +* Add processor support to octodns-dump - [#1309](https://github.com/octodns/octodns/pull/1309) +* Add glob and regex support to dynamic zone config - [#1304](https://github.com/octodns/octodns/pull/1304) +* Improve AutoArpa wildcard handling with wildcard_replacement option - [#1302](https://github.com/octodns/octodns/pull/1302) +* Allow CNAME to coexist if all records have lenient=True - [#1300](https://github.com/octodns/octodns/pull/1300) +* Add OwnershipProcessor.should_replace to support ownership on alias zones - [#1298](https://github.com/octodns/octodns/pull/1298) + ## 1.13.0 - 2025-08-06 - And then there was changelet Minor: diff --git a/octodns/__init__.py b/octodns/__init__.py index 19e535d..f94bafd 100644 --- a/octodns/__init__.py +++ b/octodns/__init__.py @@ -1,4 +1,4 @@ 'OctoDNS: DNS as code - Tools for managing DNS across multiple providers' # TODO: remove __VERSION__ w/2.x -__version__ = __VERSION__ = '1.13.0' +__version__ = __VERSION__ = '1.14.0' diff --git a/script/bootstrap b/script/bootstrap index 90071ac..a7d85e7 100755 --- a/script/bootstrap +++ b/script/bootstrap @@ -26,7 +26,7 @@ python -m pip install -U 'pip>=10.0.1' python -m pip install -r requirements.txt if [ "$ENV" != "production" ]; then - python -m pip install -r requirements-dev.txt -r requirements-docs.txt + python -m pip install -r requirements-dev.txt fi if [ -d ".git" ]; then diff --git a/script/cibuild b/script/cibuild index e652b72..1b2d86d 100755 --- a/script/cibuild +++ b/script/cibuild @@ -1,17 +1,12 @@ -#!/bin/sh - -set -e - -cd "$(dirname "$0")/.." +#!/bin/bash echo "## bootstrap ###################################################################" script/bootstrap -if [ -z "$VENV_NAME" ]; then - VENV_NAME="env" -fi - -. "$VENV_NAME/bin/activate" +# Get current script path +SCRIPT_PATH="$( dirname -- "$( readlink -f -- "${0}"; )"; )" +# Activate OctoDNS Python venv +source "${SCRIPT_PATH}/common.sh" echo "## environment & versions ######################################################" python --version @@ -19,7 +14,7 @@ pip --version echo "## modules: " pip freeze echo "## clean up ####################################################################" -find octodns tests -name "*.pyc" -exec rm {} \; +find octodns tests* -name "*.pyc" -exec rm {} \; rm -f *.pyc echo "## begin #######################################################################" # For now it's just lint... diff --git a/script/cibuild-setup-py b/script/cibuild-setup-py index 13cc9ed..cac4e82 100755 --- a/script/cibuild-setup-py +++ b/script/cibuild-setup-py @@ -18,6 +18,10 @@ python -m build --sdist --wheel echo "## validate wheel install ###################################################" pip install dist/*$VERSION*.whl echo "## validate tests can run against installed code ###############################" -pip install pytest pytest-network +# filename needs to resolved independently as pip requires quoting and doesn't support +# wildcards when installing extra requirements +# (see: https://pip.pypa.io/en/stable/user_guide/#installing-from-wheels) +wheel_file=$(ls dist/*$VERSION*.whl) +pip install "${wheel_file}[test]" pytest --disable-network echo "## complete ####################################################################" diff --git a/script/coverage b/script/coverage index c47d2ca..3b5307c 100755 --- a/script/coverage +++ b/script/coverage @@ -1,25 +1,30 @@ #!/bin/bash # Get current script path -SCRIPT_PATH="$( dirname -- "$( readlink -f -- "${0}"; )"; )" +SCRIPT_PATH="$(dirname -- "$(readlink -f -- "${0}")")" # Activate OctoDNS Python venv source "${SCRIPT_PATH}/common.sh" SOURCE_DIR="octodns/" # Don't allow disabling coverage -grep -r -I --line-number "# pragma: +no.*cover" $SOURCE_DIR && { - echo "Code coverage should not be disabled" +PRAGMA_OUTPUT=$(grep -r -I --line-number "# pragma: \+no.*cover" "$SOURCE_DIR" || echo) +PRAGMA_COUNT=$(echo "$PRAGMA_OUTPUT" | grep -c . || true) +PRAGMA_ALLOWED=2 +if [ "$PRAGMA_COUNT" -gt "$PRAGMA_ALLOWED" ]; then + echo "Found $PRAGMA_COUNT instances of 'pragma: no cover' (no more than $PRAGMA_ALLOWED allowed):" + echo "$PRAGMA_OUTPUT" + echo "Code coverage should not be disabled, except for version handling blocks" exit 1 -} +fi pytest \ - --disable-network \ - --cov-reset \ - --cov=$SOURCE_DIR \ - --cov-fail-under=100 \ - --cov-report=html \ - --cov-report=xml \ - --cov-report=term \ - --cov-branch \ - "$@" + --disable-network \ + --cov-reset \ + --cov=$SOURCE_DIR \ + --cov-fail-under=100 \ + --cov-report=html \ + --cov-report=xml \ + --cov-report=term \ + --cov-branch \ + "$@" diff --git a/script/release b/script/release index f3c18a2..248a8a5 100755 --- a/script/release +++ b/script/release @@ -5,6 +5,8 @@ SCRIPT_PATH="$( dirname -- "$( readlink -f -- "${0}"; )"; )" # Activate OctoDNS Python venv source "${SCRIPT_PATH}/common.sh" +set -o pipefail + PYPYRC="$HOME/.pypirc" if [ ! -e "$PYPYRC" ]; then cat << EndOfMessage >&2 @@ -18,28 +20,12 @@ EndOfMessage exit 1 fi -# Set so that setup.py will create a public release style version number -export OCTODNS_RELEASE=1 - -VERSION="$(grep "^__version__" "$ROOT/octodns/__init__.py" | sed -e "s/.* = '//" -e "s/'$//")" +VERSION="$(grep "^__version__" "octodns/__init__.py" | sed -e "s/.* = '//" -e "s/'$//")" git tag -s "v$VERSION" -m "Release $VERSION" git push origin "v$VERSION" echo "Tagged and pushed v$VERSION" - -TMP_DIR=$(mktemp -d -t ci-XXXXXXXXXX) -git archive --format tar "v$VERSION" | tar xv -C $TMP_DIR -echo "Created clean room $TMP_DIR and archived $VERSION into it" - -(cd "$TMP_DIR" && python -m build --sdist --wheel) - -if [ ! -d dist ]; then - mkdir dist/ -fi - -cp $TMP_DIR/dist/*$VERSION.tar.gz $TMP_DIR/dist/*$VERSION*.whl dist/ -echo "Copied $TMP_DIR/dists into ./dist" - +python -m build --sdist --wheel twine check dist/*$VERSION.tar.gz dist/*$VERSION*.whl twine upload dist/*$VERSION.tar.gz dist/*$VERSION*.whl echo "Uploaded $VERSION" diff --git a/setup.py b/setup.py index 7cf6df5..b07e075 100644 --- a/setup.py +++ b/setup.py @@ -78,6 +78,7 @@ setup( 'sphinx-copybutton>=0.5.2', 'sphinx_rtd_theme', ), + 'test': tests_require, }, install_requires=( 'PyYaml>=4.2b1',