Browse Source

Merge branch 'main' into record-data-octodns

pull/1102/head
Ross McFarland 2 years ago
committed by GitHub
parent
commit
139e73cfd0
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 60 additions and 44 deletions
  1. +9
    -0
      octodns/deprecation.py
  2. +9
    -1
      octodns/processor/meta.py
  3. +4
    -2
      octodns/processor/spf.py
  4. +4
    -2
      octodns/provider/yaml.py
  5. +4
    -2
      octodns/record/ds.py
  6. +4
    -2
      octodns/record/geo.py
  7. +4
    -2
      octodns/record/spf.py
  8. +4
    -2
      octodns/zone.py
  9. +5
    -1
      pyproject.toml
  10. +13
    -12
      requirements-dev.txt
  11. +0
    -18
      tests/test_octodns_record_geo.py

+ 9
- 0
octodns/deprecation.py View File

@ -0,0 +1,9 @@
#
#
#
from warnings import warn
def deprecated(message, stacklevel=2):
warn(message, DeprecationWarning, stacklevel=stacklevel)

+ 9
- 1
octodns/processor/meta.py View File

@ -10,6 +10,14 @@ from .. import __version__
from ..record import Record
from .base import BaseProcessor
# TODO: remove once we require python >= 3.11
try: # pragma: no cover
from datetime import UTC
except ImportError: # pragma: no cover
from datetime import timedelta, timezone
UTC = timezone(timedelta())
def _keys(values):
return set(v.split('=', 1)[0] for v in values)
@ -55,7 +63,7 @@ class MetaProcessor(BaseProcessor):
@classmethod
def now(cls):
return datetime.utcnow().isoformat()
return datetime.now(UTC).isoformat()
@classmethod
def uuid(cls):


+ 4
- 2
octodns/processor/spf.py View File

@ -10,6 +10,7 @@ from dns.resolver import Answer
from octodns.record.base import Record
from ..deprecation import deprecated
from .base import BaseProcessor, ProcessorException
@ -55,8 +56,9 @@ class SpfDnsLookupProcessor(BaseProcessor):
def __init__(self, name):
self.log.debug(f"SpfDnsLookupProcessor: {name}")
self.log.warning(
'SpfDnsLookupProcessor is DEPRECATED in favor of the version relocated into octodns-spf and will be removed in 2.0'
deprecated(
'SpfDnsLookupProcessor is DEPRECATED in favor of the version relocated into octodns-spf and will be removed in 2.0',
stacklevel=99,
)
super().__init__(name)


+ 4
- 2
octodns/provider/yaml.py View File

@ -7,6 +7,7 @@ from collections import defaultdict
from os import listdir, makedirs
from os.path import isdir, isfile, join
from ..deprecation import deprecated
from ..record import Record
from ..yaml import safe_dump, safe_load
from . import ProviderException
@ -464,6 +465,7 @@ class SplitYamlProvider(YamlProvider):
}
)
super().__init__(id, directory, *args, **kwargs)
self.log.warning(
'__init__: DEPRECATED use YamlProvider with split_extension, split_catchall, and disable_zonefile instead, will go away in v2.0'
deprecated(
'SplitYamlProvider is DEPRECATED, use YamlProvider with split_extension, split_catchall, and disable_zonefile instead, will go away in v2.0',
stacklevel=99,
)

+ 4
- 2
octodns/record/ds.py View File

@ -4,6 +4,7 @@
from logging import getLogger
from ..deprecation import deprecated
from ..equality import EqualityTupleMixin
from .base import Record, ValuesMixin
from .rr import RrParseError
@ -48,8 +49,9 @@ class DsValue(EqualityTupleMixin, dict):
# it is safe to assume if public_key or flags are defined then it is "old" style
# A DS record without public_key doesn't make any sense and shouldn't have validated previously
if "public_key" in value or "flags" in value:
cls.log.warning(
'"algorithm", "flags", "public_key", and "protocol" support is DEPRECATED and will be removed in 2.0'
deprecated(
'DS properties "algorithm", "flags", "public_key", and "protocol" support is DEPRECATED and will be removed in 2.0',
stacklevel=99,
)
try:
int(value['flags'])


+ 4
- 2
octodns/record/geo.py View File

@ -5,6 +5,7 @@
import re
from logging import getLogger
from ..deprecation import deprecated
from ..equality import EqualityTupleMixin
from .base import ValuesMixin
from .change import Update
@ -141,8 +142,9 @@ class _GeoMixin(ValuesMixin):
reasons = super().validate(name, fqdn, data)
try:
geo = dict(data['geo'])
cls.log.warning(
'NOTICE: `geo` record support is deprecated and should be migrated to `dynamic` records'
deprecated(
'`geo` records are DEPRECATED. `dynamic` records should be used instead. Will be removed in 2.0',
stacklevel=99,
)
for code, values in geo.items():
reasons.extend(GeoValue._validate_geo(code))


+ 4
- 2
octodns/record/spf.py View File

@ -2,6 +2,7 @@
#
#
from ..deprecation import deprecated
from .base import Record
from .chunked import _ChunkedValue, _ChunkedValuesMixin
@ -12,8 +13,9 @@ class SpfRecord(_ChunkedValuesMixin, Record):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.log.warning(
'The SPF record type is DEPRECATED in favor of TXT values and will become an ValidationError in 2.0'
deprecated(
'The SPF record type is DEPRECATED in favor of TXT values and will become an ValidationError in 2.0',
stacklevel=99,
)


+ 4
- 2
octodns/zone.py View File

@ -6,6 +6,7 @@ import re
from collections import defaultdict
from logging import getLogger
from .deprecation import deprecated
from .idna import idna_decode, idna_encode
from .record import Create, Delete
@ -197,8 +198,9 @@ class Zone(object):
# TODO: delete this at v2.0.0rc0
def _remove_record(self, record):
self.log.warning(
'_remove_record: method has been deprecated, used remove_record instead'
deprecated(
'_remove_record has been deprecated, used remove_record instead. Will be removed in 2.0',
stacklevel=3,
)
return self.remove_record(record)


+ 5
- 1
pyproject.toml View File

@ -9,4 +9,8 @@ known_first_party="octodns"
line_length=80
[tool.pytest.ini_options]
pythonpath = "."
filterwarnings = [
'error',
'ignore:.*DEPRECATED.*2.0',
]
pythonpath = "."

+ 13
- 12
requirements-dev.txt View File

@ -1,19 +1,20 @@
# DO NOT EDIT THIS FILE DIRECTLY - use ./script/update-requirements to update
Pygments==2.16.1
black==23.9.1
Pygments==2.17.2
black==23.11.0
build==1.0.3
certifi==2023.7.22
certifi==2023.11.17
cffi==1.16.0
charset-normalizer==3.3.0
charset-normalizer==3.3.2
click==8.1.7
cmarkgfm==2022.10.27
coverage==7.3.2
docutils==0.20.1
exceptiongroup==1.2.0
importlib-metadata==6.8.0
iniconfig==2.0.0
isort==5.12.0
jaraco.classes==3.3.0
keyring==24.2.0
keyring==24.3.0
markdown-it-py==3.0.0
mdurl==0.1.2
more-itertools==10.1.0
@ -22,7 +23,7 @@ nh3==0.2.14
packaging==23.2
pathspec==0.11.2
pkginfo==1.9.6
platformdirs==3.11.0
platformdirs==4.0.0
pluggy==1.3.0
pprintpp==0.4.0
pycountry-convert==0.7.2
@ -31,17 +32,17 @@ pycparser==2.21
pyflakes==3.1.0
pyproject_hooks==1.0.0
pytest-cov==4.1.0
pytest-mock==3.11.1
pytest-mock==3.12.0
pytest-network==0.0.1
pytest==7.4.2
pytest==7.4.3
readme-renderer==42.0
repoze.lru==0.7
requests-toolbelt==1.0.0
requests==2.31.0
rfc3986==2.0.0
rich==13.6.0
setuptools==68.2.2
rich==13.7.0
tomli==2.0.1
twine==4.0.2
urllib3==2.0.6
wheel==0.41.2
typing_extensions==4.8.0
urllib3==2.1.0
zipp==3.17.0

+ 0
- 18
tests/test_octodns_record_geo.py View File

@ -213,24 +213,6 @@ class TestRecordGeoCodes(TestCase):
self.assertTrue(c >= b)
def test_validation(self):
with self.assertLogs('Record', level='WARNING') as cm:
Record.new(
self.zone,
'',
{
'geo': {'NA': ['1.2.3.5'], 'NA-US': ['1.2.3.5', '1.2.3.6']},
'type': 'A',
'ttl': 600,
'value': '1.2.3.4',
},
)
self.assertEqual(
[
'WARNING:Record:NOTICE: `geo` record support is deprecated and should be migrated to `dynamic` records'
],
cm.output,
)
# invalid ip address
with self.assertRaises(ValidationError) as ctx:
Record.new(


Loading…
Cancel
Save