From 5f7ae4833a64dac7e6cca407498fc6a1e2baca90 Mon Sep 17 00:00:00 2001 From: Charles-Henri de Boysson Date: Fri, 30 Sep 2022 13:48:49 -0400 Subject: chore: migrate to setup.cfg (#666) closes #644 #662 #663 --- .gitignore | 2 + MANIFEST.in | 19 ++++++-- constraints.txt | 5 +- kazoo/tests/test_selectors_select.py | 12 ++--- pyproject.toml | 6 +++ requirements.txt | 2 - requirements_eventlet.txt | 1 - requirements_gevent.txt | 1 - requirements_sasl.txt | 1 - requirements_sphinx.txt | 4 -- requirements_test.txt | 6 --- setup.cfg | 94 +++++++++++++++++++++++++++++++++--- setup.py | 83 +------------------------------ tox.ini | 42 +++++++++------- 14 files changed, 141 insertions(+), 137 deletions(-) create mode 100644 pyproject.toml delete mode 100644 requirements.txt delete mode 100644 requirements_eventlet.txt delete mode 100644 requirements_gevent.txt delete mode 100644 requirements_sasl.txt delete mode 100644 requirements_sphinx.txt delete mode 100644 requirements_test.txt diff --git a/.gitignore b/.gitignore index 84cb76a..87c7457 100644 --- a/.gitignore +++ b/.gitignore @@ -32,3 +32,5 @@ zookeeper/ .tox /.settings /.metadata + +!.gitignore diff --git a/MANIFEST.in b/MANIFEST.in index 7b22377..1cdaf5e 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,12 +1,21 @@ +global-exclude *pyc *pyo __pycache__ +# Git files +exclude .gitignore +# CI/CD files +exclude .travis.yml.bak +exclude .clog.toml +prune .github + +exclude Makefile +exclude run_failure.py + include CHANGES.md include CONTRIBUTING.md include README.md include LICENSE include MANIFEST.in -exclude .gitignore -exclude .travis.yml -exclude Makefile -exclude run_failure.py + +include tox.ini + recursive-include kazoo * recursive-include docs * -global-exclude *pyc *pyo diff --git a/constraints.txt b/constraints.txt index 26c28c4..f661f97 100644 --- a/constraints.txt +++ b/constraints.txt @@ -1,9 +1,10 @@ # Consistent testing environment. +coverage==6.3.2 flake8==3.7.9 mock==3.0.5 objgraph==3.4.1 -pytest==4.6.9 -pytest-cov==2.8.1 +pytest-cov~=2.12 +pytest~=4.6 # Documentation building. Jinja2==2.7.3 diff --git a/kazoo/tests/test_selectors_select.py b/kazoo/tests/test_selectors_select.py index b5cdd33..2baf225 100644 --- a/kazoo/tests/test_selectors_select.py +++ b/kazoo/tests/test_selectors_select.py @@ -8,7 +8,7 @@ import os import socket import sys import unittest -from test import support + from kazoo.handlers.utils import selector_select select = selector_select @@ -56,18 +56,12 @@ class SelectTestCase(unittest.TestCase): cmd = 'for i in 0 1 2 3 4 5 6 7 8 9; do echo testing...; sleep 1; done' p = os.popen(cmd, 'r') for tout in (0, 1, 2, 4, 8, 16) + (None,) * 10: - if support.verbose: - print('timeout =', tout) rfd, wfd, xfd = select([p], [], [], tout) if (rfd, wfd, xfd) == ([], [], []): continue if (rfd, wfd, xfd) == ([p], [], []): line = p.readline() - if support.verbose: - print(repr(line)) if not line: - if support.verbose: - print('EOF') break continue self.fail('Unexpected return values from select():', rfd, wfd, xfd) @@ -87,5 +81,5 @@ class SelectTestCase(unittest.TestCase): self.assertEqual(select([], a, []), ([], a[:5], [])) -def tearDownModule(): - support.reap_children() +if __name__ == '__main__': + unittest.main() diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..0bea47b --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,6 @@ +[build-system] +build-backend = 'setuptools.build_meta' +requires = [ + 'setuptools >= 46.4.0', + 'wheel' +] \ No newline at end of file diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index 83adeb7..0000000 --- a/requirements.txt +++ /dev/null @@ -1,2 +0,0 @@ -six -selectors2>=2.0.2; python_version < "3.4.0" \ No newline at end of file diff --git a/requirements_eventlet.txt b/requirements_eventlet.txt deleted file mode 100644 index 4cbece8..0000000 --- a/requirements_eventlet.txt +++ /dev/null @@ -1 +0,0 @@ -eventlet>=0.17.1 diff --git a/requirements_gevent.txt b/requirements_gevent.txt deleted file mode 100644 index 4526759..0000000 --- a/requirements_gevent.txt +++ /dev/null @@ -1 +0,0 @@ -gevent>=1.2 diff --git a/requirements_sasl.txt b/requirements_sasl.txt deleted file mode 100644 index 8e04041..0000000 --- a/requirements_sasl.txt +++ /dev/null @@ -1 +0,0 @@ -pure_sasl>=0.5.1 diff --git a/requirements_sphinx.txt b/requirements_sphinx.txt deleted file mode 100644 index 6600509..0000000 --- a/requirements_sphinx.txt +++ /dev/null @@ -1,4 +0,0 @@ -Jinja2>=2.7.3 -Pygments>=1.6 -Sphinx>=1.2.2 -docutils>=0.12 diff --git a/requirements_test.txt b/requirements_test.txt deleted file mode 100644 index 30f6df7..0000000 --- a/requirements_test.txt +++ /dev/null @@ -1,6 +0,0 @@ -flake8 -mock -objgraph -pytest -pytest-cov -pytest-xdist diff --git a/setup.cfg b/setup.cfg index d2c3491..babe067 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,15 +1,95 @@ -[aliases] -clean_egg_info = egg_info -Db '' -release = clean_egg_info sdist bdist_wheel +[metadata] +name = kazoo +version = attr: kazoo.version.__version__ +author = Kazoo team +author_email = python-zk@googlegroups.com +url = https://kazoo.readthedocs.io +description = "Higher Level Zookeeper Client" +long_description = file: README.md, CHANGES.md +long_description_content_type = text/markdown +license = Apache 2.0 +license_file = LICENSE +platform = any +keywords = zookeeper, lock, leader, configuration +classifiers = + Development Status :: 5 - Production/Stable + License :: OSI Approved :: Apache Software License + Intended Audience :: Developers + Operating System :: OS Independent + Programming Language :: Python + Programming Language :: Python :: 3 + Programming Language :: Python :: 3.7 + Programming Language :: Python :: 3.8 + Programming Language :: Python :: Implementation :: CPython + Programming Language :: Python :: Implementation :: PyPy + Topic :: Communications + Topic :: System :: Distributed Computing + Topic :: System :: Networking +project_urls = + Documentation = https://kazoo.readthedocs.io + Changelog = https://github.com/python-zk/kazoo/releases + Source = https://github.com/python-zk/kazoo + Bug Tracker = https://github.com/python-zk/kazoo/issues -[bdist_wheel] -universal = 1 + +[options] +zip_safe = false +include_package_data = true +packages = find: +install_requires = + six + selectors2>=2.0.2 ; python_version < "3.4.0" + +[aliases] +release = sdist bdist_wheel [egg_info] tag_build = dev -[metadata] -license_file = LICENSE +[bdist_wheel] +universal = true + +[options.extras_require] +dev = + flake8 + +test = + mock + objgraph + pytest + pytest-cov + gevent>=1.2 ; implementation_name!='pypy' + eventlet>=0.17.1 ; implementation_name!='pypy' + +eventlet = + eventlet>=0.17.1 + +gevent = + gevent>=1.2 + +sasl = + pure_sasl>=0.5.1 + +docs = + Sphinx>=1.2.2 + +alldeps = + %(dev)s + %(eventlet)s + %(gevent)s + %(sasl)s + %(docs)s [tool:pytest] addopts = -ra -v + +[flake8] +builtins = _ +exclude = + .git, + __pycache__, + .venv/,venv/, + .tox/, + build/,dist/,*egg, + docs/conf.py, + zookeeper/ diff --git a/setup.py b/setup.py index c9f9dc2..b908cbe 100644 --- a/setup.py +++ b/setup.py @@ -1,82 +1,3 @@ -import os -import re -from setuptools import setup, find_packages -import sys +import setuptools -here = os.path.abspath(os.path.dirname(__file__)) -with open(os.path.join(here, 'README.md')) as f: - README = f.read() -with open(os.path.join(here, 'CHANGES.md')) as f: - CHANGES = f.read() -version = '' -with open(os.path.join(here, 'kazoo', 'version.py')) as f: - version = re.search(r'^__version__\s*=\s*[\'"]([^\'"]*)[\'"]', - f.read(), re.MULTILINE).group(1) - -PYPY = getattr(sys, 'pypy_version_info', False) and True or False - -install_requires = ['six', 'selectors2>=2.0.2; python_version < "3.4.0"'] - -tests_require = install_requires + [ - 'mock', - 'pytest', - 'pytest-cov', - 'flake8', - 'objgraph', -] - -if not PYPY: - tests_require += [ - 'gevent>=1.2', - 'eventlet>=0.17.1', - ] - -on_rtd = os.environ.get('READTHEDOCS', None) == 'True' -if on_rtd: - install_requires += [ - 'gevent>=1.2', - 'eventlet>=0.17.1', - 'pure-sasl', - ] - -setup( - name='kazoo', - version=version, - description='Higher Level Zookeeper Client', - long_description=README + '\n\n' + CHANGES, - classifiers=[ - "Development Status :: 5 - Production/Stable", - "License :: OSI Approved :: Apache Software License", - "Intended Audience :: Developers", - "Operating System :: OS Independent", - "Programming Language :: Python", - "Programming Language :: Python :: 2", - "Programming Language :: Python :: 2.7", - "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.4", - "Programming Language :: Python :: 3.5", - "Programming Language :: Python :: 3.6", - "Programming Language :: Python :: 3.7", - "Programming Language :: Python :: Implementation :: CPython", - "Programming Language :: Python :: Implementation :: PyPy", - "Topic :: Communications", - "Topic :: System :: Distributed Computing", - "Topic :: System :: Networking", - ], - keywords='zookeeper lock leader configuration', - author="Kazoo team", - author_email="python-zk@googlegroups.com", - url="https://kazoo.readthedocs.io", - license="Apache 2.0", - packages=find_packages(), - test_suite="kazoo.tests", - include_package_data=True, - zip_safe=False, - install_requires=install_requires, - tests_require=tests_require, - extras_require={ - 'test': tests_require, - 'sasl': ['pure-sasl==0.5.1'], - }, - long_description_content_type="text/markdown", -) +setuptools.setup() diff --git a/tox.ini b/tox.ini index 44d792f..5ab4f33 100644 --- a/tox.ini +++ b/tox.ini @@ -1,30 +1,33 @@ [tox] -minversion = 3.7 -skipsdist = True +minversion = 3.24.1 +requires= + virtualenv>=20.7.2 + tox-wheel>=0.6.0 +skip_missing_interpreters=True envlist = pep8, - {py37,py38,py39,pypy3} {gevent,eventlet,sasl,docs}, pypy3 +isolated_build = true [testenv] -usedevelop = True -install_command = pip install {opts} {packages} +wheel = True +wheel_build_env = build +install_command = pip install -c{toxinidir}/constraints.txt {opts} {packages} passenv = CI TOX_* CI_* ZOOKEEPER_* setenv = - VIRTUAL_ENV={envdir} + pypy3: PYPY=1 +extras = + test + docs: docs + gevent: gevent + eventlet: eventlet + sasl: sasl deps = - -c{toxinidir}/constraints.txt - -r{toxinidir}/requirements.txt - -r{toxinidir}/requirements_test.txt - docs: -r{toxinidir}/requirements_sphinx.txt - gevent: -r{toxinidir}/requirements_gevent.txt - eventlet: -r{toxinidir}/requirements_eventlet.txt - sasl: -r{toxinidir}/requirements_sasl.txt sasl: kerberos codecov: codecov commands = @@ -32,13 +35,16 @@ commands = /{toxinidir}/ensure-zookeeper-env.sh \ pytest {posargs: -ra -v --cov-report=xml --cov=kazoo kazoo/tests} + +[testenv:build] + [testenv:codecov] commands = - codecov -e TOX_VENV,ZOOKEEPER_VERSION [testenv:pep8] -commands = flake8 {posargs} - +extra = alldeps +deps = + flake8==3.7.9 +usedevelop = True +commands = flake8 {posargs} {toxinidir}/kazoo -[flake8] -builtins = _ -exclude = .venv,.tox,dist,doc,*egg,.git,build,tools,local,docs,zookeeper -- cgit v1.2.1