diff options
author | Michael Howitz <mh@gocept.com> | 2022-12-15 08:27:52 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-12-15 07:27:52 +0000 |
commit | ad06f3ef6097123b7d66e0782c25308eb288efd8 (patch) | |
tree | 4b0203d0d33fee3b6f5890b073520a3a13ae324e | |
parent | d93f13aa39e5e66521a03deb62416516fa2b5d1e (diff) | |
download | zope-configuration-ad06f3ef6097123b7d66e0782c25308eb288efd8.tar.gz |
Config with pure python (#58)
* Fix GHA: ubuntu-latest no longer contains Python 3.5 and 3.6
* Add support for Python 3.11.
* isort imports
27 files changed, 148 insertions, 66 deletions
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 927d9f3..cedf24b 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -17,7 +17,7 @@ jobs: fail-fast: false matrix: os: - - ubuntu + - ["ubuntu", "ubuntu-20.04"] config: # [Python version, tox env] - ["3.9", "lint"] @@ -28,21 +28,23 @@ jobs: - ["3.8", "py38"] - ["3.9", "py39"] - ["3.10", "py310"] + - ["3.11", "py311"] - ["pypy-2.7", "pypy"] - ["pypy-3.7", "pypy3"] - ["3.9", "docs"] - ["3.9", "coverage"] - runs-on: ${{ matrix.os }}-latest + runs-on: ${{ matrix.os[1] }} + if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name name: ${{ matrix.config[1] }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Set up Python - uses: actions/setup-python@v2 + uses: actions/setup-python@v4 with: python-version: ${{ matrix.config[0] }} - name: Pip cache - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: ~/.cache/pip key: ${{ runner.os }}-pip-${{ matrix.config[0] }}-${{ hashFiles('setup.*', 'tox.ini') }} @@ -28,4 +28,5 @@ lib64 log/ parts/ pyvenv.cfg +testing.log var/ @@ -2,7 +2,7 @@ # https://github.com/zopefoundation/meta/tree/master/config/pure-python [meta] template = "pure-python" -commit-id = "3b712f305ca8207e971c5bf81f2bdb5872489f2f" +commit-id = "200573eb414d2228d463da3de7d71a6d6335a704" [python] with-pypy = true @@ -11,6 +11,7 @@ with-docs = true with-sphinx-doctests = true with-windows = false with-future-python = false +with-macos = false [tox] use-flake8 = true diff --git a/CHANGES.rst b/CHANGES.rst index 69f2889..a7309e1 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -1,10 +1,10 @@ Changes ======= -4.4.2 (unreleased) ------------------- +4.5 (unreleased) +---------------- -- Nothing changed yet. +- Add support for Python 3.11. 4.4.1 (2022-04-07) @@ -16,3 +16,14 @@ ignore = docs/_build/html/_sources/* docs/_build/doctest/* docs/_build/html/_sources/api/* + +[isort] +force_single_line = True +combine_as_imports = True +sections = FUTURE,STDLIB,THIRDPARTY,ZOPE,FIRSTPARTY,LOCALFOLDER +known_third_party = six, docutils, pkg_resources +known_zope = +known_first_party = +default_section = ZOPE +line_length = 79 +lines_after_imports = 2 @@ -18,7 +18,9 @@ ############################################################################## import os -from setuptools import setup, find_packages + +from setuptools import find_packages +from setuptools import setup def read(*rnames): @@ -37,7 +39,7 @@ TESTS_REQUIRE = [ ] setup(name='zope.configuration', - version='4.4.2.dev0', + version='4.5.dev0', author='Zope Foundation and Contributors', author_email='zope-dev@zope.org', description='Zope Configuration Markup Language (ZCML)', @@ -53,21 +55,23 @@ setup(name='zope.configuration', 'Intended Audience :: Developers', 'License :: OSI Approved :: Zope Public License', 'Programming Language :: Python', - "Programming Language :: Python :: 2", + 'Programming Language :: Python :: 2', 'Programming Language :: Python :: 2.7', - "Programming Language :: Python :: 3", + 'Programming Language :: Python :: 3', 'Programming Language :: Python :: 3.5', 'Programming Language :: Python :: 3.6', 'Programming Language :: Python :: 3.7', 'Programming Language :: Python :: 3.8', 'Programming Language :: Python :: 3.9', 'Programming Language :: Python :: 3.10', + 'Programming Language :: Python :: 3.11', 'Programming Language :: Python :: Implementation :: CPython', 'Programming Language :: Python :: Implementation :: PyPy', 'Natural Language :: English', 'Operating System :: OS Independent', 'Topic :: Internet :: WWW/HTTP', - 'Framework :: Zope :: 3'], + 'Framework :: Zope :: 3', + ], url='https://github.com/zopefoundation/zope.configuration', license='ZPL 2.1', packages=find_packages('src'), diff --git a/src/zope/configuration/_compat.py b/src/zope/configuration/_compat.py index a5fb4a1..05a5e61 100644 --- a/src/zope/configuration/_compat.py +++ b/src/zope/configuration/_compat.py @@ -13,6 +13,7 @@ ############################################################################## import sys + PY3 = sys.version_info[0] >= 3 if PY3: # pragma: PY3 diff --git a/src/zope/configuration/config.py b/src/zope/configuration/config.py index 2d99b36..c3eedd3 100644 --- a/src/zope/configuration/config.py +++ b/src/zope/configuration/config.py @@ -13,31 +13,32 @@ ############################################################################## """Configuration processor """ -from keyword import iskeyword import operator import os.path import sys +from keyword import iskeyword -from zope.interface.adapter import AdapterRegistry from zope.interface import Interface from zope.interface import implementer from zope.interface import providedBy -from zope.schema import TextLine +from zope.interface.adapter import AdapterRegistry from zope.schema import URI +from zope.schema import TextLine from zope.schema import ValidationError +from zope.configuration._compat import builtins +from zope.configuration._compat import implementer_if_needed +from zope.configuration._compat import reraise +from zope.configuration._compat import string_types +from zope.configuration._compat import text_type from zope.configuration.exceptions import ConfigurationError from zope.configuration.exceptions import ConfigurationWrapperError -from zope.configuration.interfaces import IConfigurationContext -from zope.configuration.interfaces import IGroupingContext from zope.configuration.fields import GlobalInterface from zope.configuration.fields import GlobalObject from zope.configuration.fields import PathProcessor -from zope.configuration._compat import builtins -from zope.configuration._compat import reraise -from zope.configuration._compat import string_types -from zope.configuration._compat import text_type -from zope.configuration._compat import implementer_if_needed +from zope.configuration.interfaces import IConfigurationContext +from zope.configuration.interfaces import IGroupingContext + __all__ = [ 'ConfigurationContext', diff --git a/src/zope/configuration/docutils.py b/src/zope/configuration/docutils.py index f64f9f6..df7e129 100644 --- a/src/zope/configuration/docutils.py +++ b/src/zope/configuration/docutils.py @@ -17,6 +17,7 @@ __docformat__ = 'restructuredtext' import re + __all__ = [ 'wrap', 'makeDocStructures', diff --git a/src/zope/configuration/exceptions.py b/src/zope/configuration/exceptions.py index 296ff73..faa9bfb 100644 --- a/src/zope/configuration/exceptions.py +++ b/src/zope/configuration/exceptions.py @@ -16,6 +16,7 @@ import traceback + __all__ = [ 'ConfigurationError', ] diff --git a/src/zope/configuration/fields.py b/src/zope/configuration/fields.py index 37c9797..c2dbbe5 100644 --- a/src/zope/configuration/fields.py +++ b/src/zope/configuration/fields.py @@ -29,9 +29,10 @@ from zope.schema import ValidationError from zope.schema.interfaces import IFromUnicode from zope.schema.interfaces import InvalidValue +from zope.configuration._compat import implementer_if_needed from zope.configuration.exceptions import ConfigurationError from zope.configuration.interfaces import InvalidToken -from zope.configuration._compat import implementer_if_needed + __all__ = [ 'Bool', diff --git a/src/zope/configuration/interfaces.py b/src/zope/configuration/interfaces.py index e6342d7..0d29239 100644 --- a/src/zope/configuration/interfaces.py +++ b/src/zope/configuration/interfaces.py @@ -17,6 +17,7 @@ from zope.interface import Interface from zope.schema import BytesLine from zope.schema.interfaces import ValidationError + __all__ = [ 'InvalidToken', 'IConfigurationContext', diff --git a/src/zope/configuration/name.py b/src/zope/configuration/name.py index 5df88a5..096f7ac 100644 --- a/src/zope/configuration/name.py +++ b/src/zope/configuration/name.py @@ -21,6 +21,7 @@ Provide configuration object name resolution. import os from types import ModuleType + __all__ = [ 'resolve', 'getNormalizedName', diff --git a/src/zope/configuration/tests/directives.py b/src/zope/configuration/tests/directives.py index 0a17f89..832ec01 100644 --- a/src/zope/configuration/tests/directives.py +++ b/src/zope/configuration/tests/directives.py @@ -19,8 +19,8 @@ from zope.schema import NativeStringLine from zope.schema import Text from zope.configuration.config import GroupingContextDecorator -from zope.configuration.interfaces import IConfigurationContext from zope.configuration.fields import GlobalObject +from zope.configuration.interfaces import IConfigurationContext class F(object): diff --git a/src/zope/configuration/tests/nested.py b/src/zope/configuration/tests/nested.py index f804f13..bf6da1c 100644 --- a/src/zope/configuration/tests/nested.py +++ b/src/zope/configuration/tests/nested.py @@ -17,11 +17,12 @@ from zope.interface import Attribute from zope.interface import Interface from zope.interface import implementer -from zope.schema import NativeStringLine from zope.schema import Id from zope.schema import Int +from zope.schema import NativeStringLine from zope.schema import Text from zope.schema import TextLine + from zope.configuration.config import GroupingContextDecorator from zope.configuration.fields import Bool diff --git a/src/zope/configuration/tests/samplepackage/foo.py b/src/zope/configuration/tests/samplepackage/foo.py index f1060c1..e01bc78 100644 --- a/src/zope/configuration/tests/samplepackage/foo.py +++ b/src/zope/configuration/tests/samplepackage/foo.py @@ -14,8 +14,10 @@ """Sample module used for testing """ from zope.interface import Interface + from zope import schema + data = [] diff --git a/src/zope/configuration/tests/test_config.py b/src/zope/configuration/tests/test_config.py index 714e7e2..cf215ad 100644 --- a/src/zope/configuration/tests/test_config.py +++ b/src/zope/configuration/tests/test_config.py @@ -13,8 +13,9 @@ ############################################################################## """Test configuration machinery. """ -import unittest import sys +import unittest + # pylint:disable=inherit-non-class,protected-access # pylint:disable=attribute-defined-outside-init, arguments-differ @@ -199,6 +200,7 @@ class ConfigurationContextTests(unittest.TestCase): def test_checkDuplicate_hit(self): import os + from zope.configuration.exceptions import ConfigurationError c = self._makeOne() c.checkDuplicate('/path') @@ -502,6 +504,7 @@ class ConfigurationAdapterRegistryTests(unittest.TestCase): def test_factory_hit_on_fqn_lookup_fails(self): from zope.interface import Interface + from zope.configuration.exceptions import ConfigurationError class IFoo(Interface): @@ -528,11 +531,13 @@ class _ConformsToIConfigurationContext(object): def test_class_conforms_to_IConfigurationContext(self): from zope.interface.verify import verifyClass + from zope.configuration.interfaces import IConfigurationContext verifyClass(IConfigurationContext, self._getTargetClass()) def test_instance_conforms_to_IConfigurationContext(self): from zope.interface.verify import verifyObject + from zope.configuration.interfaces import IConfigurationContext verifyObject(IConfigurationContext, self._makeOne()) @@ -584,6 +589,7 @@ class ConfigurationMachineTests(_ConformsToIConfigurationContext, def test_begin_w___data_no_kw(self): from zope.interface import Interface + from zope.configuration.config import IConfigurationContext from zope.configuration.config import RootStackItem @@ -626,6 +632,7 @@ class ConfigurationMachineTests(_ConformsToIConfigurationContext, def test_begin_wo___data_w_kw(self): from zope.interface import Interface + from zope.configuration.config import IConfigurationContext from zope.configuration.config import RootStackItem @@ -686,6 +693,7 @@ class ConfigurationMachineTests(_ConformsToIConfigurationContext, def test___call__(self): from zope.interface import Interface + from zope.configuration.config import IConfigurationContext from zope.configuration.config import RootStackItem @@ -905,11 +913,13 @@ class _ConformsToIStackItem(object): def test_class_conforms_to_IStackItem(self): from zope.interface.verify import verifyClass + from zope.configuration.config import IStackItem verifyClass(IStackItem, self._getTargetClass()) def test_instance_conforms_to_IStackItem(self): from zope.interface.verify import verifyObject + from zope.configuration.config import IStackItem verifyObject(IStackItem, self._makeOne()) @@ -941,6 +951,7 @@ class SimpleStackItemTests(_ConformsToIStackItem, def test_ctor(self): from zope.interface import Interface + from zope.configuration.config import GroupingContextDecorator class ISchema(Interface): @@ -1262,6 +1273,7 @@ class ComplexStackItemTests(_ConformsToIStackItem, def test_contained_hit(self): from zope.interface import Interface + from zope.configuration.config import GroupingContextDecorator from zope.configuration.config import SimpleStackItem NS = 'http://namespace.example.com/' @@ -1374,11 +1386,13 @@ class _ConformsToIGroupingContext(object): def test_class_conforms_to_IGroupingContext(self): from zope.interface.verify import verifyClass + from zope.configuration.interfaces import IGroupingContext verifyClass(IGroupingContext, self._getTargetClass()) def test_instance_conforms_to_IGroupingContext(self): from zope.interface.verify import verifyObject + from zope.configuration.interfaces import IGroupingContext verifyObject(IGroupingContext, self._makeOne()) @@ -1437,11 +1451,13 @@ class _ConformsToIDirectivesContext(object): def test_class_conforms_to_IDirectivesContext(self): from zope.interface.verify import verifyClass + from zope.configuration.config import IDirectivesContext verifyClass(IDirectivesContext, self._getTargetClass()) def test_instance_conforms_to_IDirectivesContext(self): from zope.interface.verify import verifyObject + from zope.configuration.config import IDirectivesContext verifyObject(IDirectivesContext, self._makeOne()) @@ -1484,6 +1500,7 @@ class Test_defineSimpleDirective(unittest.TestCase): def test_defaults(self): from zope.interface import Interface + from zope.configuration.interfaces import IConfigurationContext as ICC class ISchema(Interface): @@ -1571,6 +1588,7 @@ class Test_defineGroupingDirective(unittest.TestCase): def test_defaults(self): from zope.interface import Interface from zope.schema import Text + from zope.configuration.interfaces import IConfigurationContext as ICC class ISchema(Interface): @@ -1652,11 +1670,13 @@ class _ConformsToIComplexDirectiveContext(object): def test_class_conforms_to_IComplexDirectiveContext(self): from zope.interface.verify import verifyClass + from zope.configuration.config import IComplexDirectiveContext verifyClass(IComplexDirectiveContext, self._getTargetClass()) def test_instance_conforms_to_IComplexDirectiveContext(self): from zope.interface.verify import verifyObject + from zope.configuration.config import IComplexDirectiveContext verifyObject(IComplexDirectiveContext, self._makeOne()) @@ -1860,9 +1880,10 @@ class Test_toargs(unittest.TestCase): self.assertEqual(self._callFUT(context, ISchema, {}), {}) def test_w_empty_schema_w_data_no_kwargs_allowed(self): - from zope.configuration.exceptions import ConfigurationError from zope.interface import Interface + from zope.configuration.exceptions import ConfigurationError + class ISchema(Interface): pass context = FauxContext() @@ -1894,6 +1915,7 @@ class Test_toargs(unittest.TestCase): def test_w_field_missing_no_default(self): from zope.interface import Interface from zope.schema import Text + from zope.configuration.exceptions import ConfigurationError class ISchema(Interface): @@ -1928,6 +1950,7 @@ class Test_toargs(unittest.TestCase): def test_w_invalid_value(self): from zope.interface import Interface from zope.schema import Int + from zope.configuration.exceptions import ConfigurationError class ISchema(Interface): diff --git a/src/zope/configuration/tests/test_docs.py b/src/zope/configuration/tests/test_docs.py index 4cb8727..92e40eb 100644 --- a/src/zope/configuration/tests/test_docs.py +++ b/src/zope/configuration/tests/test_docs.py @@ -19,19 +19,19 @@ from __future__ import absolute_import from __future__ import division from __future__ import print_function -import re +import doctest import os.path +import re import unittest -import doctest import manuel.capture import manuel.codeblock import manuel.doctest import manuel.ignore import manuel.testing - from zope.testing import renormalizing + checker = renormalizing.RENormalizing([ # Python 3 unicode removed the "u". (re.compile("u('.*?')"), r"\1"), diff --git a/src/zope/configuration/tests/test_fields.py b/src/zope/configuration/tests/test_fields.py index 8242211..998ca0e 100644 --- a/src/zope/configuration/tests/test_fields.py +++ b/src/zope/configuration/tests/test_fields.py @@ -15,6 +15,7 @@ """ import unittest + # pylint:disable=protected-access @@ -66,6 +67,7 @@ class GlobalObjectTests(unittest.TestCase, _ConformsToIFromUnicode): def test_fromUnicode_w_resolve_fails(self): from zope.schema import ValidationError + from zope.configuration.config import ConfigurationError class Context(object): @@ -187,6 +189,7 @@ class TokensTests(unittest.TestCase, _ConformsToIFromUnicode): def test_fromUnicode_invalid(self): from zope.schema import Int + from zope.configuration.interfaces import InvalidToken tok = self._makeOne(value_type=Int(min=0)) with self.assertRaises(InvalidToken) as exc: diff --git a/src/zope/configuration/tests/test_name.py b/src/zope/configuration/tests/test_name.py index 6fd1b99..474eeab 100644 --- a/src/zope/configuration/tests/test_name.py +++ b/src/zope/configuration/tests/test_name.py @@ -36,6 +36,7 @@ class Test_resolve(unittest.TestCase): def test_importable_but_not_attr_of_parent(self): import sys + import zope.configuration.tests as zct self.assertFalse('notyet' in zct.__dict__) mod = self._callFUT('zope.configuration.tests.notyet') @@ -54,8 +55,8 @@ class Test_resolve(unittest.TestCase): Complex) def test_class_w_same_name_as_module(self): - from zope.configuration.tests.samplepackage.NamedForClass \ - import NamedForClass + from zope.configuration.tests.samplepackage.NamedForClass import \ + NamedForClass self.assertIs( self._callFUT( 'zope.configuration.tests.samplepackage.NamedForClass+'), diff --git a/src/zope/configuration/tests/test_xmlconfig.py b/src/zope/configuration/tests/test_xmlconfig.py index 6d180b8..48b6479 100644 --- a/src/zope/configuration/tests/test_xmlconfig.py +++ b/src/zope/configuration/tests/test_xmlconfig.py @@ -391,9 +391,10 @@ class Test_processxmlfile(unittest.TestCase): def test_w_empty_xml(self): from io import StringIO + from zope.configuration.config import ConfigurationMachine - from zope.configuration.xmlconfig import registerCommonDirectives from zope.configuration.xmlconfig import ZopeSAXParseException + from zope.configuration.xmlconfig import registerCommonDirectives context = ConfigurationMachine() registerCommonDirectives(context) @@ -405,8 +406,8 @@ class Test_processxmlfile(unittest.TestCase): def test_w_valid_xml_fp(self): # Integration test, really from zope.configuration.config import ConfigurationMachine - from zope.configuration.xmlconfig import registerCommonDirectives from zope.configuration.tests.samplepackage import foo + from zope.configuration.xmlconfig import registerCommonDirectives context = ConfigurationMachine() registerCommonDirectives(context) @@ -436,6 +437,7 @@ class Test_openInOrPlain(unittest.TestCase): def _makeFilename(self, fn): import os + from zope.configuration.tests.samplepackage import __file__ return os.path.join(os.path.dirname(__file__), fn) @@ -473,8 +475,8 @@ class Test_include(unittest.TestCase): def test_neither_file_nor_files_passed_already_seen(self): from zope.configuration import xmlconfig from zope.configuration.config import ConfigurationMachine - from zope.configuration.xmlconfig import registerCommonDirectives from zope.configuration.tests import samplepackage + from zope.configuration.xmlconfig import registerCommonDirectives context = ConfigurationMachine() registerCommonDirectives(context) context.package = samplepackage @@ -489,9 +491,9 @@ class Test_include(unittest.TestCase): def test_neither_file_nor_files_passed(self): from zope.configuration import xmlconfig from zope.configuration.config import ConfigurationMachine - from zope.configuration.xmlconfig import registerCommonDirectives from zope.configuration.tests import samplepackage from zope.configuration.tests.samplepackage import foo + from zope.configuration.xmlconfig import registerCommonDirectives context = ConfigurationMachine() registerCommonDirectives(context) before_stack = context.stack[:] @@ -511,11 +513,11 @@ class Test_include(unittest.TestCase): self.assertIn(fqn, context._seen_files) def test_w_file_passed(self): + from zope.configuration import tests from zope.configuration import xmlconfig from zope.configuration.config import ConfigurationMachine - from zope.configuration.xmlconfig import registerCommonDirectives - from zope.configuration import tests from zope.configuration.tests import simple + from zope.configuration.xmlconfig import registerCommonDirectives context = ConfigurationMachine() registerCommonDirectives(context) before_stack = context.stack[:] @@ -549,9 +551,9 @@ class Test_include(unittest.TestCase): def test_w_files_passed_and_package(self): from zope.configuration import xmlconfig from zope.configuration.config import ConfigurationMachine - from zope.configuration.xmlconfig import registerCommonDirectives from zope.configuration.tests import samplepackage from zope.configuration.tests.samplepackage import foo + from zope.configuration.xmlconfig import registerCommonDirectives context = ConfigurationMachine() registerCommonDirectives(context) before_stack = context.stack[:] @@ -609,8 +611,8 @@ class Test_exclude(unittest.TestCase): self.assertIn(fqn, context._seen_files) def test_w_file_passed(self): - from zope.configuration.config import ConfigurationMachine from zope.configuration import tests + from zope.configuration.config import ConfigurationMachine context = ConfigurationMachine() context.package = tests fqn = _packageFile(tests, 'simple.zcml') @@ -656,11 +658,11 @@ class Test_includeOverrides(unittest.TestCase): return includeOverrides(*args, **kw) def test_actions_have_parents_includepath(self): + from zope.configuration import tests from zope.configuration import xmlconfig from zope.configuration.config import ConfigurationMachine - from zope.configuration.xmlconfig import registerCommonDirectives - from zope.configuration import tests from zope.configuration.tests import simple + from zope.configuration.xmlconfig import registerCommonDirectives context = ConfigurationMachine() fqp = _packageFile(tests, 'configure.zcml') registerCommonDirectives(context) @@ -748,9 +750,9 @@ class Test_file(unittest.TestCase): def test_wo_execute_w_context(self): from zope.configuration import xmlconfig from zope.configuration.config import ConfigurationMachine - from zope.configuration.xmlconfig import registerCommonDirectives from zope.configuration.tests import samplepackage from zope.configuration.tests.samplepackage import foo + from zope.configuration.xmlconfig import registerCommonDirectives context = ConfigurationMachine() context.package = samplepackage registerCommonDirectives(context) @@ -771,6 +773,7 @@ class Test_file(unittest.TestCase): def test_w_execute(self): import os + from zope.configuration import xmlconfig from zope.configuration.tests.samplepackage import foo file_name = path("samplepackage", "configure.zcml") @@ -814,8 +817,8 @@ class Test_string(unittest.TestCase): def test_wo_execute_w_context(self): from zope.configuration.config import ConfigurationMachine - from zope.configuration.xmlconfig import registerCommonDirectives from zope.configuration.tests.samplepackage import foo + from zope.configuration.xmlconfig import registerCommonDirectives context = ConfigurationMachine() registerCommonDirectives(context) file_name = path("samplepackage", "configure.zcml") @@ -850,14 +853,14 @@ class Test_string(unittest.TestCase): class XMLConfigTests(unittest.TestCase): def setUp(self): - from zope.configuration.xmlconfig import _clearContext from zope.configuration.tests.samplepackage.foo import data + from zope.configuration.xmlconfig import _clearContext _clearContext() del data[:] def tearDown(self): - from zope.configuration.xmlconfig import _clearContext from zope.configuration.tests.samplepackage.foo import data + from zope.configuration.xmlconfig import _clearContext _clearContext() del data[:] @@ -870,6 +873,7 @@ class XMLConfigTests(unittest.TestCase): def test_ctor_w_global_context_missing(self): import os + from zope.configuration import xmlconfig from zope.configuration.tests.samplepackage import foo here = os.path.dirname(__file__) @@ -906,8 +910,8 @@ class XMLConfigTests(unittest.TestCase): def test_ctor_w_module(self): from zope.configuration import xmlconfig - from zope.configuration.tests.samplepackage import foo from zope.configuration.tests import samplepackage + from zope.configuration.tests.samplepackage import foo fqn = _packageFile(samplepackage, 'configure.zcml') logger = LoggerStub() with _Monkey(xmlconfig, logger=logger): @@ -923,6 +927,7 @@ class XMLConfigTests(unittest.TestCase): def test___call__(self): import os + from zope.configuration import xmlconfig from zope.configuration.tests import samplepackage from zope.configuration.tests.samplepackage import foo @@ -949,14 +954,14 @@ class XMLConfigTests(unittest.TestCase): class Test_xmlconfig(unittest.TestCase): def setUp(self): - from zope.configuration.xmlconfig import _clearContext from zope.configuration.tests.samplepackage.foo import data + from zope.configuration.xmlconfig import _clearContext _clearContext() del data[:] def tearDown(self): - from zope.configuration.xmlconfig import _clearContext from zope.configuration.tests.samplepackage.foo import data + from zope.configuration.xmlconfig import _clearContext _clearContext() del data[:] @@ -966,6 +971,7 @@ class Test_xmlconfig(unittest.TestCase): def test_wo_testing_passed(self): import os + from zope.configuration import xmlconfig from zope.configuration.tests import samplepackage from zope.configuration.tests.samplepackage import foo @@ -995,6 +1001,7 @@ class Test_xmlconfig(unittest.TestCase): def test_w_testing_passed(self): import os + from zope.configuration import xmlconfig from zope.configuration.tests import samplepackage from zope.configuration.tests.samplepackage import foo @@ -1026,14 +1033,14 @@ class Test_xmlconfig(unittest.TestCase): class Test_testxmlconfig(unittest.TestCase): def setUp(self): - from zope.configuration.xmlconfig import _clearContext from zope.configuration.tests.samplepackage.foo import data + from zope.configuration.xmlconfig import _clearContext _clearContext() del data[:] def tearDown(self): - from zope.configuration.xmlconfig import _clearContext from zope.configuration.tests.samplepackage.foo import data + from zope.configuration.xmlconfig import _clearContext _clearContext() del data[:] @@ -1043,6 +1050,7 @@ class Test_testxmlconfig(unittest.TestCase): def test_w_testing_passed(self): import os + from zope.configuration import xmlconfig from zope.configuration.tests import samplepackage from zope.configuration.tests.samplepackage import foo diff --git a/src/zope/configuration/tests/test_zopeconfigure.py b/src/zope/configuration/tests/test_zopeconfigure.py index 92575f2..f5f34b2 100644 --- a/src/zope/configuration/tests/test_zopeconfigure.py +++ b/src/zope/configuration/tests/test_zopeconfigure.py @@ -31,6 +31,7 @@ class ZopeConfigureTests(unittest.TestCase): def test_ctor_w_package(self): import os + import zope.configuration.tests as zct zc = self._makeOne(Context(), package=zct) self.assertEqual(zc.basepath, os.path.dirname(zct.__file__)) diff --git a/src/zope/configuration/tests/unicode_all/__init__.py b/src/zope/configuration/tests/unicode_all/__init__.py index c44dfed..994e0c3 100644 --- a/src/zope/configuration/tests/unicode_all/__init__.py +++ b/src/zope/configuration/tests/unicode_all/__init__.py @@ -1,5 +1,6 @@ from __future__ import unicode_literals + __all__ = ['foo'] foo = 'sentinel' diff --git a/src/zope/configuration/tests/victim.py b/src/zope/configuration/tests/victim.py index 5f33d5a..0c5b2fe 100644 --- a/src/zope/configuration/tests/victim.py +++ b/src/zope/configuration/tests/victim.py @@ -1,2 +1,3 @@ from __future__ import absolute_import + from zope.configuration.tests import bad # pylint:disable=unused-import diff --git a/src/zope/configuration/xmlconfig.py b/src/zope/configuration/xmlconfig.py index 5a8c586..3192f22 100644 --- a/src/zope/configuration/xmlconfig.py +++ b/src/zope/configuration/xmlconfig.py @@ -20,31 +20,33 @@ test_includeOverrides in tests/test_xmlconfig.py __docformat__ = 'restructuredtext' import errno -from glob import glob -import logging import io +import logging import os import sys +from glob import glob +from xml.sax import SAXParseException from xml.sax import make_parser +from xml.sax.handler import ContentHandler +from xml.sax.handler import feature_namespaces from xml.sax.xmlreader import InputSource -from xml.sax.handler import ContentHandler, feature_namespaces -from xml.sax import SAXParseException from zope.interface import Interface from zope.schema import NativeStringLine +from zope.configuration._compat import reraise from zope.configuration.config import ConfigurationMachine -from zope.configuration.config import defineGroupingDirective -from zope.configuration.config import defineSimpleDirective from zope.configuration.config import GroupingContextDecorator from zope.configuration.config import GroupingStackItem +from zope.configuration.config import defineGroupingDirective +from zope.configuration.config import defineSimpleDirective from zope.configuration.config import resolveConflicts from zope.configuration.exceptions import ConfigurationError from zope.configuration.exceptions import ConfigurationWrapperError from zope.configuration.fields import GlobalObject from zope.configuration.zopeconfigure import IZopeConfigure from zope.configuration.zopeconfigure import ZopeConfigure -from zope.configuration._compat import reraise + __all__ = [ 'ParserInfo', diff --git a/src/zope/configuration/zopeconfigure.py b/src/zope/configuration/zopeconfigure.py index 26c3b74..a21faa7 100644 --- a/src/zope/configuration/zopeconfigure.py +++ b/src/zope/configuration/zopeconfigure.py @@ -108,6 +108,7 @@ from zope.schema import BytesLine from zope.configuration.config import GroupingContextDecorator from zope.configuration.fields import GlobalObject + __all__ = [ 'IZopeConfigure', 'ZopeConfigure', @@ -11,6 +11,7 @@ envlist = py38 py39 py310 + py311 pypy pypy3 docs @@ -29,15 +30,26 @@ extras = [testenv:lint] basepython = python3 skip_install = true +commands = + isort --check-only --diff {toxinidir}/src {toxinidir}/setup.py + flake8 src setup.py + check-manifest + check-python-versions deps = - flake8 check-manifest check-python-versions >= 0.19.1 wheel + flake8 + isort + +[testenv:isort-apply] +basepython = python3 +skip_install = true +commands_pre = +deps = + isort commands = - flake8 src setup.py - check-manifest - check-python-versions + isort {toxinidir}/src {toxinidir}/setup.py [] [testenv:docs] basepython = python3 @@ -58,8 +70,8 @@ commands = mkdir -p {toxinidir}/parts/htmlcov coverage run -m zope.testrunner --test-path=src {posargs:-vc} coverage run -a -m sphinx -b doctest -d {envdir}/.cache/doctrees docs {envdir}/.cache/doctest - coverage html - coverage report -m --fail-under=99.5 + coverage html --ignore-errors + coverage report --ignore-errors --show-missing --fail-under=99.5 [coverage:run] branch = True |