From e25b618e959da54e6b4c8763d9889be18177866b Mon Sep 17 00:00:00 2001 From: Ross McFarland Date: Wed, 26 Jan 2022 17:47:31 -0800 Subject: [PATCH] Initial pass at script/update-requirements, results of run --- requirements-dev.txt | 30 +++++++++----- requirements.txt | 34 +++++++++++----- script/update-requirements | 63 +++++++++++++++++++++++++++++ setup.py | 10 ++--- tests/test_octodns_manager.py | 2 +- tests/test_octodns_provider_base.py | 2 +- tests/test_octodns_source_axfr.py | 2 +- tests/test_octodns_source_envvar.py | 2 +- 8 files changed, 118 insertions(+), 27 deletions(-) create mode 100755 script/update-requirements diff --git a/requirements-dev.txt b/requirements-dev.txt index 2331aad..1492962 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -1,10 +1,22 @@ +Pygments==2.11.2 +bleach==4.1.0 build==0.7.0 -coverage -mock -pycodestyle==2.6.0 -pyflakes==2.2.0 -pytest -pytest-network -readme_renderer[md]==26.0 -requests_mock -twine==3.4.2 +cffi==1.15.0 +cmarkgfm==0.6.0 +colorama==0.4.4 +docutils==0.18.1 +importlib-metadata==4.10.1 +keyring==23.5.0 +pep517==0.12.0 +pkginfo==1.8.2 +pycodestyle==2.8.0 +pycparser==2.21 +pyflakes==2.4.0 +pytest-network==0.0.1 +readme-renderer==32.0 +requests-toolbelt==0.9.1 +rfc3986==2.0.0 +tqdm==4.62.3 +twine==3.7.1 +webencodings==0.5.1 +zipp==3.7.0 diff --git a/requirements.txt b/requirements.txt index 653572a..459df1f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,11 +1,27 @@ -PyYaml==5.4 -dnspython==1.16.0 -docutils==0.16 -fqdn==1.5.0 -jmespath==0.10.0 -natsort==6.2.1 +PyYAML==6.0 +attrs==21.4.0 +certifi==2021.10.8 +charset-normalizer==2.0.10 +coverage==6.3 +dnspython==2.2.0 +fqdn==1.5.1 +idna==3.3 +iniconfig==1.1.1 +natsort==8.0.2 +packaging==21.3 +pluggy==1.0.0 +pprintpp==0.4.0 +py==1.11.0 pycountry-convert==0.7.2 pycountry==22.1.10 -python-dateutil==2.8.1 -requests==2.25.1 -setuptools==60.5.0 +pyparsing==3.0.7 +pytest-cov==3.0.0 +pytest-mock==3.6.1 +pytest==6.2.5 +python-dateutil==2.8.2 +repoze.lru==0.7 +requests==2.27.1 +six==1.16.0 +toml==0.10.2 +tomli==2.0.0 +urllib3==1.26.8 diff --git a/script/update-requirements b/script/update-requirements new file mode 100755 index 0000000..7a2cbf5 --- /dev/null +++ b/script/update-requirements @@ -0,0 +1,63 @@ +#!/usr/bin/env python + +from os.path import join +from subprocess import check_call, check_output +from tempfile import TemporaryDirectory +import re + + +def parse_setup(lines, which): + match = re.search(fr'{which}\w*=\w*[\(\[](?P[^\)\]]*)', lines, + flags=re.DOTALL) + packages = match.groups('list')[0] + packages = re.sub(r"[\"'\s]+", '', packages, flags=re.MULTILINE) + packages = [p for p in packages.split(',') if p] + return packages + + +with open('setup.py') as fh: + lines = fh.read() + +install_requires = parse_setup(lines, 'install_requires') +tests_require = parse_setup(lines, 'tests_require') +dev_requires = [ + 'build>=0.7.0', + 'pycodestyle>=2.6.0', + 'pyflakes>=2.2.0', + 'readme_renderer[md]>=26.0', + 'twine>=3.4.2', +] + + +def print_packages(packages, heading): + print(f'{heading}:') + print(' ', end='') + print('\n '.join(packages)) + + +print_packages(install_requires, 'install_requires') +print_packages(tests_require, 'tests_require') +print_packages(dev_requires, 'dev_requires') + +with TemporaryDirectory() as tmpdir: + check_call(['python3', '-m', 'venv', tmpdir]) + + check_call([join(tmpdir, 'bin', 'pip'), 'install', *install_requires]) + frozen = check_output([join(tmpdir, 'bin', 'pip'), 'freeze']) + frozen = set(frozen.decode('utf-8').split()) + + check_call([join(tmpdir, 'bin', 'pip'), 'install', *tests_require, + *dev_requires]) + dev_frozen = check_output([join(tmpdir, 'bin', 'pip'), 'freeze']) + dev_frozen = set(dev_frozen.decode('utf-8').split()) - frozen + +print_packages(frozen, 'frozen') +print_packages(dev_frozen, 'dev_frozen') + +with open('requirements.txt', 'w') as fh: + fh.write('\n'.join(sorted(frozen))) + fh.write('\n') + +with open('requirements-dev.txt', 'w') as fh: + fh.write('\n'.join(sorted(dev_frozen))) + fh.write('\n') diff --git a/setup.py b/setup.py index 2560c0b..d5c2e70 100644 --- a/setup.py +++ b/setup.py @@ -62,7 +62,7 @@ setup( entry_points={ 'console_scripts': console_scripts, }, - install_requires=[ + install_requires=( 'PyYaml>=4.2b1', 'dnspython>=1.15.0', 'fqdn>=1.5.0', @@ -70,8 +70,8 @@ setup( 'pycountry>=19.8.18', 'pycountry-convert>=0.7.2', 'python-dateutil>=2.8.1', - 'requests>=2.20.0' - ], + 'requests>=2.20.0', + ), license='MIT', long_description=long_description(), long_description_content_type='text/markdown', @@ -81,7 +81,7 @@ setup( url='https://github.com/octodns/octodns', version=octodns.__VERSION__, tests_require=( - 'pytest', - 'pytest-network', + 'pytest>=6.2.5', + 'pytest-network>=0.0.1', ), ) diff --git a/tests/test_octodns_manager.py b/tests/test_octodns_manager.py index ce171bd..06ec7ca 100644 --- a/tests/test_octodns_manager.py +++ b/tests/test_octodns_manager.py @@ -15,8 +15,8 @@ from octodns.record import Create, Delete, Record from octodns.yaml import safe_load from octodns.zone import Zone -from mock import MagicMock, patch from unittest import TestCase +from unittest.mock import MagicMock, patch from helpers import DynamicProvider, GeoProvider, NoSshFpProvider, \ PlannableProvider, SimpleProvider, TemporaryDirectory diff --git a/tests/test_octodns_provider_base.py b/tests/test_octodns_provider_base.py index 7f4be9e..bd6c361 100644 --- a/tests/test_octodns_provider_base.py +++ b/tests/test_octodns_provider_base.py @@ -6,8 +6,8 @@ from __future__ import absolute_import, division, print_function, \ unicode_literals from logging import getLogger -from mock import MagicMock, call from unittest import TestCase +from unittest.mock import MagicMock, call from octodns.processor.base import BaseProcessor from octodns.provider import SupportsException diff --git a/tests/test_octodns_source_axfr.py b/tests/test_octodns_source_axfr.py index 5a01ca5..9e34d06 100644 --- a/tests/test_octodns_source_axfr.py +++ b/tests/test_octodns_source_axfr.py @@ -8,10 +8,10 @@ from __future__ import absolute_import, division, print_function, \ import dns.zone from dns.exception import DNSException -from mock import patch from os.path import exists from shutil import copyfile from unittest import TestCase +from unittest.mock import patch from octodns.source.axfr import AxfrSource, AxfrSourceZoneTransferFailed, \ ZoneFileSource, ZoneFileSourceLoadFailure diff --git a/tests/test_octodns_source_envvar.py b/tests/test_octodns_source_envvar.py index f752821..775b541 100644 --- a/tests/test_octodns_source_envvar.py +++ b/tests/test_octodns_source_envvar.py @@ -1,5 +1,5 @@ -from mock import patch from unittest import TestCase +from unittest.mock import patch from octodns.source.envvar import EnvVarSource from octodns.source.envvar import EnvironmentVariableNotFoundException