diff --git a/.bandit b/.bandit deleted file mode 100644 index da75bda2b..000000000 --- a/.bandit +++ /dev/null @@ -1,3 +0,0 @@ -[bandit] -exclude: tests/,docs/ -skips: B701,B410 diff --git a/.flake8 b/.flake8 deleted file mode 100644 index 3b1b7ef54..000000000 --- a/.flake8 +++ /dev/null @@ -1,11 +0,0 @@ -[flake8] -max-line-length = 88 -ignore = - W503, - ANN101, - ANN102, - ANN401, - E203, - B028 -exclude = - tests/* diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index fe3e1935b..7fed841ec 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,40 +1,19 @@ exclude: tests/fixtures repos: - - repo: https://github.com/asottile/pyupgrade - rev: v3.15.0 - hooks: - - id: pyupgrade - args: [ --py38-plus ] - - repo: https://github.com/asottile/reorder_python_imports - rev: v3.12.0 - hooks: - - id: reorder-python-imports - - repo: https://github.com/ambv/black - rev: 23.12.0 - hooks: - - id: black - - repo: https://github.com/PyCQA/autoflake - rev: v2.2.1 - hooks: - - id: autoflake - - repo: https://github.com/PyCQA/flake8 - rev: 6.1.0 - hooks: - - id: flake8 - additional_dependencies: [ - flake8-bugbear, - flake8-annotations, - flake8-comprehensions, - ] - args: [ "--suppress-none-returning" ] - - repo: https://github.com/pre-commit/pre-commit-hooks rev: v4.5.0 hooks: - id: trailing-whitespace - id: end-of-file-fixer - id: debug-statements + - repo: https://github.com/astral-sh/ruff-pre-commit + rev: v0.1.8 + hooks: + - id: ruff + args: [ --fix ] + - id: ruff-format + - repo: https://github.com/PyCQA/docformatter rev: v1.7.3 hooks: @@ -52,7 +31,7 @@ repos: - types-click - types-docutils - types-toposort - args: [ "--check-untyped-defs", "--ignore-missing-imports"] + args: [ "--check-untyped-defs", "--ignore-missing-imports" ] - repo: https://github.com/PyCQA/doc8 rev: v1.1.1 hooks: diff --git a/benchmark.py b/benchmark.py index ab1c64f7d..4da50193f 100644 --- a/benchmark.py +++ b/benchmark.py @@ -3,15 +3,15 @@ from timeit import Timer from tests import xsdata_temp_dir -from tests.integration.benchmarks.utils import make_books -from tests.integration.benchmarks.utils import parse -from tests.integration.benchmarks.utils import parse_json -from tests.integration.benchmarks.utils import write -from tests.integration.benchmarks.utils import write_json -from xsdata.formats.dataclass.parsers import handlers -from xsdata.formats.dataclass.parsers import JsonParser -from xsdata.formats.dataclass.serializers import JsonSerializer -from xsdata.formats.dataclass.serializers import writers +from tests.integration.benchmarks.utils import ( + make_books, + parse, + parse_json, + write, + write_json, +) +from xsdata.formats.dataclass.parsers import JsonParser, handlers +from xsdata.formats.dataclass.serializers import JsonSerializer, writers if __name__ == "__main__": components = [ diff --git a/docs/_ext/xsdatadocs.py b/docs/_ext/xsdatadocs.py index c98262e12..2c78f7abe 100644 --- a/docs/_ext/xsdatadocs.py +++ b/docs/_ext/xsdatadocs.py @@ -1,19 +1,13 @@ import shlex import subprocess -from typing import Any -from typing import Dict -from typing import List -from typing import Tuple -from typing import TYPE_CHECKING +from typing import TYPE_CHECKING, Any, Dict, List, Tuple from docutils import nodes -from docutils.nodes import Element -from docutils.nodes import Node +from docutils.nodes import Element, Node from docutils.parsers.rst import directives # type: ignore from sphinx.directives.code import container_wrapper from sphinx.locale import __ -from sphinx.util import logging -from sphinx.util import parselinenos +from sphinx.util import logging, parselinenos from sphinx.util.docutils import SphinxDirective from sphinx.util.typing import OptionSpec diff --git a/pyproject.toml b/pyproject.toml index c93755e0f..83ea69dc6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -76,6 +76,47 @@ license-files = ["LICENSE"] [tool.setuptools.dynamic] version = {attr = "xsdata.__version__"} +[tool.ruff] +target-version = "py38" + +select = [ + # pycodestyle + "E", + # Pyflakes + "F", + # pyupgrade + "UP", + # flake8-bugbear + "B", + # flake8-simplify + "SIM", + # flake8-annotations + "ANN", + # flake8-comprehensions + "C4", + # isort + "I", +] + +ignore = [ + "ANN101", + "ANN102", + "ANN201", + "ANN202", + "ANN204", + "ANN206", + "ANN401", + "E203", + "B028", + "B904", +] + +isort = { known-first-party = ['xsdata', 'tests'] } + +[tool.ruff.lint.per-file-ignores] +"**/{tests}/*" = ["ANN001", "ANN002", "ANN003", "E501", "B018"] + + [tool.doc8] max-line-length = 88 diff --git a/tests/__init__.py b/tests/__init__.py index 483530809..bba9605e0 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -1,7 +1,6 @@ import tempfile from pathlib import Path - root = Path(__file__).parent.parent fixtures_dir = root.joinpath("tests/fixtures") xsdata_temp_dir = Path(tempfile.gettempdir()).joinpath("xsdata") diff --git a/tests/codegen/handlers/test_add_attribute_substitutions.py b/tests/codegen/handlers/test_add_attribute_substitutions.py index b38f80aa4..e42dc6c66 100644 --- a/tests/codegen/handlers/test_add_attribute_substitutions.py +++ b/tests/codegen/handlers/test_add_attribute_substitutions.py @@ -6,10 +6,12 @@ from xsdata.models.config import GeneratorConfig from xsdata.models.enums import Tag from xsdata.utils.namespaces import build_qname -from xsdata.utils.testing import AttrFactory -from xsdata.utils.testing import AttrTypeFactory -from xsdata.utils.testing import ClassFactory -from xsdata.utils.testing import FactoryTestCase +from xsdata.utils.testing import ( + AttrFactory, + AttrTypeFactory, + ClassFactory, + FactoryTestCase, +) class AddAttributeSubstitutionsTests(FactoryTestCase): diff --git a/tests/codegen/handlers/test_calculate_attribute_paths.py b/tests/codegen/handlers/test_calculate_attribute_paths.py index cb334965d..c38ef7840 100644 --- a/tests/codegen/handlers/test_calculate_attribute_paths.py +++ b/tests/codegen/handlers/test_calculate_attribute_paths.py @@ -1,8 +1,6 @@ from xsdata.codegen.handlers import CalculateAttributePaths from xsdata.codegen.models import Restrictions -from xsdata.utils.testing import AttrFactory -from xsdata.utils.testing import ClassFactory -from xsdata.utils.testing import FactoryTestCase +from xsdata.utils.testing import AttrFactory, ClassFactory, FactoryTestCase class CalculateAttributePathsTests(FactoryTestCase): diff --git a/tests/codegen/handlers/test_create_compound_fields.py b/tests/codegen/handlers/test_create_compound_fields.py index 6f52a2812..fd738ff13 100644 --- a/tests/codegen/handlers/test_create_compound_fields.py +++ b/tests/codegen/handlers/test_create_compound_fields.py @@ -6,10 +6,12 @@ from xsdata.models.config import GeneratorConfig from xsdata.models.enums import Tag from xsdata.utils import collections -from xsdata.utils.testing import AttrFactory -from xsdata.utils.testing import ClassFactory -from xsdata.utils.testing import ExtensionFactory -from xsdata.utils.testing import FactoryTestCase +from xsdata.utils.testing import ( + AttrFactory, + ClassFactory, + ExtensionFactory, + FactoryTestCase, +) class CreateCompoundFieldsTests(FactoryTestCase): diff --git a/tests/codegen/handlers/test_designate_class_packages.py b/tests/codegen/handlers/test_designate_class_packages.py index fabf82df1..28bbb39bc 100644 --- a/tests/codegen/handlers/test_designate_class_packages.py +++ b/tests/codegen/handlers/test_designate_class_packages.py @@ -1,14 +1,14 @@ from xsdata.codegen.container import ClassContainer from xsdata.codegen.handlers import DesignateClassPackages from xsdata.exceptions import CodeGenerationError -from xsdata.models.config import GeneratorConfig -from xsdata.models.config import GeneratorSubstitution -from xsdata.models.config import ObjectType -from xsdata.models.config import StructureStyle +from xsdata.models.config import ( + GeneratorConfig, + GeneratorSubstitution, + ObjectType, + StructureStyle, +) from xsdata.models.enums import Namespace -from xsdata.utils.testing import AttrFactory -from xsdata.utils.testing import ClassFactory -from xsdata.utils.testing import FactoryTestCase +from xsdata.utils.testing import AttrFactory, ClassFactory, FactoryTestCase class DesignateClassPackagesTests(FactoryTestCase): diff --git a/tests/codegen/handlers/test_filter_classes.py b/tests/codegen/handlers/test_filter_classes.py index c61a277dd..237a08067 100644 --- a/tests/codegen/handlers/test_filter_classes.py +++ b/tests/codegen/handlers/test_filter_classes.py @@ -2,12 +2,9 @@ from xsdata.codegen.container import ClassContainer from xsdata.codegen.handlers import FilterClasses -from xsdata.models.config import ClassFilterStrategy -from xsdata.models.config import GeneratorConfig +from xsdata.models.config import ClassFilterStrategy, GeneratorConfig from xsdata.models.enums import Tag -from xsdata.utils.testing import AttrFactory -from xsdata.utils.testing import ClassFactory -from xsdata.utils.testing import FactoryTestCase +from xsdata.utils.testing import AttrFactory, ClassFactory, FactoryTestCase class FilterClassesTests(FactoryTestCase): diff --git a/tests/codegen/handlers/test_flatten_attribute_groups.py b/tests/codegen/handlers/test_flatten_attribute_groups.py index 3a4f66f8a..52307514c 100644 --- a/tests/codegen/handlers/test_flatten_attribute_groups.py +++ b/tests/codegen/handlers/test_flatten_attribute_groups.py @@ -2,15 +2,12 @@ from xsdata.codegen.container import ClassContainer from xsdata.codegen.handlers import FlattenAttributeGroups -from xsdata.codegen.models import Attr -from xsdata.codegen.models import Status +from xsdata.codegen.models import Attr, Status from xsdata.codegen.utils import ClassUtils from xsdata.exceptions import AnalyzerValueError from xsdata.models.config import GeneratorConfig from xsdata.models.enums import Tag -from xsdata.utils.testing import AttrFactory -from xsdata.utils.testing import ClassFactory -from xsdata.utils.testing import FactoryTestCase +from xsdata.utils.testing import AttrFactory, ClassFactory, FactoryTestCase class FlattenAttributeGroupsTests(FactoryTestCase): diff --git a/tests/codegen/handlers/test_flatten_class_extensions.py b/tests/codegen/handlers/test_flatten_class_extensions.py index 4b2f4b0fe..2be4d5d0f 100644 --- a/tests/codegen/handlers/test_flatten_class_extensions.py +++ b/tests/codegen/handlers/test_flatten_class_extensions.py @@ -3,17 +3,17 @@ from xsdata.codegen.container import ClassContainer from xsdata.codegen.handlers import FlattenClassExtensions -from xsdata.codegen.models import Restrictions -from xsdata.codegen.models import Status +from xsdata.codegen.models import Restrictions, Status from xsdata.codegen.utils import ClassUtils from xsdata.models.config import GeneratorConfig -from xsdata.models.enums import DataType -from xsdata.models.enums import Tag -from xsdata.utils.testing import AttrFactory -from xsdata.utils.testing import AttrTypeFactory -from xsdata.utils.testing import ClassFactory -from xsdata.utils.testing import ExtensionFactory -from xsdata.utils.testing import FactoryTestCase +from xsdata.models.enums import DataType, Tag +from xsdata.utils.testing import ( + AttrFactory, + AttrTypeFactory, + ClassFactory, + ExtensionFactory, + FactoryTestCase, +) class FlattenClassExtensionsTests(FactoryTestCase): diff --git a/tests/codegen/handlers/test_merge_attributes.py b/tests/codegen/handlers/test_merge_attributes.py index 46e0e184b..336f0c41f 100644 --- a/tests/codegen/handlers/test_merge_attributes.py +++ b/tests/codegen/handlers/test_merge_attributes.py @@ -1,10 +1,12 @@ from xsdata.codegen.handlers import MergeAttributes from xsdata.codegen.models import Restrictions from xsdata.models.enums import DataType -from xsdata.utils.testing import AttrFactory -from xsdata.utils.testing import AttrTypeFactory -from xsdata.utils.testing import ClassFactory -from xsdata.utils.testing import FactoryTestCase +from xsdata.utils.testing import ( + AttrFactory, + AttrTypeFactory, + ClassFactory, + FactoryTestCase, +) class MergeAttributesTests(FactoryTestCase): diff --git a/tests/codegen/handlers/test_process_attributes_types.py b/tests/codegen/handlers/test_process_attributes_types.py index 183c98462..b2f0d915d 100644 --- a/tests/codegen/handlers/test_process_attributes_types.py +++ b/tests/codegen/handlers/test_process_attributes_types.py @@ -2,17 +2,16 @@ from xsdata.codegen.container import ClassContainer from xsdata.codegen.handlers import ProcessAttributeTypes -from xsdata.codegen.models import Class -from xsdata.codegen.models import Restrictions -from xsdata.codegen.models import Status +from xsdata.codegen.models import Class, Restrictions, Status from xsdata.codegen.utils import ClassUtils from xsdata.models.config import GeneratorConfig -from xsdata.models.enums import DataType -from xsdata.models.enums import Tag -from xsdata.utils.testing import AttrFactory -from xsdata.utils.testing import AttrTypeFactory -from xsdata.utils.testing import ClassFactory -from xsdata.utils.testing import FactoryTestCase +from xsdata.models.enums import DataType, Tag +from xsdata.utils.testing import ( + AttrFactory, + AttrTypeFactory, + ClassFactory, + FactoryTestCase, +) class ProcessAttributeTypesTests(FactoryTestCase): diff --git a/tests/codegen/handlers/test_process_mixed_content_class.py b/tests/codegen/handlers/test_process_mixed_content_class.py index 6fccaa2e3..9a003dbb2 100644 --- a/tests/codegen/handlers/test_process_mixed_content_class.py +++ b/tests/codegen/handlers/test_process_mixed_content_class.py @@ -2,11 +2,8 @@ from xsdata.codegen.handlers import ProcessMixedContentClass from xsdata.codegen.models import Restrictions -from xsdata.models.enums import DataType -from xsdata.models.enums import NamespaceType -from xsdata.utils.testing import AttrFactory -from xsdata.utils.testing import ClassFactory -from xsdata.utils.testing import FactoryTestCase +from xsdata.models.enums import DataType, NamespaceType +from xsdata.utils.testing import AttrFactory, ClassFactory, FactoryTestCase class ProcessMixedContentClassTests(FactoryTestCase): diff --git a/tests/codegen/handlers/test_rename_duplicate_attributes.py b/tests/codegen/handlers/test_rename_duplicate_attributes.py index bbf025a1b..ab483b180 100644 --- a/tests/codegen/handlers/test_rename_duplicate_attributes.py +++ b/tests/codegen/handlers/test_rename_duplicate_attributes.py @@ -1,8 +1,6 @@ from xsdata.codegen.handlers import RenameDuplicateAttributes from xsdata.models.enums import Tag -from xsdata.utils.testing import AttrFactory -from xsdata.utils.testing import ClassFactory -from xsdata.utils.testing import FactoryTestCase +from xsdata.utils.testing import AttrFactory, ClassFactory, FactoryTestCase class RenameDuplicateAttributesTests(FactoryTestCase): diff --git a/tests/codegen/handlers/test_rename_duplicate_classes.py b/tests/codegen/handlers/test_rename_duplicate_classes.py index 89b8f12c5..b194b82df 100644 --- a/tests/codegen/handlers/test_rename_duplicate_classes.py +++ b/tests/codegen/handlers/test_rename_duplicate_classes.py @@ -2,14 +2,15 @@ from xsdata.codegen.container import ClassContainer from xsdata.codegen.handlers import RenameDuplicateClasses -from xsdata.models.config import GeneratorConfig -from xsdata.models.config import StructureStyle +from xsdata.models.config import GeneratorConfig, StructureStyle from xsdata.models.enums import Tag -from xsdata.utils.testing import AttrFactory -from xsdata.utils.testing import AttrTypeFactory -from xsdata.utils.testing import ClassFactory -from xsdata.utils.testing import ExtensionFactory -from xsdata.utils.testing import FactoryTestCase +from xsdata.utils.testing import ( + AttrFactory, + AttrTypeFactory, + ClassFactory, + ExtensionFactory, + FactoryTestCase, +) class RenameDuplicateClassesTests(FactoryTestCase): diff --git a/tests/codegen/handlers/test_reset_attribute_sequence_numbers.py b/tests/codegen/handlers/test_reset_attribute_sequence_numbers.py index 3db7fe4cb..828165030 100644 --- a/tests/codegen/handlers/test_reset_attribute_sequence_numbers.py +++ b/tests/codegen/handlers/test_reset_attribute_sequence_numbers.py @@ -1,13 +1,13 @@ -from xsdata.codegen.container import ClassContainer -from xsdata.codegen.container import Steps +from xsdata.codegen.container import ClassContainer, Steps from xsdata.codegen.handlers import ResetAttributeSequenceNumbers -from xsdata.codegen.models import Restrictions -from xsdata.codegen.models import Status +from xsdata.codegen.models import Restrictions, Status from xsdata.models.config import GeneratorConfig -from xsdata.utils.testing import AttrFactory -from xsdata.utils.testing import ClassFactory -from xsdata.utils.testing import ExtensionFactory -from xsdata.utils.testing import FactoryTestCase +from xsdata.utils.testing import ( + AttrFactory, + ClassFactory, + ExtensionFactory, + FactoryTestCase, +) class ResetAttributeSequencesTests(FactoryTestCase): diff --git a/tests/codegen/handlers/test_reset_attribute_sequences.py b/tests/codegen/handlers/test_reset_attribute_sequences.py index 07ff1605e..25398fc52 100644 --- a/tests/codegen/handlers/test_reset_attribute_sequences.py +++ b/tests/codegen/handlers/test_reset_attribute_sequences.py @@ -1,8 +1,6 @@ from xsdata.codegen.handlers import ResetAttributeSequences from xsdata.codegen.models import Restrictions -from xsdata.utils.testing import AttrFactory -from xsdata.utils.testing import ClassFactory -from xsdata.utils.testing import FactoryTestCase +from xsdata.utils.testing import AttrFactory, ClassFactory, FactoryTestCase class ResetAttributeSequencesTests(FactoryTestCase): diff --git a/tests/codegen/handlers/test_sanitize_attributes_default_value.py b/tests/codegen/handlers/test_sanitize_attributes_default_value.py index ce5294ca8..afb67c2a5 100644 --- a/tests/codegen/handlers/test_sanitize_attributes_default_value.py +++ b/tests/codegen/handlers/test_sanitize_attributes_default_value.py @@ -4,13 +4,13 @@ from xsdata.codegen.handlers import SanitizeAttributesDefaultValue from xsdata.codegen.models import Restrictions from xsdata.models.config import GeneratorConfig -from xsdata.models.enums import DataType -from xsdata.models.enums import Namespace -from xsdata.models.enums import Tag -from xsdata.utils.testing import AttrFactory -from xsdata.utils.testing import AttrTypeFactory -from xsdata.utils.testing import ClassFactory -from xsdata.utils.testing import FactoryTestCase +from xsdata.models.enums import DataType, Namespace, Tag +from xsdata.utils.testing import ( + AttrFactory, + AttrTypeFactory, + ClassFactory, + FactoryTestCase, +) class SanitizeAttributesDefaultValueTests(FactoryTestCase): diff --git a/tests/codegen/handlers/test_sanitize_enumeration_class.py b/tests/codegen/handlers/test_sanitize_enumeration_class.py index d264c8a48..5b8e7b42b 100644 --- a/tests/codegen/handlers/test_sanitize_enumeration_class.py +++ b/tests/codegen/handlers/test_sanitize_enumeration_class.py @@ -1,12 +1,13 @@ from xsdata.codegen.container import ClassContainer from xsdata.codegen.handlers import SanitizeEnumerationClass from xsdata.models.config import GeneratorConfig -from xsdata.models.enums import DataType -from xsdata.models.enums import Tag -from xsdata.utils.testing import AttrFactory -from xsdata.utils.testing import AttrTypeFactory -from xsdata.utils.testing import ClassFactory -from xsdata.utils.testing import FactoryTestCase +from xsdata.models.enums import DataType, Tag +from xsdata.utils.testing import ( + AttrFactory, + AttrTypeFactory, + ClassFactory, + FactoryTestCase, +) class SanitizeEnumerationClassTests(FactoryTestCase): diff --git a/tests/codegen/handlers/test_unnest_inner_classes.py b/tests/codegen/handlers/test_unnest_inner_classes.py index 08e0ddba4..e1f1e7639 100644 --- a/tests/codegen/handlers/test_unnest_inner_classes.py +++ b/tests/codegen/handlers/test_unnest_inner_classes.py @@ -1,10 +1,12 @@ from xsdata.codegen.container import ClassContainer from xsdata.codegen.handlers import UnnestInnerClasses from xsdata.models.config import GeneratorConfig -from xsdata.utils.testing import AttrFactory -from xsdata.utils.testing import AttrTypeFactory -from xsdata.utils.testing import ClassFactory -from xsdata.utils.testing import FactoryTestCase +from xsdata.utils.testing import ( + AttrFactory, + AttrTypeFactory, + ClassFactory, + FactoryTestCase, +) class UnnestInnerClassesTests(FactoryTestCase): diff --git a/tests/codegen/handlers/test_update_attributes_effective_choice.py b/tests/codegen/handlers/test_update_attributes_effective_choice.py index 235677641..c948025d2 100644 --- a/tests/codegen/handlers/test_update_attributes_effective_choice.py +++ b/tests/codegen/handlers/test_update_attributes_effective_choice.py @@ -1,8 +1,6 @@ from xsdata.codegen.handlers import UpdateAttributesEffectiveChoice from xsdata.codegen.models import Restrictions -from xsdata.utils.testing import AttrFactory -from xsdata.utils.testing import ClassFactory -from xsdata.utils.testing import FactoryTestCase +from xsdata.utils.testing import AttrFactory, ClassFactory, FactoryTestCase class UpdateAttributesEffectiveChoiceTests(FactoryTestCase): diff --git a/tests/codegen/handlers/test_vacuum_inner_classes.py b/tests/codegen/handlers/test_vacuum_inner_classes.py index a7fb35cd3..f11216bca 100644 --- a/tests/codegen/handlers/test_vacuum_inner_classes.py +++ b/tests/codegen/handlers/test_vacuum_inner_classes.py @@ -2,11 +2,13 @@ from xsdata.codegen.handlers import VacuumInnerClasses from xsdata.models.enums import DataType -from xsdata.utils.testing import AttrFactory -from xsdata.utils.testing import AttrTypeFactory -from xsdata.utils.testing import ClassFactory -from xsdata.utils.testing import ExtensionFactory -from xsdata.utils.testing import FactoryTestCase +from xsdata.utils.testing import ( + AttrFactory, + AttrTypeFactory, + ClassFactory, + ExtensionFactory, + FactoryTestCase, +) class VacuumInnerClassesTests(FactoryTestCase): diff --git a/tests/codegen/handlers/test_validate_attributes_overrides.py b/tests/codegen/handlers/test_validate_attributes_overrides.py index 2b8d164a2..db1b59be9 100644 --- a/tests/codegen/handlers/test_validate_attributes_overrides.py +++ b/tests/codegen/handlers/test_validate_attributes_overrides.py @@ -5,12 +5,13 @@ from xsdata.codegen.handlers import ValidateAttributesOverrides from xsdata.codegen.models import Status from xsdata.models.config import GeneratorConfig -from xsdata.models.enums import DataType -from xsdata.models.enums import Tag -from xsdata.utils.testing import AttrFactory -from xsdata.utils.testing import ClassFactory -from xsdata.utils.testing import ExtensionFactory -from xsdata.utils.testing import FactoryTestCase +from xsdata.models.enums import DataType, Tag +from xsdata.utils.testing import ( + AttrFactory, + ClassFactory, + ExtensionFactory, + FactoryTestCase, +) class ValidateAttributesOverridesTests(FactoryTestCase): diff --git a/tests/codegen/mappers/test_definitions.py b/tests/codegen/mappers/test_definitions.py index f6c49ae98..458eb288b 100644 --- a/tests/codegen/mappers/test_definitions.py +++ b/tests/codegen/mappers/test_definitions.py @@ -2,27 +2,24 @@ from unittest import mock from xsdata.codegen.mappers.definitions import DefinitionsMapper -from xsdata.codegen.models import Class -from xsdata.codegen.models import Status +from xsdata.codegen.models import Class, Status from xsdata.formats.dataclass.models.generics import AnyElement -from xsdata.models.enums import DataType -from xsdata.models.enums import Namespace -from xsdata.models.enums import Tag -from xsdata.models.wsdl import Binding -from xsdata.models.wsdl import BindingMessage -from xsdata.models.wsdl import BindingOperation -from xsdata.models.wsdl import Definitions -from xsdata.models.wsdl import Message -from xsdata.models.wsdl import Part -from xsdata.models.wsdl import PortType -from xsdata.models.wsdl import PortTypeMessage -from xsdata.models.wsdl import PortTypeOperation -from xsdata.models.wsdl import Service -from xsdata.models.wsdl import ServicePort +from xsdata.models.enums import DataType, Namespace, Tag +from xsdata.models.wsdl import ( + Binding, + BindingMessage, + BindingOperation, + Definitions, + Message, + Part, + PortType, + PortTypeMessage, + PortTypeOperation, + Service, + ServicePort, +) from xsdata.utils.namespaces import build_qname -from xsdata.utils.testing import AttrFactory -from xsdata.utils.testing import ClassFactory -from xsdata.utils.testing import FactoryTestCase +from xsdata.utils.testing import AttrFactory, ClassFactory, FactoryTestCase def mock_create_inner(target: Class, name: str): diff --git a/tests/codegen/mappers/test_dict.py b/tests/codegen/mappers/test_dict.py index 5108722ec..7ec652106 100644 --- a/tests/codegen/mappers/test_dict.py +++ b/tests/codegen/mappers/test_dict.py @@ -4,12 +4,13 @@ from xsdata.codegen.mappers.dict import DictMapper from xsdata.codegen.models import Restrictions from xsdata.codegen.utils import ClassUtils -from xsdata.models.enums import DataType -from xsdata.models.enums import Tag -from xsdata.utils.testing import AttrFactory -from xsdata.utils.testing import AttrTypeFactory -from xsdata.utils.testing import ClassFactory -from xsdata.utils.testing import FactoryTestCase +from xsdata.models.enums import DataType, Tag +from xsdata.utils.testing import ( + AttrFactory, + AttrTypeFactory, + ClassFactory, + FactoryTestCase, +) class DictMapperTests(FactoryTestCase): diff --git a/tests/codegen/mappers/test_dtd.py b/tests/codegen/mappers/test_dtd.py index 857ac114b..6c13fe22d 100644 --- a/tests/codegen/mappers/test_dtd.py +++ b/tests/codegen/mappers/test_dtd.py @@ -3,24 +3,25 @@ from unittest import mock from xsdata.codegen.mappers.dtd import DtdMapper -from xsdata.codegen.models import Class -from xsdata.codegen.models import Restrictions -from xsdata.models.dtd import DtdAttributeDefault -from xsdata.models.dtd import DtdAttributeType -from xsdata.models.dtd import DtdContentOccur -from xsdata.models.dtd import DtdContentType -from xsdata.models.dtd import DtdElementType -from xsdata.models.enums import DataType -from xsdata.models.enums import Namespace -from xsdata.models.enums import Tag -from xsdata.utils.testing import AttrFactory -from xsdata.utils.testing import AttrTypeFactory -from xsdata.utils.testing import ClassFactory -from xsdata.utils.testing import DtdAttributeFactory -from xsdata.utils.testing import DtdContentFactory -from xsdata.utils.testing import DtdElementFactory -from xsdata.utils.testing import DtdFactory -from xsdata.utils.testing import FactoryTestCase +from xsdata.codegen.models import Class, Restrictions +from xsdata.models.dtd import ( + DtdAttributeDefault, + DtdAttributeType, + DtdContentOccur, + DtdContentType, + DtdElementType, +) +from xsdata.models.enums import DataType, Namespace, Tag +from xsdata.utils.testing import ( + AttrFactory, + AttrTypeFactory, + ClassFactory, + DtdAttributeFactory, + DtdContentFactory, + DtdElementFactory, + DtdFactory, + FactoryTestCase, +) class DtdMapperTests(FactoryTestCase): diff --git a/tests/codegen/mappers/test_element.py b/tests/codegen/mappers/test_element.py index a60f38f90..ed441f267 100644 --- a/tests/codegen/mappers/test_element.py +++ b/tests/codegen/mappers/test_element.py @@ -5,13 +5,13 @@ from xsdata.codegen.models import Restrictions from xsdata.codegen.utils import ClassUtils from xsdata.formats.dataclass.models.generics import AnyElement -from xsdata.models.enums import DataType -from xsdata.models.enums import QNames -from xsdata.models.enums import Tag -from xsdata.utils.testing import AttrFactory -from xsdata.utils.testing import AttrTypeFactory -from xsdata.utils.testing import ClassFactory -from xsdata.utils.testing import FactoryTestCase +from xsdata.models.enums import DataType, QNames, Tag +from xsdata.utils.testing import ( + AttrFactory, + AttrTypeFactory, + ClassFactory, + FactoryTestCase, +) class ElementMapperTests(FactoryTestCase): diff --git a/tests/codegen/mappers/test_schema.py b/tests/codegen/mappers/test_schema.py index 439b22ee2..3bbbeacb9 100644 --- a/tests/codegen/mappers/test_schema.py +++ b/tests/codegen/mappers/test_schema.py @@ -3,36 +3,36 @@ from unittest import mock from xsdata.codegen.mappers.schema import SchemaMapper -from xsdata.codegen.models import Class -from xsdata.codegen.models import Restrictions -from xsdata.models.enums import DataType -from xsdata.models.enums import FormType -from xsdata.models.enums import Tag -from xsdata.models.enums import UseType -from xsdata.models.xsd import Alternative -from xsdata.models.xsd import Annotation -from xsdata.models.xsd import Attribute -from xsdata.models.xsd import AttributeGroup -from xsdata.models.xsd import Choice -from xsdata.models.xsd import ComplexContent -from xsdata.models.xsd import ComplexType -from xsdata.models.xsd import Element -from xsdata.models.xsd import Enumeration -from xsdata.models.xsd import Extension -from xsdata.models.xsd import Group -from xsdata.models.xsd import Override -from xsdata.models.xsd import Redefine -from xsdata.models.xsd import Restriction -from xsdata.models.xsd import Schema -from xsdata.models.xsd import Sequence -from xsdata.models.xsd import SimpleContent -from xsdata.models.xsd import SimpleType +from xsdata.codegen.models import Class, Restrictions +from xsdata.models.enums import DataType, FormType, Tag +from xsdata.models.xsd import ( + Alternative, + Annotation, + Attribute, + AttributeGroup, + Choice, + ComplexContent, + ComplexType, + Element, + Enumeration, + Extension, + Group, + Override, + Redefine, + Restriction, + Schema, + Sequence, + SimpleContent, + SimpleType, +) from xsdata.utils.namespaces import build_qname -from xsdata.utils.testing import AttrFactory -from xsdata.utils.testing import AttrTypeFactory -from xsdata.utils.testing import ClassFactory -from xsdata.utils.testing import ExtensionFactory -from xsdata.utils.testing import FactoryTestCase +from xsdata.utils.testing import ( + AttrFactory, + AttrTypeFactory, + ClassFactory, + ExtensionFactory, + FactoryTestCase, +) class SchemaMapperTests(FactoryTestCase): diff --git a/tests/codegen/models/test_attr.py b/tests/codegen/models/test_attr.py index 7429d024f..42501eaed 100644 --- a/tests/codegen/models/test_attr.py +++ b/tests/codegen/models/test_attr.py @@ -1,12 +1,8 @@ import sys from xsdata.codegen.models import Restrictions -from xsdata.models.enums import DataType -from xsdata.models.enums import Namespace -from xsdata.models.enums import Tag -from xsdata.utils.testing import AttrFactory -from xsdata.utils.testing import AttrTypeFactory -from xsdata.utils.testing import FactoryTestCase +from xsdata.models.enums import DataType, Namespace, Tag +from xsdata.utils.testing import AttrFactory, AttrTypeFactory, FactoryTestCase class AttrTests(FactoryTestCase): diff --git a/tests/codegen/models/test_attr_type.py b/tests/codegen/models/test_attr_type.py index 3e704b4d7..68a378d1c 100644 --- a/tests/codegen/models/test_attr_type.py +++ b/tests/codegen/models/test_attr_type.py @@ -1,5 +1,4 @@ -from xsdata.utils.testing import AttrTypeFactory -from xsdata.utils.testing import FactoryTestCase +from xsdata.utils.testing import AttrTypeFactory, FactoryTestCase class AttrTypeTests(FactoryTestCase): diff --git a/tests/codegen/models/test_class.py b/tests/codegen/models/test_class.py index 7b92878fb..46c69e69e 100644 --- a/tests/codegen/models/test_class.py +++ b/tests/codegen/models/test_class.py @@ -2,15 +2,15 @@ from xsdata.codegen.models import SIMPLE_TYPES from xsdata.exceptions import CodeGenerationError -from xsdata.models.enums import DataType -from xsdata.models.enums import Namespace -from xsdata.models.enums import Tag +from xsdata.models.enums import DataType, Namespace, Tag from xsdata.utils.namespaces import build_qname -from xsdata.utils.testing import AttrFactory -from xsdata.utils.testing import AttrTypeFactory -from xsdata.utils.testing import ClassFactory -from xsdata.utils.testing import ExtensionFactory -from xsdata.utils.testing import FactoryTestCase +from xsdata.utils.testing import ( + AttrFactory, + AttrTypeFactory, + ClassFactory, + ExtensionFactory, + FactoryTestCase, +) class ClassTests(FactoryTestCase): diff --git a/tests/codegen/parsers/test_definitions.py b/tests/codegen/parsers/test_definitions.py index 6b071043c..92f2725ba 100644 --- a/tests/codegen/parsers/test_definitions.py +++ b/tests/codegen/parsers/test_definitions.py @@ -2,8 +2,7 @@ from tests import fixtures_dir from xsdata.codegen.parsers import DefinitionsParser -from xsdata.models.wsdl import Definitions -from xsdata.models.wsdl import Import +from xsdata.models.wsdl import Definitions, Import class DefinitionsParserTests(TestCase): diff --git a/tests/codegen/parsers/test_dtd.py b/tests/codegen/parsers/test_dtd.py index dbfdf8097..1d8870d3e 100644 --- a/tests/codegen/parsers/test_dtd.py +++ b/tests/codegen/parsers/test_dtd.py @@ -1,15 +1,16 @@ from dataclasses import asdict -from unittest import mock -from unittest import TestCase +from unittest import TestCase, mock from tests import fixtures_dir from xsdata.codegen.parsers.dtd import DtdParser from xsdata.exceptions import ParserError -from xsdata.models.dtd import DtdAttributeDefault -from xsdata.models.dtd import DtdAttributeType -from xsdata.models.dtd import DtdContentOccur -from xsdata.models.dtd import DtdContentType -from xsdata.models.dtd import DtdElementType +from xsdata.models.dtd import ( + DtdAttributeDefault, + DtdAttributeType, + DtdContentOccur, + DtdContentType, + DtdElementType, +) from xsdata.models.enums import Namespace diff --git a/tests/codegen/parsers/test_schema.py b/tests/codegen/parsers/test_schema.py index ff8df020b..f57907ec9 100644 --- a/tests/codegen/parsers/test_schema.py +++ b/tests/codegen/parsers/test_schema.py @@ -1,32 +1,31 @@ import sys from pathlib import Path -from unittest import mock -from unittest import TestCase +from unittest import TestCase, mock from xsdata.codegen.parsers.schema import SchemaParser -from xsdata.models.enums import FormType -from xsdata.models.enums import Mode -from xsdata.models.enums import Namespace -from xsdata.models.xsd import All -from xsdata.models.xsd import Any -from xsdata.models.xsd import AnyAttribute -from xsdata.models.xsd import Attribute -from xsdata.models.xsd import AttributeGroup -from xsdata.models.xsd import ComplexContent -from xsdata.models.xsd import ComplexType -from xsdata.models.xsd import DefaultOpenContent -from xsdata.models.xsd import Element -from xsdata.models.xsd import Extension -from xsdata.models.xsd import Group -from xsdata.models.xsd import Import -from xsdata.models.xsd import Include -from xsdata.models.xsd import OpenContent -from xsdata.models.xsd import Override -from xsdata.models.xsd import Redefine -from xsdata.models.xsd import Restriction -from xsdata.models.xsd import Schema -from xsdata.models.xsd import Sequence -from xsdata.models.xsd import SimpleContent +from xsdata.models.enums import FormType, Mode, Namespace +from xsdata.models.xsd import ( + All, + Any, + AnyAttribute, + Attribute, + AttributeGroup, + ComplexContent, + ComplexType, + DefaultOpenContent, + Element, + Extension, + Group, + Import, + Include, + OpenContent, + Override, + Redefine, + Restriction, + Schema, + Sequence, + SimpleContent, +) class SchemaParserTests(TestCase): diff --git a/tests/codegen/test_analyzer.py b/tests/codegen/test_analyzer.py index bfcad1ec5..8bd2d6b6b 100644 --- a/tests/codegen/test_analyzer.py +++ b/tests/codegen/test_analyzer.py @@ -5,10 +5,12 @@ from xsdata.codegen.validator import ClassValidator from xsdata.exceptions import AnalyzerValueError from xsdata.models.config import GeneratorConfig -from xsdata.utils.testing import AttrFactory -from xsdata.utils.testing import ClassFactory -from xsdata.utils.testing import ExtensionFactory -from xsdata.utils.testing import FactoryTestCase +from xsdata.utils.testing import ( + AttrFactory, + ClassFactory, + ExtensionFactory, + FactoryTestCase, +) class ClassAnalyzerTests(FactoryTestCase): diff --git a/tests/codegen/test_container.py b/tests/codegen/test_container.py index ed0207aad..71193face 100644 --- a/tests/codegen/test_container.py +++ b/tests/codegen/test_container.py @@ -1,14 +1,10 @@ from unittest import mock -from xsdata.codegen.container import ClassContainer -from xsdata.codegen.container import Steps -from xsdata.codegen.models import Class -from xsdata.codegen.models import Status +from xsdata.codegen.container import ClassContainer, Steps +from xsdata.codegen.models import Class, Status from xsdata.models.config import GeneratorConfig from xsdata.models.enums import Tag -from xsdata.utils.testing import AttrFactory -from xsdata.utils.testing import ClassFactory -from xsdata.utils.testing import FactoryTestCase +from xsdata.utils.testing import AttrFactory, ClassFactory, FactoryTestCase class ClassContainerTests(FactoryTestCase): @@ -108,7 +104,7 @@ def test_first(self): self.container.add(obj) self.assertEqual(obj, self.container.first(obj.qname)) - with self.assertRaises(KeyError) as cm: + with self.assertRaises(KeyError): self.container.first("aa") def test_process_class(self): diff --git a/tests/codegen/test_resolver.py b/tests/codegen/test_resolver.py index 11b23a12d..0a7539a40 100644 --- a/tests/codegen/test_resolver.py +++ b/tests/codegen/test_resolver.py @@ -5,12 +5,14 @@ from xsdata.exceptions import ResolverValueError from xsdata.models.enums import DataType from xsdata.utils.namespaces import build_qname -from xsdata.utils.testing import AttrFactory -from xsdata.utils.testing import AttrTypeFactory -from xsdata.utils.testing import ClassFactory -from xsdata.utils.testing import ExtensionFactory -from xsdata.utils.testing import FactoryTestCase -from xsdata.utils.testing import PackageFactory +from xsdata.utils.testing import ( + AttrFactory, + AttrTypeFactory, + ClassFactory, + ExtensionFactory, + FactoryTestCase, + PackageFactory, +) class DependenciesResolverTest(FactoryTestCase): @@ -190,7 +192,7 @@ def test_find_package(self): self.resolver.find_package("nope") def test_import_classes(self): - self.resolver.class_list = [x for x in "abcdefg"] + self.resolver.class_list = list("abcdefg") self.resolver.class_map = {x: x for x in "bdg"} self.assertEqual(["a", "c", "e", "f"], self.resolver.import_classes()) diff --git a/tests/codegen/test_transformer.py b/tests/codegen/test_transformer.py index 52cb5d5e4..00e19c275 100644 --- a/tests/codegen/test_transformer.py +++ b/tests/codegen/test_transformer.py @@ -19,16 +19,9 @@ from xsdata.formats.dataclass.models.generics import AnyElement from xsdata.formats.dataclass.parsers import TreeParser from xsdata.models.config import GeneratorConfig -from xsdata.models.wsdl import Binding -from xsdata.models.wsdl import Definitions -from xsdata.models.wsdl import Types -from xsdata.models.xsd import Import -from xsdata.models.xsd import Include -from xsdata.models.xsd import Override -from xsdata.models.xsd import Schema -from xsdata.utils.testing import ClassFactory -from xsdata.utils.testing import DtdFactory -from xsdata.utils.testing import FactoryTestCase +from xsdata.models.wsdl import Binding, Definitions, Types +from xsdata.models.xsd import Import, Include, Override, Schema +from xsdata.utils.testing import ClassFactory, DtdFactory, FactoryTestCase class SchemaTransformerTests(FactoryTestCase): diff --git a/tests/codegen/test_utils.py b/tests/codegen/test_utils.py index 84c7c9659..197c599f1 100644 --- a/tests/codegen/test_utils.py +++ b/tests/codegen/test_utils.py @@ -2,17 +2,17 @@ from typing import Generator from unittest import mock -from xsdata.codegen.models import Restrictions -from xsdata.codegen.models import Status +from xsdata.codegen.models import Restrictions, Status from xsdata.codegen.utils import ClassUtils from xsdata.exceptions import CodeGenerationError -from xsdata.models.enums import DataType -from xsdata.models.enums import Tag -from xsdata.utils.testing import AttrFactory -from xsdata.utils.testing import AttrTypeFactory -from xsdata.utils.testing import ClassFactory -from xsdata.utils.testing import ExtensionFactory -from xsdata.utils.testing import FactoryTestCase +from xsdata.models.enums import DataType, Tag +from xsdata.utils.testing import ( + AttrFactory, + AttrTypeFactory, + ClassFactory, + ExtensionFactory, + FactoryTestCase, +) class ClassUtilsTests(FactoryTestCase): diff --git a/tests/codegen/test_validator.py b/tests/codegen/test_validator.py index 9ac070bc6..4ca425b78 100644 --- a/tests/codegen/test_validator.py +++ b/tests/codegen/test_validator.py @@ -4,13 +4,14 @@ from xsdata.codegen.utils import ClassUtils from xsdata.codegen.validator import ClassValidator from xsdata.models.config import GeneratorConfig -from xsdata.models.enums import DataType -from xsdata.models.enums import Tag -from xsdata.utils.testing import AttrFactory -from xsdata.utils.testing import AttrTypeFactory -from xsdata.utils.testing import ClassFactory -from xsdata.utils.testing import ExtensionFactory -from xsdata.utils.testing import FactoryTestCase +from xsdata.models.enums import DataType, Tag +from xsdata.utils.testing import ( + AttrFactory, + AttrTypeFactory, + ClassFactory, + ExtensionFactory, + FactoryTestCase, +) class ClassValidatorTests(FactoryTestCase): diff --git a/tests/codegen/test_writer.py b/tests/codegen/test_writer.py index 42e7f1243..5f5fe5987 100644 --- a/tests/codegen/test_writer.py +++ b/tests/codegen/test_writer.py @@ -1,18 +1,15 @@ from pathlib import Path from tempfile import TemporaryDirectory -from typing import Iterator -from typing import List +from typing import Iterator, List from unittest import mock from xsdata.codegen.models import Class from xsdata.codegen.writer import CodeWriter from xsdata.exceptions import CodeGenerationError from xsdata.formats.dataclass.generator import DataclassGenerator -from xsdata.formats.mixins import AbstractGenerator -from xsdata.formats.mixins import GeneratorResult +from xsdata.formats.mixins import AbstractGenerator, GeneratorResult from xsdata.models.config import GeneratorConfig -from xsdata.utils.testing import ClassFactory -from xsdata.utils.testing import FactoryTestCase +from xsdata.utils.testing import ClassFactory, FactoryTestCase class NoneGenerator(AbstractGenerator): diff --git a/tests/conftest.py b/tests/conftest.py index 2abc466a5..35686da55 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -3,10 +3,8 @@ from lxml import etree -from xsdata.formats.dataclass.parsers import JsonParser -from xsdata.formats.dataclass.parsers import XmlParser -from xsdata.formats.dataclass.serializers import JsonSerializer -from xsdata.formats.dataclass.serializers import XmlSerializer +from xsdata.formats.dataclass.parsers import JsonParser, XmlParser +from xsdata.formats.dataclass.serializers import JsonSerializer, XmlSerializer from xsdata.formats.dataclass.serializers.config import SerializerConfig diff --git a/tests/fixtures/annotations/model.py b/tests/fixtures/annotations/model.py index 939c604f9..04df65a2c 100644 --- a/tests/fixtures/annotations/model.py +++ b/tests/fixtures/annotations/model.py @@ -1,6 +1,5 @@ from __future__ import annotations from dataclasses import dataclass, field -from typing import Optional from tests.fixtures.annotations.units import unit __NAMESPACE__ = "http://domain.org/schema/model" @@ -8,13 +7,13 @@ @dataclass class Measurement: - value: Optional[float] = field( + value: float | None = field( default=None, metadata={ "required": True, } ) - unit: Optional[unit] = field( + unit: unit | None = field( default=None, metadata={ "type": "Attribute", diff --git a/tests/fixtures/models.py b/tests/fixtures/models.py index e969a0287..a4fa99335 100644 --- a/tests/fixtures/models.py +++ b/tests/fixtures/models.py @@ -147,23 +147,23 @@ class AttrsType: @dataclass class SequentialType: - a0: Optional[str] = field(default=None, metadata=dict(type="Attribute")) - a1: Dict[str, str] = field(default_factory=dict, metadata=dict(type="Attributes")) + a0: Optional[str] = field(default=None, metadata={"type": "Attribute"}) + a1: Dict[str, str] = field(default_factory=dict, metadata={"type": "Attributes"}) a2: List[str] = field( - default_factory=list, metadata=dict(type="Attribute", tokens=True) + default_factory=list, metadata={"type": "Attribute", "tokens": True} ) x0: Optional[int] = field(default=None) x1: List[int] = field( - default_factory=list, metadata=dict(type="Element", sequence=1) + default_factory=list, metadata={"type": "Element", "sequence": 1} ) x2: List[int] = field( - default_factory=list, metadata=dict(type="Element", sequence=1) + default_factory=list, metadata={"type": "Element", "sequence": 1} ) x3: List[int] = field( - default_factory=list, metadata=dict(type="Element", sequence=2) + default_factory=list, metadata={"type": "Element", "sequence": 2} ) x4: Optional[int] = field( - default=None, metadata=dict(type="Element", sequence=2) + default=None, metadata={"type": "Element", "sequence": 2} ) @@ -182,14 +182,14 @@ class Meta: content: List[object] = field( default_factory=list, - metadata=dict( - type="Wildcard", - namespace="##any", - mixed=True, - choices=( - dict(name="span", type=Span), + metadata={ + "type": "Wildcard", + "namespace": "##any", + "mixed": True, + "choices": ( + {"name": "span", "type": Span}, ), - ) + } ) @@ -209,7 +209,7 @@ class TypeNS2: class Meta: namespace = "ns2" - x1: int = field(metadata=dict(type="Element")) + x1: int = field(metadata={"type": "Element"}) @dataclass class TypeNS1(TypeNS2): @@ -217,4 +217,4 @@ class TypeNS1(TypeNS2): class Meta: namespace = "ns1" - x2: int = field(metadata=dict(type="Element")) \ No newline at end of file + x2: int = field(metadata={"type": "Element"}) \ No newline at end of file diff --git a/tests/formats/dataclass/models/test_builders.py b/tests/formats/dataclass/models/test_builders.py index 60dd1781b..76c0bf5ac 100644 --- a/tests/formats/dataclass/models/test_builders.py +++ b/tests/formats/dataclass/models/test_builders.py @@ -1,43 +1,24 @@ import sys import uuid -from dataclasses import dataclass -from dataclasses import field -from dataclasses import fields -from dataclasses import make_dataclass -from typing import Dict -from typing import get_type_hints -from typing import Iterator -from typing import List -from typing import Tuple -from typing import Union -from unittest import mock -from unittest import TestCase +from dataclasses import dataclass, field, fields, make_dataclass +from typing import Dict, Iterator, List, Tuple, Union, get_type_hints +from unittest import TestCase, mock from xml.etree.ElementTree import QName from tests.fixtures.artists import Artist from tests.fixtures.books import BookForm -from tests.fixtures.models import ChoiceType -from tests.fixtures.models import Parent -from tests.fixtures.models import TypeA -from tests.fixtures.models import TypeB -from tests.fixtures.models import TypeNS1 -from tests.fixtures.models import UnionType +from tests.fixtures.models import ChoiceType, Parent, TypeA, TypeB, TypeNS1, UnionType from tests.fixtures.series import Country from tests.fixtures.submodels import ChoiceTypeChild from xsdata.exceptions import XmlContextError from xsdata.formats.dataclass.compat import class_types -from xsdata.formats.dataclass.models.builders import XmlMetaBuilder -from xsdata.formats.dataclass.models.builders import XmlVarBuilder -from xsdata.formats.dataclass.models.elements import XmlMeta -from xsdata.formats.dataclass.models.elements import XmlType +from xsdata.formats.dataclass.models.builders import XmlMetaBuilder, XmlVarBuilder +from xsdata.formats.dataclass.models.elements import XmlMeta, XmlType from xsdata.models.datatype import XmlDate from xsdata.utils import text -from xsdata.utils.constants import return_input -from xsdata.utils.constants import return_true +from xsdata.utils.constants import return_input, return_true from xsdata.utils.namespaces import build_qname -from xsdata.utils.testing import FactoryTestCase -from xsdata.utils.testing import XmlMetaFactory -from xsdata.utils.testing import XmlVarFactory +from xsdata.utils.testing import FactoryTestCase, XmlMetaFactory, XmlVarFactory class XmlMetaBuilderTests(FactoryTestCase): @@ -270,12 +251,12 @@ def test_default_xml_type(self): self.assertEqual(XmlType.ELEMENT, self.builder.default_xml_type(cls)) cls = make_dataclass( - "c", [("x", int), ("y", int, field(metadata=dict(type="Text")))] + "c", [("x", int), ("y", int, field(metadata={"type": "Text"}))] ) self.assertEqual(XmlType.ELEMENT, self.builder.default_xml_type(cls)) cls = make_dataclass( - "d", [("x", int), ("y", int, field(metadata=dict(type="Element")))] + "d", [("x", int), ("y", int, field(metadata={"type": "Element"}))] ) self.assertEqual(XmlType.TEXT, self.builder.default_xml_type(cls)) @@ -283,8 +264,8 @@ def test_default_xml_type(self): cls = make_dataclass( "e", [ - ("x", int, field(metadata=dict(type="Text"))), - ("y", int, field(metadata=dict(type="Text"))), + ("x", int, field(metadata={"type": "Text"})), + ("y", int, field(metadata={"type": "Text"})), ], ) self.builder.default_xml_type(cls) diff --git a/tests/formats/dataclass/parsers/handlers/test_lxml.py b/tests/formats/dataclass/parsers/handlers/test_lxml.py index e5f3e2f2d..ee8834048 100644 --- a/tests/formats/dataclass/parsers/handlers/test_lxml.py +++ b/tests/formats/dataclass/parsers/handlers/test_lxml.py @@ -3,13 +3,9 @@ from lxml import etree from tests import fixtures_dir -from tests.fixtures.books import BookForm -from tests.fixtures.books import Books -from tests.fixtures.books.fixtures import books -from tests.fixtures.books.fixtures import events -from tests.fixtures.books.fixtures import events_default_ns -from xsdata.exceptions import ParserError -from xsdata.exceptions import XmlHandlerError +from tests.fixtures.books import BookForm, Books +from tests.fixtures.books.fixtures import books, events, events_default_ns +from xsdata.exceptions import ParserError, XmlHandlerError from xsdata.formats.dataclass.parsers.bases import RecordParser from xsdata.formats.dataclass.parsers.handlers import LxmlEventHandler diff --git a/tests/formats/dataclass/parsers/handlers/test_native.py b/tests/formats/dataclass/parsers/handlers/test_native.py index f8267c26f..ba4158933 100644 --- a/tests/formats/dataclass/parsers/handlers/test_native.py +++ b/tests/formats/dataclass/parsers/handlers/test_native.py @@ -5,13 +5,9 @@ import pytest from tests import fixtures_dir -from tests.fixtures.books import BookForm -from tests.fixtures.books import Books -from tests.fixtures.books.fixtures import books -from tests.fixtures.books.fixtures import events -from tests.fixtures.books.fixtures import events_default_ns -from xsdata.exceptions import ParserError -from xsdata.exceptions import XmlHandlerError +from tests.fixtures.books import BookForm, Books +from tests.fixtures.books.fixtures import books, events, events_default_ns +from xsdata.exceptions import ParserError, XmlHandlerError from xsdata.formats.dataclass.parsers.bases import RecordParser from xsdata.formats.dataclass.parsers.handlers import XmlEventHandler from xsdata.formats.dataclass.parsers.handlers.native import get_base_url diff --git a/tests/formats/dataclass/parsers/nodes/test_element.py b/tests/formats/dataclass/parsers/nodes/test_element.py index 96a7a017c..2d5d16e3e 100644 --- a/tests/formats/dataclass/parsers/nodes/test_element.py +++ b/tests/formats/dataclass/parsers/nodes/test_element.py @@ -3,35 +3,34 @@ from unittest import mock from tests.fixtures.books import Books -from tests.fixtures.models import AttrsType -from tests.fixtures.models import ExtendedListType -from tests.fixtures.models import ExtendedType -from tests.fixtures.models import FixedType -from tests.fixtures.models import NillableType -from tests.fixtures.models import Paragraph -from tests.fixtures.models import SequentialType -from tests.fixtures.models import TypeA -from tests.fixtures.models import TypeB -from tests.fixtures.models import TypeC +from tests.fixtures.models import ( + AttrsType, + ExtendedListType, + ExtendedType, + FixedType, + NillableType, + Paragraph, + SequentialType, + TypeA, + TypeB, + TypeC, +) from xsdata.exceptions import ParserError from xsdata.formats.dataclass.context import XmlContext from xsdata.formats.dataclass.models.elements import XmlType -from xsdata.formats.dataclass.models.generics import AnyElement -from xsdata.formats.dataclass.models.generics import DerivedElement +from xsdata.formats.dataclass.models.generics import AnyElement, DerivedElement from xsdata.formats.dataclass.parsers.config import ParserConfig -from xsdata.formats.dataclass.parsers.nodes import ElementNode -from xsdata.formats.dataclass.parsers.nodes import PrimitiveNode -from xsdata.formats.dataclass.parsers.nodes import SkipNode -from xsdata.formats.dataclass.parsers.nodes import StandardNode -from xsdata.formats.dataclass.parsers.nodes import UnionNode -from xsdata.formats.dataclass.parsers.nodes import WildcardNode +from xsdata.formats.dataclass.parsers.nodes import ( + ElementNode, + PrimitiveNode, + SkipNode, + StandardNode, + UnionNode, + WildcardNode, +) from xsdata.formats.dataclass.parsers.utils import ParserUtils -from xsdata.models.enums import DataType -from xsdata.models.enums import Namespace -from xsdata.models.enums import QNames -from xsdata.utils.testing import FactoryTestCase -from xsdata.utils.testing import XmlMetaFactory -from xsdata.utils.testing import XmlVarFactory +from xsdata.models.enums import DataType, Namespace, QNames +from xsdata.utils.testing import FactoryTestCase, XmlMetaFactory, XmlVarFactory class ElementNodeTests(FactoryTestCase): diff --git a/tests/formats/dataclass/parsers/nodes/test_primitive.py b/tests/formats/dataclass/parsers/nodes/test_primitive.py index 6507506ca..05ff90444 100644 --- a/tests/formats/dataclass/parsers/nodes/test_primitive.py +++ b/tests/formats/dataclass/parsers/nodes/test_primitive.py @@ -1,5 +1,4 @@ -from unittest import mock -from unittest import TestCase +from unittest import TestCase, mock from xsdata.exceptions import XmlContextError from xsdata.formats.dataclass.models.elements import XmlType diff --git a/tests/formats/dataclass/parsers/nodes/test_wrapper.py b/tests/formats/dataclass/parsers/nodes/test_wrapper.py index 65dec8b73..536af3275 100644 --- a/tests/formats/dataclass/parsers/nodes/test_wrapper.py +++ b/tests/formats/dataclass/parsers/nodes/test_wrapper.py @@ -1,5 +1,4 @@ -from dataclasses import dataclass -from dataclasses import field +from dataclasses import dataclass, field from typing import List from unittest import TestCase diff --git a/tests/formats/dataclass/parsers/test_json.py b/tests/formats/dataclass/parsers/test_json.py index f15c23d46..1b99aca53 100644 --- a/tests/formats/dataclass/parsers/test_json.py +++ b/tests/formats/dataclass/parsers/test_json.py @@ -1,28 +1,25 @@ import json -from dataclasses import asdict -from dataclasses import make_dataclass -from typing import List -from typing import Optional -from typing import Union +from dataclasses import asdict, make_dataclass +from typing import List, Optional, Union from xml.etree.ElementTree import QName from tests import fixtures_dir -from tests.fixtures.books import BookForm -from tests.fixtures.books import Books -from tests.fixtures.models import AttrsType -from tests.fixtures.models import BaseC -from tests.fixtures.models import BaseType -from tests.fixtures.models import ChoiceType -from tests.fixtures.models import ExtendedType -from tests.fixtures.models import OptionalChoiceType -from tests.fixtures.models import TypeA -from tests.fixtures.models import TypeB -from tests.fixtures.models import TypeC -from tests.fixtures.models import TypeD -from tests.fixtures.models import UnionType +from tests.fixtures.books import BookForm, Books +from tests.fixtures.models import ( + AttrsType, + BaseC, + BaseType, + ChoiceType, + ExtendedType, + OptionalChoiceType, + TypeA, + TypeB, + TypeC, + TypeD, + UnionType, +) from xsdata.exceptions import ParserError -from xsdata.formats.dataclass.models.generics import AnyElement -from xsdata.formats.dataclass.models.generics import DerivedElement +from xsdata.formats.dataclass.models.generics import AnyElement, DerivedElement from xsdata.formats.dataclass.parsers.json import JsonParser from xsdata.formats.dataclass.serializers import JsonSerializer from xsdata.models.datatype import XmlDate diff --git a/tests/formats/dataclass/parsers/test_mixins.py b/tests/formats/dataclass/parsers/test_mixins.py index a8ff47aa2..be0e52227 100644 --- a/tests/formats/dataclass/parsers/test_mixins.py +++ b/tests/formats/dataclass/parsers/test_mixins.py @@ -1,12 +1,10 @@ from unittest.case import TestCase from tests.fixtures.books import Books -from tests.fixtures.books.fixtures import books -from tests.fixtures.books.fixtures import events +from tests.fixtures.books.fixtures import books, events from xsdata.exceptions import XmlHandlerError from xsdata.formats.dataclass.parsers.bases import RecordParser -from xsdata.formats.dataclass.parsers.mixins import EventsHandler -from xsdata.formats.dataclass.parsers.mixins import XmlHandler +from xsdata.formats.dataclass.parsers.mixins import EventsHandler, XmlHandler class XmlHandlerTests(TestCase): diff --git a/tests/formats/dataclass/parsers/test_node.py b/tests/formats/dataclass/parsers/test_node.py index cd06a8721..f72d8110e 100644 --- a/tests/formats/dataclass/parsers/test_node.py +++ b/tests/formats/dataclass/parsers/test_node.py @@ -3,8 +3,7 @@ from unittest import mock from unittest.case import TestCase -from tests.fixtures.books import BookForm -from tests.fixtures.books import Books +from tests.fixtures.books import BookForm, Books from tests.fixtures.models import TypeA from xsdata.exceptions import ParserError from xsdata.formats.dataclass.models.elements import XmlType @@ -14,8 +13,7 @@ from xsdata.formats.dataclass.parsers.mixins import XmlHandler from xsdata.formats.dataclass.parsers.nodes.primitive import PrimitiveNode from xsdata.formats.dataclass.parsers.nodes.skip import SkipNode -from xsdata.models.enums import Namespace -from xsdata.models.enums import QNames +from xsdata.models.enums import Namespace, QNames from xsdata.utils.testing import XmlVarFactory diff --git a/tests/formats/dataclass/parsers/test_utils.py b/tests/formats/dataclass/parsers/test_utils.py index bff75f0b5..46f81842c 100644 --- a/tests/formats/dataclass/parsers/test_utils.py +++ b/tests/formats/dataclass/parsers/test_utils.py @@ -3,8 +3,7 @@ from xsdata.formats.converter import ConverterFactory from xsdata.formats.dataclass.context import XmlContext from xsdata.formats.dataclass.parsers.utils import ParserUtils -from xsdata.models.enums import Namespace -from xsdata.models.enums import QNames +from xsdata.models.enums import Namespace, QNames from xsdata.utils.testing import FactoryTestCase @@ -54,7 +53,7 @@ def test_parse_value_with_tokens_true(self): @mock.patch.object(ConverterFactory, "deserialize", return_value=2) def test_parse_value_with_ns_map(self, mock_to_python): - ns_map = dict(a=1) + ns_map = {"a": 1} ParserUtils.parse_value(" 1 2 3", [int], list, ns_map, list) ParserUtils.parse_value(" 1 2 3", [str], None, ns_map) diff --git a/tests/formats/dataclass/parsers/test_xml.py b/tests/formats/dataclass/parsers/test_xml.py index defc039f7..abf1f0a3c 100644 --- a/tests/formats/dataclass/parsers/test_xml.py +++ b/tests/formats/dataclass/parsers/test_xml.py @@ -2,12 +2,10 @@ from tests.fixtures.books import Books from xsdata.formats.dataclass.models.elements import XmlType -from xsdata.formats.dataclass.parsers.nodes import PrimitiveNode -from xsdata.formats.dataclass.parsers.nodes import SkipNode +from xsdata.formats.dataclass.parsers.nodes import PrimitiveNode, SkipNode from xsdata.formats.dataclass.parsers.xml import UserXmlParser from xsdata.models.enums import EventType -from xsdata.utils.testing import FactoryTestCase -from xsdata.utils.testing import XmlVarFactory +from xsdata.utils.testing import FactoryTestCase, XmlVarFactory class UserXmlParserTests(FactoryTestCase): diff --git a/tests/formats/dataclass/serializers/test_code.py b/tests/formats/dataclass/serializers/test_code.py index 5e25a4478..96f14be2b 100644 --- a/tests/formats/dataclass/serializers/test_code.py +++ b/tests/formats/dataclass/serializers/test_code.py @@ -1,7 +1,6 @@ from unittest import TestCase -from tests.fixtures.books import BookForm -from tests.fixtures.books import Books +from tests.fixtures.books import BookForm, Books from tests.fixtures.books.fixtures import books from tests.fixtures.models import Parent from xsdata.formats.dataclass.serializers import PycodeSerializer diff --git a/tests/formats/dataclass/serializers/test_json.py b/tests/formats/dataclass/serializers/test_json.py index 989d236ab..51757944d 100644 --- a/tests/formats/dataclass/serializers/test_json.py +++ b/tests/formats/dataclass/serializers/test_json.py @@ -1,16 +1,12 @@ import json import warnings from unittest.case import TestCase -from unittest.mock import ANY -from unittest.mock import call -from unittest.mock import Mock +from unittest.mock import ANY, Mock, call -from tests.fixtures.books import BookForm -from tests.fixtures.books import Books +from tests.fixtures.books import BookForm, Books from tests.fixtures.datatypes import Telephone from xsdata.exceptions import XmlContextError -from xsdata.formats.dataclass.serializers.json import DictFactory -from xsdata.formats.dataclass.serializers.json import JsonSerializer +from xsdata.formats.dataclass.serializers.json import DictFactory, JsonSerializer from xsdata.models.datatype import XmlDate from xsdata.models.xsd import Attribute from xsdata.utils.testing import XmlVarFactory diff --git a/tests/formats/dataclass/serializers/test_mixins.py b/tests/formats/dataclass/serializers/test_mixins.py index f18154e11..43f47936d 100644 --- a/tests/formats/dataclass/serializers/test_mixins.py +++ b/tests/formats/dataclass/serializers/test_mixins.py @@ -1,15 +1,12 @@ from io import StringIO -from typing import Dict -from typing import TextIO +from typing import Dict, TextIO from unittest import TestCase from xml.sax.saxutils import XMLGenerator from xsdata.exceptions import XmlWriterError from xsdata.formats.dataclass.serializers.config import SerializerConfig -from xsdata.formats.dataclass.serializers.mixins import XmlWriter -from xsdata.formats.dataclass.serializers.mixins import XmlWriterEvent -from xsdata.models.enums import DataType -from xsdata.models.enums import QNames +from xsdata.formats.dataclass.serializers.mixins import XmlWriter, XmlWriterEvent +from xsdata.models.enums import DataType, QNames class XmlWriterImpl(XmlWriter): diff --git a/tests/formats/dataclass/serializers/test_xml.py b/tests/formats/dataclass/serializers/test_xml.py index ee0146ce1..4bd1a3772 100644 --- a/tests/formats/dataclass/serializers/test_xml.py +++ b/tests/formats/dataclass/serializers/test_xml.py @@ -1,27 +1,18 @@ import re -from dataclasses import dataclass -from dataclasses import field -from dataclasses import make_dataclass -from typing import Generator -from typing import List +from dataclasses import dataclass, field, make_dataclass +from typing import Generator, List from unittest import TestCase from xml.etree.ElementTree import QName from tests.fixtures.books import BookForm from tests.fixtures.datatypes import Telephone -from tests.fixtures.models import Paragraph -from tests.fixtures.models import SequentialType -from tests.fixtures.models import Span -from tests.fixtures.models import TypeA -from xsdata.exceptions import SerializerError -from xsdata.exceptions import XmlContextError +from tests.fixtures.models import Paragraph, SequentialType, Span, TypeA +from xsdata.exceptions import SerializerError, XmlContextError from xsdata.formats.dataclass.models.elements import XmlType -from xsdata.formats.dataclass.models.generics import AnyElement -from xsdata.formats.dataclass.models.generics import DerivedElement +from xsdata.formats.dataclass.models.generics import AnyElement, DerivedElement from xsdata.formats.dataclass.serializers import XmlSerializer from xsdata.formats.dataclass.serializers.mixins import XmlWriterEvent -from xsdata.models.enums import DataType -from xsdata.models.enums import QNames +from xsdata.models.enums import DataType, QNames from xsdata.utils.testing import XmlVarFactory diff --git a/tests/formats/dataclass/test_client.py b/tests/formats/dataclass/test_client.py index 045b2fa40..80771d4a6 100644 --- a/tests/formats/dataclass/test_client.py +++ b/tests/formats/dataclass/test_client.py @@ -1,15 +1,14 @@ -from unittest import mock -from unittest import TestCase - -from tests.fixtures.calculator import Add -from tests.fixtures.calculator import CalculatorSoapAdd -from tests.fixtures.calculator import CalculatorSoapAddInput -from tests.fixtures.calculator import CalculatorSoapAddOutput +from unittest import TestCase, mock + +from tests.fixtures.calculator import ( + Add, + CalculatorSoapAdd, + CalculatorSoapAddInput, + CalculatorSoapAddOutput, +) from tests.fixtures.hello import HelloGetHelloAsString from xsdata.exceptions import ClientValueError -from xsdata.formats.dataclass.client import Client -from xsdata.formats.dataclass.client import Config -from xsdata.formats.dataclass.client import TransportTypes +from xsdata.formats.dataclass.client import Client, Config, TransportTypes from xsdata.formats.dataclass.transports import DefaultTransport response = """ diff --git a/tests/formats/dataclass/test_compat.py b/tests/formats/dataclass/test_compat.py index a6138146b..17ce6ca42 100644 --- a/tests/formats/dataclass/test_compat.py +++ b/tests/formats/dataclass/test_compat.py @@ -1,7 +1,6 @@ from unittest import TestCase -from tests.fixtures.models import TypeA -from tests.fixtures.models import TypeC +from tests.fixtures.models import TypeA, TypeC from xsdata.exceptions import XmlContextError from xsdata.formats.dataclass.compat import Dataclasses diff --git a/tests/formats/dataclass/test_context.py b/tests/formats/dataclass/test_context.py index 0d22f0c3d..1cb73c29b 100644 --- a/tests/formats/dataclass/test_context.py +++ b/tests/formats/dataclass/test_context.py @@ -3,17 +3,12 @@ from pathlib import Path from unittest import mock -from tests.fixtures.artists import Artist -from tests.fixtures.artists import BeginArea -from tests.fixtures.books import BookForm -from tests.fixtures.books import BooksForm -from tests.fixtures.models import BaseType -from tests.fixtures.models import ChoiceType -from tests.fixtures.models import UnionType +from tests.fixtures.artists import Artist, BeginArea +from tests.fixtures.books import BookForm, BooksForm +from tests.fixtures.models import BaseType, ChoiceType, UnionType from xsdata.formats.dataclass.context import XmlContext from xsdata.models.enums import DataType -from xsdata.utils.testing import FactoryTestCase -from xsdata.utils.testing import XmlMetaFactory +from xsdata.utils.testing import FactoryTestCase, XmlMetaFactory class XmlContextTests(FactoryTestCase): @@ -100,7 +95,7 @@ def test_find_subclass(self): a = make_dataclass("A", fields=[]) b = make_dataclass("B", fields=[], bases=(a,)) c = make_dataclass("C", fields=[], bases=(a,)) - other = make_dataclass("Other", fields=[]) # Included in the locals + make_dataclass("Other", fields=[]) # Included in the locals self.assertEqual(b, self.ctx.find_subclass(a, "B")) self.assertEqual(b, self.ctx.find_subclass(c, "B")) diff --git a/tests/formats/dataclass/test_elements.py b/tests/formats/dataclass/test_elements.py index 4441a4996..6899d10cc 100644 --- a/tests/formats/dataclass/test_elements.py +++ b/tests/formats/dataclass/test_elements.py @@ -3,20 +3,20 @@ from unittest.case import TestCase from xml.etree.ElementTree import QName -from tests.fixtures.models import ChoiceType -from tests.fixtures.models import ExtendedType -from tests.fixtures.models import Paragraph -from tests.fixtures.models import TypeA -from tests.fixtures.models import TypeB -from tests.fixtures.models import TypeC -from tests.fixtures.models import TypeD -from tests.fixtures.models import TypeDuplicate -from tests.fixtures.models import UnionType +from tests.fixtures.models import ( + ChoiceType, + ExtendedType, + Paragraph, + TypeA, + TypeB, + TypeC, + TypeD, + TypeDuplicate, + UnionType, +) from xsdata.formats.dataclass.context import XmlContext -from xsdata.formats.dataclass.models.elements import XmlType -from xsdata.formats.dataclass.models.elements import XmlVar -from xsdata.utils.testing import XmlMetaFactory -from xsdata.utils.testing import XmlVarFactory +from xsdata.formats.dataclass.models.elements import XmlType, XmlVar +from xsdata.utils.testing import XmlMetaFactory, XmlVarFactory class XmlValTests(TestCase): @@ -241,7 +241,7 @@ def test_find_any_wildcard(self): def test_find_children(self): meta = self.context.build(TypeDuplicate) self.assertIsNone(next(meta.find_children("a"), None)) - self.assertEqual(["x", "x1"], list(el.name for el in meta.find_children("x"))) + self.assertEqual(["x", "x1"], [el.name for el in meta.find_children("x")]) meta = self.context.build(TypeB) self.assertEqual("x", next(meta.find_children("x")).qname) diff --git a/tests/formats/dataclass/test_filters.py b/tests/formats/dataclass/test_filters.py index 09dbb9d5a..08b539e7f 100644 --- a/tests/formats/dataclass/test_filters.py +++ b/tests/formats/dataclass/test_filters.py @@ -4,21 +4,23 @@ from tests.fixtures.datatypes import Telephone from xsdata.codegen.models import Restrictions from xsdata.formats.dataclass.filters import Filters -from xsdata.models.config import DocstringStyle -from xsdata.models.config import ExtensionType -from xsdata.models.config import GeneratorConfig -from xsdata.models.config import GeneratorExtension -from xsdata.models.config import GeneratorSubstitution -from xsdata.models.config import NameCase -from xsdata.models.config import ObjectType -from xsdata.models.enums import DataType -from xsdata.models.enums import Namespace -from xsdata.models.enums import Tag -from xsdata.utils.testing import AttrFactory -from xsdata.utils.testing import AttrTypeFactory -from xsdata.utils.testing import ClassFactory -from xsdata.utils.testing import ExtensionFactory -from xsdata.utils.testing import FactoryTestCase +from xsdata.models.config import ( + DocstringStyle, + ExtensionType, + GeneratorConfig, + GeneratorExtension, + GeneratorSubstitution, + NameCase, + ObjectType, +) +from xsdata.models.enums import DataType, Namespace, Tag +from xsdata.utils.testing import ( + AttrFactory, + AttrTypeFactory, + ClassFactory, + ExtensionFactory, + FactoryTestCase, +) type_str = AttrTypeFactory.native(DataType.STRING) type_int = AttrTypeFactory.native(DataType.INT) @@ -386,7 +388,7 @@ def test_field_default_value_with_type_enum(self): self.assertEqual(expected, self.filters.field_default_value(attr)) attr.types[0].qname = "nomatch" # impossible - with self.assertRaises(Exception): + with self.assertRaises(StopIteration): self.filters.field_default_value(attr) def test_field_default_value_with_type_qname(self): @@ -909,21 +911,21 @@ def test_default_imports_ordering(self): self.assertEqual(expected, self.filters.default_imports("@dataclass @attrs.s")) def test_format_metadata(self): - data = dict( - num=1, - text="foo", - text_two="fo'o", - text_three='fo"o', - pattern="foo", - custom=Telephone(30, 123, 4567), - level_two=dict(a=1), - list=[ - dict(type="Type[object]"), - dict(type="Type[object] mpla"), + data = { + "num": 1, + "text": "foo", + "text_two": "fo'o", + "text_three": 'fo"o', + "pattern": "foo", + "custom": Telephone(30, 123, 4567), + "level_two": {"a": 1}, + "list": [ + {"type": "Type[object]"}, + {"type": "Type[object] mpla"}, ], - default="1", - default_factory="list", - ) + "default": "1", + "default_factory": "list", + } expected = ( "{\n" diff --git a/tests/formats/dataclass/test_generator.py b/tests/formats/dataclass/test_generator.py index 7f9cdfee7..ffcfe4c54 100644 --- a/tests/formats/dataclass/test_generator.py +++ b/tests/formats/dataclass/test_generator.py @@ -5,8 +5,7 @@ from xsdata.codegen.resolver import DependenciesResolver from xsdata.formats.dataclass.generator import DataclassGenerator from xsdata.models.config import GeneratorConfig -from xsdata.utils.testing import ClassFactory -from xsdata.utils.testing import FactoryTestCase +from xsdata.utils.testing import ClassFactory, FactoryTestCase class DataclassGeneratorTests(FactoryTestCase): diff --git a/tests/formats/dataclass/test_transport.py b/tests/formats/dataclass/test_transport.py index a7073a85b..8f2057852 100644 --- a/tests/formats/dataclass/test_transport.py +++ b/tests/formats/dataclass/test_transport.py @@ -1,9 +1,6 @@ -from unittest import mock -from unittest import TestCase +from unittest import TestCase, mock -from requests import HTTPError -from requests import Response -from requests import Session +from requests import HTTPError, Response, Session from xsdata.formats.dataclass.transports import DefaultTransport diff --git a/tests/formats/dataclass/test_typing.py b/tests/formats/dataclass/test_typing.py index ec5c72b5e..1c9a77257 100644 --- a/tests/formats/dataclass/test_typing.py +++ b/tests/formats/dataclass/test_typing.py @@ -2,27 +2,13 @@ import sys from decimal import Decimal from enum import Enum -from typing import Any -from typing import Dict -from typing import List -from typing import Optional -from typing import Set -from typing import Tuple -from typing import Type -from typing import TypeVar -from typing import Union +from typing import Any, Dict, List, Optional, Set, Tuple, Type, TypeVar, Union from unittest import TestCase from xml.etree.ElementTree import QName from xsdata.formats.bindings import T from xsdata.formats.dataclass.typing import evaluate -from xsdata.formats.dataclass.typing import get_args -from xsdata.formats.dataclass.typing import get_origin -from xsdata.models.datatype import XmlDate -from xsdata.models.datatype import XmlDateTime -from xsdata.models.datatype import XmlDuration -from xsdata.models.datatype import XmlPeriod -from xsdata.models.datatype import XmlTime +from xsdata.models.datatype import XmlDate, XmlDateTime, XmlDuration, XmlPeriod, XmlTime from xsdata.models.enums import Namespace diff --git a/tests/formats/test_converter.py b/tests/formats/test_converter.py index dea0046e9..edd126ed1 100644 --- a/tests/formats/test_converter.py +++ b/tests/formats/test_converter.py @@ -1,8 +1,6 @@ import sys import warnings -from datetime import date -from datetime import datetime -from datetime import time +from datetime import date, datetime, time from decimal import Decimal from enum import Enum from typing import Any @@ -13,11 +11,8 @@ from tests.fixtures.datatypes import Telephone from xsdata.exceptions import ConverterError -from xsdata.formats.converter import Converter -from xsdata.formats.converter import converter -from xsdata.formats.converter import ProxyConverter -from xsdata.models.datatype import XmlDuration -from xsdata.models.datatype import XmlPeriod +from xsdata.formats.converter import Converter, ProxyConverter, converter +from xsdata.models.datatype import XmlDuration, XmlPeriod from xsdata.models.enums import UseType diff --git a/tests/formats/test_mixins.py b/tests/formats/test_mixins.py index d37ad9c6c..212eb9834 100644 --- a/tests/formats/test_mixins.py +++ b/tests/formats/test_mixins.py @@ -1,16 +1,13 @@ import datetime -from typing import Iterator -from typing import List +from typing import Iterator, List from unittest import mock from xsdata import __version__ from xsdata.codegen.models import Class from xsdata.exceptions import CodeGenerationError -from xsdata.formats.mixins import AbstractGenerator -from xsdata.formats.mixins import GeneratorResult +from xsdata.formats.mixins import AbstractGenerator, GeneratorResult from xsdata.models.config import GeneratorConfig -from xsdata.utils.testing import ClassFactory -from xsdata.utils.testing import FactoryTestCase +from xsdata.utils.testing import ClassFactory, FactoryTestCase class NoneGenerator(AbstractGenerator): diff --git a/tests/integration/benchmarks/test_converters.py b/tests/integration/benchmarks/test_converters.py index 93734a105..0bce6cc12 100644 --- a/tests/integration/benchmarks/test_converters.py +++ b/tests/integration/benchmarks/test_converters.py @@ -1,9 +1,6 @@ import pytest -from xsdata.models.datatype import XmlDate -from xsdata.models.datatype import XmlDateTime -from xsdata.models.datatype import XmlDuration -from xsdata.models.datatype import XmlTime +from xsdata.models.datatype import XmlDate, XmlDateTime, XmlDuration, XmlTime @pytest.mark.benchmark(disable_gc=True, group="converters", min_rounds=100000) diff --git a/tests/integration/benchmarks/test_handlers.py b/tests/integration/benchmarks/test_handlers.py index d1935c601..ea6dd1927 100644 --- a/tests/integration/benchmarks/test_handlers.py +++ b/tests/integration/benchmarks/test_handlers.py @@ -3,9 +3,7 @@ import pytest from tests import xsdata_temp_dir -from tests.integration.benchmarks.utils import make_books -from tests.integration.benchmarks.utils import parse -from tests.integration.benchmarks.utils import write +from tests.integration.benchmarks.utils import make_books, parse, write from xsdata.formats.dataclass.context import XmlContext from xsdata.formats.dataclass.parsers import handlers as readers from xsdata.formats.dataclass.serializers import writers diff --git a/tests/integration/benchmarks/utils.py b/tests/integration/benchmarks/utils.py index 12c66f7eb..5ce8c5518 100644 --- a/tests/integration/benchmarks/utils.py +++ b/tests/integration/benchmarks/utils.py @@ -1,11 +1,7 @@ -from tests.fixtures.books import BookForm -from tests.fixtures.books import Books -from tests.integration.benchmarks.conftest import context -from tests.integration.benchmarks.conftest import xsdata_temp_dir -from xsdata.formats.dataclass.parsers import JsonParser -from xsdata.formats.dataclass.parsers import XmlParser -from xsdata.formats.dataclass.serializers import JsonSerializer -from xsdata.formats.dataclass.serializers import XmlSerializer +from tests.fixtures.books import BookForm, Books +from tests.integration.benchmarks.conftest import context, xsdata_temp_dir +from xsdata.formats.dataclass.parsers import JsonParser, XmlParser +from xsdata.formats.dataclass.serializers import JsonSerializer, XmlSerializer from xsdata.models.datatype import XmlDate diff --git a/tests/integration/test_annotations.py b/tests/integration/test_annotations.py index 86ffea4c3..ac9de5a12 100644 --- a/tests/integration/test_annotations.py +++ b/tests/integration/test_annotations.py @@ -3,8 +3,7 @@ import pytest from click.testing import CliRunner -from tests import fixtures_dir -from tests import root +from tests import fixtures_dir, root from xsdata.cli import cli from xsdata.formats.dataclass.context import XmlContext from xsdata.formats.dataclass.parsers.xml import XmlParser diff --git a/tests/integration/test_artists.py b/tests/integration/test_artists.py index 57c57cb21..6b18d70f6 100644 --- a/tests/integration/test_artists.py +++ b/tests/integration/test_artists.py @@ -2,8 +2,7 @@ from click.testing import CliRunner -from tests import fixtures_dir -from tests import root +from tests import fixtures_dir, root from xsdata.cli import cli from xsdata.formats.dataclass.parsers import XmlParser from xsdata.formats.dataclass.serializers import XmlSerializer diff --git a/tests/integration/test_books.py b/tests/integration/test_books.py index 1b9b2d0cb..fe4db19cd 100644 --- a/tests/integration/test_books.py +++ b/tests/integration/test_books.py @@ -2,8 +2,7 @@ from click.testing import CliRunner -from tests import fixtures_dir -from tests import root +from tests import fixtures_dir, root from xsdata.cli import cli from xsdata.utils.testing import load_class @@ -30,5 +29,5 @@ def test_books_schema(): raise result.exception clazz = load_class(result.output, "Books") - assert "books" == clazz.Meta.name - assert "urn:books" == clazz.Meta.namespace + assert clazz.Meta.name == "books" + assert clazz.Meta.namespace == "urn:books" diff --git a/tests/integration/test_calculator.py b/tests/integration/test_calculator.py index 78f8d91f4..c4625cdab 100644 --- a/tests/integration/test_calculator.py +++ b/tests/integration/test_calculator.py @@ -1,16 +1,12 @@ import os -from unittest import mock -from unittest import TestCase +from unittest import TestCase, mock from click.testing import CliRunner -from tests import fixtures_dir -from tests import root -from tests.fixtures.calculator import CalculatorSoapAdd -from tests.fixtures.calculator import CalculatorSoapAddOutput +from tests import fixtures_dir, root +from tests.fixtures.calculator import CalculatorSoapAdd, CalculatorSoapAddOutput from xsdata.cli import cli -from xsdata.formats.dataclass.client import Client -from xsdata.formats.dataclass.client import Config +from xsdata.formats.dataclass.client import Client, Config from xsdata.formats.dataclass.serializers import XmlSerializer from xsdata.formats.dataclass.serializers.config import SerializerConfig from xsdata.formats.dataclass.transports import DefaultTransport diff --git a/tests/integration/test_compound.py b/tests/integration/test_compound.py index 7fececd59..c84c12df4 100644 --- a/tests/integration/test_compound.py +++ b/tests/integration/test_compound.py @@ -2,8 +2,7 @@ from click.testing import CliRunner -from tests import fixtures_dir -from tests import root +from tests import fixtures_dir, root from tests.conftest import validate_bindings from xsdata.cli import cli from xsdata.utils.testing import load_class diff --git a/tests/integration/test_docstrings.py b/tests/integration/test_docstrings.py index 92b0a2959..521c7f5b2 100644 --- a/tests/integration/test_docstrings.py +++ b/tests/integration/test_docstrings.py @@ -2,8 +2,7 @@ from click.testing import CliRunner -from tests import fixtures_dir -from tests import root +from tests import fixtures_dir, root from xsdata.cli import cli os.chdir(root) diff --git a/tests/integration/test_dtd.py b/tests/integration/test_dtd.py index 6cef82092..088c18fb9 100644 --- a/tests/integration/test_dtd.py +++ b/tests/integration/test_dtd.py @@ -2,8 +2,7 @@ from click.testing import CliRunner -from tests import fixtures_dir -from tests import root +from tests import fixtures_dir, root from xsdata.cli import cli from xsdata.utils.testing import load_class diff --git a/tests/integration/test_hello_rpc.py b/tests/integration/test_hello_rpc.py index c3a55f496..db525ad33 100644 --- a/tests/integration/test_hello_rpc.py +++ b/tests/integration/test_hello_rpc.py @@ -1,19 +1,18 @@ import os -from unittest import mock -from unittest import TestCase +from unittest import TestCase, mock import pytest from click.testing import CliRunner -from tests import fixtures_dir -from tests import root -from tests.fixtures.hello import GetHelloAsStringResponse -from tests.fixtures.hello import HelloError -from tests.fixtures.hello import HelloGetHelloAsString -from tests.fixtures.hello import HelloGetHelloAsStringOutput +from tests import fixtures_dir, root +from tests.fixtures.hello import ( + GetHelloAsStringResponse, + HelloError, + HelloGetHelloAsString, + HelloGetHelloAsStringOutput, +) from xsdata.cli import cli -from xsdata.formats.dataclass.client import Client -from xsdata.formats.dataclass.client import Config +from xsdata.formats.dataclass.client import Client, Config from xsdata.formats.dataclass.serializers import XmlSerializer from xsdata.formats.dataclass.serializers.config import SerializerConfig from xsdata.formats.dataclass.transports import DefaultTransport diff --git a/tests/integration/test_primer.py b/tests/integration/test_primer.py index 52937a830..77f78d346 100644 --- a/tests/integration/test_primer.py +++ b/tests/integration/test_primer.py @@ -2,8 +2,7 @@ from click.testing import CliRunner -from tests import fixtures_dir -from tests import root +from tests import fixtures_dir, root from tests.conftest import validate_bindings from xsdata.cli import cli from xsdata.utils.testing import load_class @@ -23,6 +22,6 @@ def test_primer_schema(): raise result.exception clazz = load_class(result.output, "PurchaseOrder") - assert "purchaseOrder" == clazz.Meta.name + assert clazz.Meta.name == "purchaseOrder" validate_bindings(schema, clazz) diff --git a/tests/integration/test_series.py b/tests/integration/test_series.py index db5755689..7d6ac8d48 100644 --- a/tests/integration/test_series.py +++ b/tests/integration/test_series.py @@ -3,8 +3,7 @@ from click.testing import CliRunner -from tests import fixtures_dir -from tests import root +from tests import fixtures_dir, root from xsdata.cli import cli from xsdata.formats.dataclass.parsers import JsonParser from xsdata.formats.dataclass.serializers import JsonSerializer diff --git a/tests/integration/test_stripe.py b/tests/integration/test_stripe.py index 04aeb3de0..4fcfd227a 100644 --- a/tests/integration/test_stripe.py +++ b/tests/integration/test_stripe.py @@ -3,8 +3,7 @@ from click.testing import CliRunner -from tests import fixtures_dir -from tests import root +from tests import fixtures_dir, root from xsdata.cli import cli from xsdata.formats.dataclass.parsers import JsonParser from xsdata.formats.dataclass.serializers import JsonSerializer diff --git a/tests/models/enums/test_datatype.py b/tests/models/enums/test_datatype.py index 0b3ed68c6..f57a3a330 100644 --- a/tests/models/enums/test_datatype.py +++ b/tests/models/enums/test_datatype.py @@ -2,10 +2,7 @@ from unittest import TestCase from xml.etree.ElementTree import QName -from xsdata.models.datatype import XmlDate -from xsdata.models.datatype import XmlDateTime -from xsdata.models.datatype import XmlPeriod -from xsdata.models.datatype import XmlTime +from xsdata.models.datatype import XmlDate, XmlDateTime, XmlPeriod, XmlTime from xsdata.models.enums import DataType diff --git a/tests/models/test_config.py b/tests/models/test_config.py index c84dcc6ff..33cc0ce14 100644 --- a/tests/models/test_config.py +++ b/tests/models/test_config.py @@ -5,16 +5,17 @@ from unittest import TestCase from xsdata import __version__ -from xsdata.exceptions import GeneratorConfigError -from xsdata.exceptions import ParserError -from xsdata.models.config import ExtensionType -from xsdata.models.config import GeneratorAlias -from xsdata.models.config import GeneratorAliases -from xsdata.models.config import GeneratorConfig -from xsdata.models.config import GeneratorExtension -from xsdata.models.config import GeneratorOutput -from xsdata.models.config import ObjectType -from xsdata.models.config import OutputFormat +from xsdata.exceptions import GeneratorConfigError, ParserError +from xsdata.models.config import ( + ExtensionType, + GeneratorAlias, + GeneratorAliases, + GeneratorConfig, + GeneratorExtension, + GeneratorOutput, + ObjectType, + OutputFormat, +) class GeneratorConfigTests(TestCase): @@ -122,7 +123,7 @@ def test_read(self): def test_read_with_wrong_value(self): existing = ( '\n' - f'\n' + '\n' ' \n' " unknown\n" " \n" @@ -243,4 +244,4 @@ def test_extension_with_invalid_class_name_pattern(self): type=ExtensionType.DECORATOR, import_string="a.b", class_name="*Foo" ) - self.assertEqual(f"Failed to compile pattern '*Foo'", str(cm.exception)) + self.assertEqual("Failed to compile pattern '*Foo'", str(cm.exception)) diff --git a/tests/models/test_datatype.py b/tests/models/test_datatype.py index f0bae2089..e10d24587 100644 --- a/tests/models/test_datatype.py +++ b/tests/models/test_datatype.py @@ -1,16 +1,8 @@ -from datetime import date -from datetime import datetime -from datetime import time -from datetime import timedelta -from datetime import timezone +from datetime import date, datetime, time, timedelta, timezone from typing import Dict from unittest import TestCase -from xsdata.models.datatype import XmlDate -from xsdata.models.datatype import XmlDateTime -from xsdata.models.datatype import XmlDuration -from xsdata.models.datatype import XmlPeriod -from xsdata.models.datatype import XmlTime +from xsdata.models.datatype import XmlDate, XmlDateTime, XmlDuration, XmlPeriod, XmlTime def filter_none(mapping: Dict) -> Dict: diff --git a/tests/models/test_mixins.py b/tests/models/test_mixins.py index b2a9f5ec4..71bb9792b 100644 --- a/tests/models/test_mixins.py +++ b/tests/models/test_mixins.py @@ -1,15 +1,10 @@ -from typing import Generator -from typing import Iterator +from typing import Generator, Iterator from unittest import TestCase from xsdata.exceptions import SchemaValueError -from xsdata.models.enums import FormType -from xsdata.models.enums import Namespace +from xsdata.models.enums import FormType, Namespace from xsdata.models.mixins import ElementBase -from xsdata.models.xsd import Alternative -from xsdata.models.xsd import ComplexType -from xsdata.models.xsd import Element -from xsdata.models.xsd import SimpleType +from xsdata.models.xsd import Alternative, ComplexType, Element, SimpleType class ElementBaseTests(TestCase): diff --git a/tests/models/test_type_mapping.py b/tests/models/test_type_mapping.py index f89571699..5ccf8a580 100644 --- a/tests/models/test_type_mapping.py +++ b/tests/models/test_type_mapping.py @@ -3,9 +3,11 @@ from tests.models.typemapping.city import City from tests.models.typemapping.house import House from tests.models.typemapping.street import Street -from xsdata.formats.dataclass.serializers import JsonSerializer -from xsdata.formats.dataclass.serializers import PycodeSerializer -from xsdata.formats.dataclass.serializers import XmlSerializer +from xsdata.formats.dataclass.serializers import ( + JsonSerializer, + PycodeSerializer, + XmlSerializer, +) from xsdata.formats.dataclass.serializers.config import SerializerConfig diff --git a/tests/models/typemapping/city.py b/tests/models/typemapping/city.py index 4c2ab3258..5b69c19bc 100644 --- a/tests/models/typemapping/city.py +++ b/tests/models/typemapping/city.py @@ -1,7 +1,5 @@ -from dataclasses import dataclass -from dataclasses import field -from typing import List -from typing import TYPE_CHECKING +from dataclasses import dataclass, field +from typing import TYPE_CHECKING, List if TYPE_CHECKING: from tests.models.typemapping.street import Street diff --git a/tests/models/typemapping/house.py b/tests/models/typemapping/house.py index 4574415e8..4971b33b7 100644 --- a/tests/models/typemapping/house.py +++ b/tests/models/typemapping/house.py @@ -1,6 +1,5 @@ from dataclasses import dataclass -from typing import Optional -from typing import TYPE_CHECKING +from typing import TYPE_CHECKING, Optional if TYPE_CHECKING: from tests.models.typemapping.street import Street diff --git a/tests/models/typemapping/street.py b/tests/models/typemapping/street.py index 11778f51f..e7adb1b79 100644 --- a/tests/models/typemapping/street.py +++ b/tests/models/typemapping/street.py @@ -1,8 +1,5 @@ -from dataclasses import dataclass -from dataclasses import field -from typing import List -from typing import Optional -from typing import TYPE_CHECKING +from dataclasses import dataclass, field +from typing import TYPE_CHECKING, List, Optional if TYPE_CHECKING: from tests.models.typemapping.city import City diff --git a/tests/models/wsdl/test_binding.py b/tests/models/wsdl/test_binding.py index e71c578b3..05642d34f 100644 --- a/tests/models/wsdl/test_binding.py +++ b/tests/models/wsdl/test_binding.py @@ -1,7 +1,6 @@ from unittest import TestCase -from xsdata.models.wsdl import Binding -from xsdata.models.wsdl import BindingOperation +from xsdata.models.wsdl import Binding, BindingOperation class BindingTests(TestCase): diff --git a/tests/models/wsdl/test_definitions.py b/tests/models/wsdl/test_definitions.py index 4e34685df..038a3e950 100644 --- a/tests/models/wsdl/test_definitions.py +++ b/tests/models/wsdl/test_definitions.py @@ -4,12 +4,7 @@ from xsdata.exceptions import DefinitionsValueError from xsdata.formats.dataclass.models.generics import AnyElement -from xsdata.models.wsdl import Binding -from xsdata.models.wsdl import Definitions -from xsdata.models.wsdl import Message -from xsdata.models.wsdl import PortType -from xsdata.models.wsdl import Service -from xsdata.models.wsdl import Types +from xsdata.models.wsdl import Binding, Definitions, Message, PortType, Service, Types from xsdata.models.xsd import Schema diff --git a/tests/models/wsdl/test_port_type.py b/tests/models/wsdl/test_port_type.py index e6c849bcf..f7236df3a 100644 --- a/tests/models/wsdl/test_port_type.py +++ b/tests/models/wsdl/test_port_type.py @@ -1,8 +1,7 @@ from unittest import TestCase from xsdata.exceptions import DefinitionsValueError -from xsdata.models.wsdl import PortType -from xsdata.models.wsdl import PortTypeOperation +from xsdata.models.wsdl import PortType, PortTypeOperation class PortTypeTests(TestCase): diff --git a/tests/models/xsd/test_annotation_base.py b/tests/models/xsd/test_annotation_base.py index ae51f4066..222e41196 100644 --- a/tests/models/xsd/test_annotation_base.py +++ b/tests/models/xsd/test_annotation_base.py @@ -1,9 +1,7 @@ from unittest import TestCase from xsdata.formats.dataclass.models.generics import AnyElement -from xsdata.models.xsd import Annotation -from xsdata.models.xsd import AnnotationBase -from xsdata.models.xsd import Documentation +from xsdata.models.xsd import Annotation, AnnotationBase, Documentation class AnnotationBaseTest(TestCase): diff --git a/tests/models/xsd/test_any.py b/tests/models/xsd/test_any.py index 2d625526f..0d14c1ce8 100644 --- a/tests/models/xsd/test_any.py +++ b/tests/models/xsd/test_any.py @@ -1,7 +1,6 @@ from unittest import TestCase -from xsdata.models.enums import Namespace -from xsdata.models.enums import NamespaceType +from xsdata.models.enums import Namespace, NamespaceType from xsdata.models.xsd import Any diff --git a/tests/models/xsd/test_any_attribute.py b/tests/models/xsd/test_any_attribute.py index 541c0a70a..e681592e9 100644 --- a/tests/models/xsd/test_any_attribute.py +++ b/tests/models/xsd/test_any_attribute.py @@ -1,7 +1,6 @@ from unittest import TestCase -from xsdata.models.enums import Namespace -from xsdata.models.enums import NamespaceType +from xsdata.models.enums import Namespace, NamespaceType from xsdata.models.xsd import AnyAttribute diff --git a/tests/models/xsd/test_attribute.py b/tests/models/xsd/test_attribute.py index 9cbf1d507..bdf3deb48 100644 --- a/tests/models/xsd/test_attribute.py +++ b/tests/models/xsd/test_attribute.py @@ -1,12 +1,8 @@ from unittest import TestCase from xsdata.exceptions import SchemaValueError -from xsdata.models.enums import Namespace -from xsdata.models.enums import UseType -from xsdata.models.xsd import Attribute -from xsdata.models.xsd import Length -from xsdata.models.xsd import Restriction -from xsdata.models.xsd import SimpleType +from xsdata.models.enums import Namespace, UseType +from xsdata.models.xsd import Attribute, Length, Restriction, SimpleType class AttributeTests(TestCase): diff --git a/tests/models/xsd/test_complex_content.py b/tests/models/xsd/test_complex_content.py index 865925752..8b6a15b2f 100644 --- a/tests/models/xsd/test_complex_content.py +++ b/tests/models/xsd/test_complex_content.py @@ -1,7 +1,6 @@ from unittest import TestCase -from xsdata.models.xsd import ComplexContent -from xsdata.models.xsd import SimpleContent +from xsdata.models.xsd import ComplexContent, SimpleContent class ComplexContentTests(TestCase): diff --git a/tests/models/xsd/test_complex_type.py b/tests/models/xsd/test_complex_type.py index 919dabfe5..d3349d10c 100644 --- a/tests/models/xsd/test_complex_type.py +++ b/tests/models/xsd/test_complex_type.py @@ -1,7 +1,6 @@ from unittest import TestCase -from xsdata.models.xsd import ComplexContent -from xsdata.models.xsd import ComplexType +from xsdata.models.xsd import ComplexContent, ComplexType class ComplexTypeTests(TestCase): diff --git a/tests/models/xsd/test_element.py b/tests/models/xsd/test_element.py index 6baf4c1cd..e9d8313f1 100644 --- a/tests/models/xsd/test_element.py +++ b/tests/models/xsd/test_element.py @@ -2,12 +2,14 @@ from xsdata.exceptions import SchemaValueError from xsdata.models.enums import Namespace -from xsdata.models.xsd import Alternative -from xsdata.models.xsd import ComplexType -from xsdata.models.xsd import Element -from xsdata.models.xsd import Length -from xsdata.models.xsd import Restriction -from xsdata.models.xsd import SimpleType +from xsdata.models.xsd import ( + Alternative, + ComplexType, + Element, + Length, + Restriction, + SimpleType, +) class ElementTests(TestCase): diff --git a/tests/models/xsd/test_restriction.py b/tests/models/xsd/test_restriction.py index 3616c0318..8e8aeb23a 100644 --- a/tests/models/xsd/test_restriction.py +++ b/tests/models/xsd/test_restriction.py @@ -1,20 +1,22 @@ from typing import Iterator from unittest import TestCase -from xsdata.models.xsd import Enumeration -from xsdata.models.xsd import FractionDigits -from xsdata.models.xsd import Length -from xsdata.models.xsd import MaxExclusive -from xsdata.models.xsd import MaxInclusive -from xsdata.models.xsd import MaxLength -from xsdata.models.xsd import MinExclusive -from xsdata.models.xsd import MinInclusive -from xsdata.models.xsd import MinLength -from xsdata.models.xsd import Pattern -from xsdata.models.xsd import Restriction -from xsdata.models.xsd import SimpleType -from xsdata.models.xsd import TotalDigits -from xsdata.models.xsd import WhiteSpace +from xsdata.models.xsd import ( + Enumeration, + FractionDigits, + Length, + MaxExclusive, + MaxInclusive, + MaxLength, + MinExclusive, + MinInclusive, + MinLength, + Pattern, + Restriction, + SimpleType, + TotalDigits, + WhiteSpace, +) class RestrictionTests(TestCase): diff --git a/tests/models/xsd/test_schema.py b/tests/models/xsd/test_schema.py index ca9c8e4d3..f574cd26e 100644 --- a/tests/models/xsd/test_schema.py +++ b/tests/models/xsd/test_schema.py @@ -2,11 +2,7 @@ from unittest import TestCase from xsdata.models.enums import Namespace -from xsdata.models.xsd import Import -from xsdata.models.xsd import Include -from xsdata.models.xsd import Override -from xsdata.models.xsd import Redefine -from xsdata.models.xsd import Schema +from xsdata.models.xsd import Import, Include, Override, Redefine, Schema class SchemaTests(TestCase): diff --git a/tests/models/xsd/test_simple_type.py b/tests/models/xsd/test_simple_type.py index 424be2d2e..291fd57f0 100644 --- a/tests/models/xsd/test_simple_type.py +++ b/tests/models/xsd/test_simple_type.py @@ -1,11 +1,6 @@ from unittest import TestCase -from xsdata.models.xsd import Enumeration -from xsdata.models.xsd import Length -from xsdata.models.xsd import List -from xsdata.models.xsd import Restriction -from xsdata.models.xsd import SimpleType -from xsdata.models.xsd import Union +from xsdata.models.xsd import Enumeration, Length, List, Restriction, SimpleType, Union class SimpleTypeTests(TestCase): @@ -54,6 +49,6 @@ def test_get_restrictions(self): obj.list = List() self.assertEqual({"tokens": True}, obj.get_restrictions()) - expected = dict(length=2) + expected = {"length": 2} obj.restriction = Restriction(length=Length(value=2)) self.assertEqual(expected, obj.get_restrictions()) diff --git a/tests/models/xsd/test_union.py b/tests/models/xsd/test_union.py index 854058c66..fd036a590 100644 --- a/tests/models/xsd/test_union.py +++ b/tests/models/xsd/test_union.py @@ -1,13 +1,15 @@ from typing import Iterator from unittest import TestCase -from xsdata.models.xsd import MaxExclusive -from xsdata.models.xsd import MinExclusive -from xsdata.models.xsd import MinInclusive -from xsdata.models.xsd import MinLength -from xsdata.models.xsd import Restriction -from xsdata.models.xsd import SimpleType -from xsdata.models.xsd import Union +from xsdata.models.xsd import ( + MaxExclusive, + MinExclusive, + MinInclusive, + MinLength, + Restriction, + SimpleType, + Union, +) class UnionTests(TestCase): diff --git a/tests/test_cli.py b/tests/test_cli.py index e49cc871f..6fd02d5d6 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -3,21 +3,18 @@ import sys import tempfile from pathlib import Path -from unittest import mock -from unittest import TestCase +from unittest import TestCase, mock from click.testing import CliRunner from tests import fixtures_dir from xsdata import __version__ -from xsdata.cli import cli -from xsdata.cli import resolve_source +from xsdata.cli import cli, resolve_source from xsdata.codegen.transformer import SchemaTransformer from xsdata.codegen.writer import CodeWriter from xsdata.formats.dataclass.generator import DataclassGenerator from xsdata.logger import logger -from xsdata.models.config import GeneratorConfig -from xsdata.models.config import StructureStyle +from xsdata.models.config import GeneratorConfig, StructureStyle from xsdata.utils.downloader import Downloader CodeWriter.register_generator("testing", DataclassGenerator) diff --git a/tests/utils/test_collections.py b/tests/utils/test_collections.py index 5190abc2f..866a759b9 100644 --- a/tests/utils/test_collections.py +++ b/tests/utils/test_collections.py @@ -30,7 +30,7 @@ def test_is_array(self): self.assertFalse(collections.is_array(1)) self.assertFalse(collections.is_array(fixture(1, 2))) self.assertTrue(collections.is_array([])) - self.assertTrue(collections.is_array(tuple())) + self.assertTrue(collections.is_array(())) self.assertTrue(collections.is_array(frozenset())) def test_connected_components(self): diff --git a/tests/utils/test_dates.py b/tests/utils/test_dates.py index e596a2c77..9384ffcfb 100644 --- a/tests/utils/test_dates.py +++ b/tests/utils/test_dates.py @@ -1,8 +1,6 @@ from unittest import TestCase -from xsdata.utils.dates import parse_date_args -from xsdata.utils.dates import validate_date -from xsdata.utils.dates import validate_time +from xsdata.utils.dates import parse_date_args, validate_date, validate_time class DatesUtilsTests(TestCase): diff --git a/tests/utils/test_downloader.py b/tests/utils/test_downloader.py index d09a8a6a6..cb0c6b3f8 100644 --- a/tests/utils/test_downloader.py +++ b/tests/utils/test_downloader.py @@ -1,12 +1,10 @@ import tempfile from pathlib import Path -from unittest import mock -from unittest import TestCase +from unittest import TestCase, mock from urllib.request import urlopen from tests import fixtures_dir -from xsdata.models.xsd import Import -from xsdata.models.xsd import Schema +from xsdata.models.xsd import Import, Schema from xsdata.utils.downloader import Downloader diff --git a/tests/utils/test_hooks.py b/tests/utils/test_hooks.py index 7e5db5f98..3b92ba035 100644 --- a/tests/utils/test_hooks.py +++ b/tests/utils/test_hooks.py @@ -1,5 +1,4 @@ -from unittest import mock -from unittest import TestCase +from unittest import TestCase, mock from xsdata.utils.hooks import load_entry_points diff --git a/tests/utils/test_namespaces.py b/tests/utils/test_namespaces.py index c47774594..2c371e298 100644 --- a/tests/utils/test_namespaces.py +++ b/tests/utils/test_namespaces.py @@ -2,17 +2,19 @@ from unittest import TestCase from xsdata.models.enums import Namespace -from xsdata.utils.namespaces import build_qname -from xsdata.utils.namespaces import clean_prefixes -from xsdata.utils.namespaces import clean_uri -from xsdata.utils.namespaces import generate_prefix -from xsdata.utils.namespaces import is_default -from xsdata.utils.namespaces import is_ncname -from xsdata.utils.namespaces import is_uri -from xsdata.utils.namespaces import load_prefix -from xsdata.utils.namespaces import prefix_exists -from xsdata.utils.namespaces import split_qname -from xsdata.utils.namespaces import to_package_name +from xsdata.utils.namespaces import ( + build_qname, + clean_prefixes, + clean_uri, + generate_prefix, + is_default, + is_ncname, + is_uri, + load_prefix, + prefix_exists, + split_qname, + to_package_name, +) class NamespacesTests(TestCase): diff --git a/tests/utils/test_text.py b/tests/utils/test_text.py index 5e33cc077..d10530f48 100644 --- a/tests/utils/test_text.py +++ b/tests/utils/test_text.py @@ -1,21 +1,23 @@ import string from unittest import TestCase -from xsdata.utils.text import alnum -from xsdata.utils.text import camel_case -from xsdata.utils.text import capitalize -from xsdata.utils.text import classify -from xsdata.utils.text import kebab_case -from xsdata.utils.text import mixed_case -from xsdata.utils.text import mixed_pascal_case -from xsdata.utils.text import mixed_snake_case -from xsdata.utils.text import original_case -from xsdata.utils.text import pascal_case -from xsdata.utils.text import screaming_snake_case -from xsdata.utils.text import snake_case -from xsdata.utils.text import split_words -from xsdata.utils.text import StringType -from xsdata.utils.text import variable +from xsdata.utils.text import ( + StringType, + alnum, + camel_case, + capitalize, + classify, + kebab_case, + mixed_case, + mixed_pascal_case, + mixed_snake_case, + original_case, + pascal_case, + screaming_snake_case, + snake_case, + split_words, + variable, +) class TextTests(TestCase): diff --git a/xsdata/cli.py b/xsdata/cli.py index 1f98d1a92..b2f9f8b5f 100644 --- a/xsdata/cli.py +++ b/xsdata/cli.py @@ -3,8 +3,7 @@ import sys import warnings from pathlib import Path -from typing import Any -from typing import Iterator +from typing import Any, Iterator import click from click_default_group import DefaultGroup @@ -12,11 +11,8 @@ from xsdata import __version__ from xsdata.codegen.transformer import SchemaTransformer from xsdata.logger import logger -from xsdata.models.config import GeneratorConfig -from xsdata.models.config import GeneratorOutput -from xsdata.utils.click import LogFormatter -from xsdata.utils.click import LogHandler -from xsdata.utils.click import model_options +from xsdata.models.config import GeneratorConfig, GeneratorOutput +from xsdata.utils.click import LogFormatter, LogHandler, model_options from xsdata.utils.downloader import Downloader from xsdata.utils.hooks import load_entry_points diff --git a/xsdata/codegen/container.py b/xsdata/codegen/container.py index aed8b4b11..31a754fa3 100644 --- a/xsdata/codegen/container.py +++ b/xsdata/codegen/container.py @@ -1,32 +1,29 @@ -from typing import Callable -from typing import Dict -from typing import Iterator -from typing import List -from typing import Optional - -from xsdata.codegen.handlers import AddAttributeSubstitutions -from xsdata.codegen.handlers import CalculateAttributePaths -from xsdata.codegen.handlers import CreateCompoundFields -from xsdata.codegen.handlers import DesignateClassPackages -from xsdata.codegen.handlers import FilterClasses -from xsdata.codegen.handlers import FlattenAttributeGroups -from xsdata.codegen.handlers import FlattenClassExtensions -from xsdata.codegen.handlers import MergeAttributes -from xsdata.codegen.handlers import ProcessAttributeTypes -from xsdata.codegen.handlers import ProcessMixedContentClass -from xsdata.codegen.handlers import RenameDuplicateAttributes -from xsdata.codegen.handlers import RenameDuplicateClasses -from xsdata.codegen.handlers import ResetAttributeSequenceNumbers -from xsdata.codegen.handlers import ResetAttributeSequences -from xsdata.codegen.handlers import SanitizeAttributesDefaultValue -from xsdata.codegen.handlers import SanitizeEnumerationClass -from xsdata.codegen.handlers import UnnestInnerClasses -from xsdata.codegen.handlers import UpdateAttributesEffectiveChoice -from xsdata.codegen.handlers import VacuumInnerClasses -from xsdata.codegen.handlers import ValidateAttributesOverrides +from typing import Callable, Dict, Iterator, List, Optional + +from xsdata.codegen.handlers import ( + AddAttributeSubstitutions, + CalculateAttributePaths, + CreateCompoundFields, + DesignateClassPackages, + FilterClasses, + FlattenAttributeGroups, + FlattenClassExtensions, + MergeAttributes, + ProcessAttributeTypes, + ProcessMixedContentClass, + RenameDuplicateAttributes, + RenameDuplicateClasses, + ResetAttributeSequenceNumbers, + ResetAttributeSequences, + SanitizeAttributesDefaultValue, + SanitizeEnumerationClass, + UnnestInnerClasses, + UpdateAttributesEffectiveChoice, + VacuumInnerClasses, + ValidateAttributesOverrides, +) from xsdata.codegen.mixins import ContainerInterface -from xsdata.codegen.models import Class -from xsdata.codegen.models import Status +from xsdata.codegen.models import Class, Status from xsdata.codegen.utils import ClassUtils from xsdata.models.config import GeneratorConfig from xsdata.utils import collections diff --git a/xsdata/codegen/handlers/add_attribute_substitutions.py b/xsdata/codegen/handlers/add_attribute_substitutions.py index 06a140d25..f16aba87d 100644 --- a/xsdata/codegen/handlers/add_attribute_substitutions.py +++ b/xsdata/codegen/handlers/add_attribute_substitutions.py @@ -1,13 +1,8 @@ from collections import defaultdict -from typing import Dict -from typing import List -from typing import Optional - -from xsdata.codegen.mixins import ContainerInterface -from xsdata.codegen.mixins import RelativeHandlerInterface -from xsdata.codegen.models import Attr -from xsdata.codegen.models import AttrType -from xsdata.codegen.models import Class +from typing import Dict, List, Optional + +from xsdata.codegen.mixins import ContainerInterface, RelativeHandlerInterface +from xsdata.codegen.models import Attr, AttrType, Class from xsdata.codegen.utils import ClassUtils from xsdata.models.enums import Tag from xsdata.utils import collections diff --git a/xsdata/codegen/handlers/calculate_attribute_paths.py b/xsdata/codegen/handlers/calculate_attribute_paths.py index 93ca644e3..47939b154 100644 --- a/xsdata/codegen/handlers/calculate_attribute_paths.py +++ b/xsdata/codegen/handlers/calculate_attribute_paths.py @@ -1,7 +1,5 @@ from xsdata.codegen.mixins import HandlerInterface -from xsdata.codegen.models import Attr -from xsdata.codegen.models import Class - +from xsdata.codegen.models import Attr, Class ALL = "a" GROUP = "g" diff --git a/xsdata/codegen/handlers/create_compound_fields.py b/xsdata/codegen/handlers/create_compound_fields.py index a4a2f5ef1..0e6d8ae01 100644 --- a/xsdata/codegen/handlers/create_compound_fields.py +++ b/xsdata/codegen/handlers/create_compound_fields.py @@ -1,15 +1,8 @@ from collections import Counter -from typing import Dict -from typing import List -from typing import Set -from typing import Tuple - -from xsdata.codegen.mixins import ContainerInterface -from xsdata.codegen.mixins import RelativeHandlerInterface -from xsdata.codegen.models import Attr -from xsdata.codegen.models import Class -from xsdata.codegen.models import get_restriction_choice -from xsdata.codegen.models import Restrictions +from typing import Dict, List, Set, Tuple + +from xsdata.codegen.mixins import ContainerInterface, RelativeHandlerInterface +from xsdata.codegen.models import Attr, Class, Restrictions, get_restriction_choice from xsdata.codegen.utils import ClassUtils from xsdata.formats.dataclass.models.elements import XmlType from xsdata.models.enums import Tag diff --git a/xsdata/codegen/handlers/designate_class_packages.py b/xsdata/codegen/handlers/designate_class_packages.py index da584dfa4..c5cd65039 100644 --- a/xsdata/codegen/handlers/designate_class_packages.py +++ b/xsdata/codegen/handlers/designate_class_packages.py @@ -2,22 +2,15 @@ import re from collections import defaultdict from pathlib import Path -from typing import Iterable -from typing import Iterator -from typing import List -from typing import Optional -from typing import Set +from typing import Iterable, Iterator, List, Optional, Set from urllib.parse import urlparse from toposort import toposort_flatten from xsdata.codegen.mixins import ContainerHandlerInterface -from xsdata.codegen.models import Class -from xsdata.codegen.models import get_location -from xsdata.codegen.models import get_target_namespace +from xsdata.codegen.models import Class, get_location, get_target_namespace from xsdata.exceptions import CodeGenerationError -from xsdata.models.config import ObjectType -from xsdata.models.config import StructureStyle +from xsdata.models.config import ObjectType, StructureStyle from xsdata.models.enums import COMMON_SCHEMA_DIR from xsdata.utils import collections from xsdata.utils.graphs import strongly_connected_components diff --git a/xsdata/codegen/handlers/flatten_attribute_groups.py b/xsdata/codegen/handlers/flatten_attribute_groups.py index 56226a9c3..291c0027e 100644 --- a/xsdata/codegen/handlers/flatten_attribute_groups.py +++ b/xsdata/codegen/handlers/flatten_attribute_groups.py @@ -1,6 +1,5 @@ from xsdata.codegen.mixins import RelativeHandlerInterface -from xsdata.codegen.models import Attr -from xsdata.codegen.models import Class +from xsdata.codegen.models import Attr, Class from xsdata.codegen.utils import ClassUtils from xsdata.exceptions import AnalyzerValueError diff --git a/xsdata/codegen/handlers/flatten_class_extensions.py b/xsdata/codegen/handlers/flatten_class_extensions.py index 4acc7fda4..68f9b710d 100644 --- a/xsdata/codegen/handlers/flatten_class_extensions.py +++ b/xsdata/codegen/handlers/flatten_class_extensions.py @@ -1,15 +1,10 @@ from typing import Optional from xsdata.codegen.mixins import RelativeHandlerInterface -from xsdata.codegen.models import Attr -from xsdata.codegen.models import AttrType -from xsdata.codegen.models import Class -from xsdata.codegen.models import Extension +from xsdata.codegen.models import Attr, AttrType, Class, Extension from xsdata.codegen.utils import ClassUtils from xsdata.logger import logger -from xsdata.models.enums import DataType -from xsdata.models.enums import NamespaceType -from xsdata.models.enums import Tag +from xsdata.models.enums import DataType, NamespaceType, Tag from xsdata.utils.constants import DEFAULT_ATTR_NAME diff --git a/xsdata/codegen/handlers/merge_attributes.py b/xsdata/codegen/handlers/merge_attributes.py index 0ed30118e..565c01ae3 100644 --- a/xsdata/codegen/handlers/merge_attributes.py +++ b/xsdata/codegen/handlers/merge_attributes.py @@ -1,8 +1,7 @@ from typing import List from xsdata.codegen.mixins import HandlerInterface -from xsdata.codegen.models import Attr -from xsdata.codegen.models import Class +from xsdata.codegen.models import Attr, Class from xsdata.codegen.utils import ClassUtils from xsdata.utils import collections diff --git a/xsdata/codegen/handlers/process_attributes_types.py b/xsdata/codegen/handlers/process_attributes_types.py index 38b6268ac..38c2b21a8 100644 --- a/xsdata/codegen/handlers/process_attributes_types.py +++ b/xsdata/codegen/handlers/process_attributes_types.py @@ -1,18 +1,10 @@ -from typing import Dict -from typing import Optional -from typing import Set -from typing import Tuple - -from xsdata.codegen.mixins import ContainerInterface -from xsdata.codegen.mixins import RelativeHandlerInterface -from xsdata.codegen.models import Attr -from xsdata.codegen.models import AttrType -from xsdata.codegen.models import Class -from xsdata.codegen.models import Status +from typing import Dict, Optional, Set, Tuple + +from xsdata.codegen.mixins import ContainerInterface, RelativeHandlerInterface +from xsdata.codegen.models import Attr, AttrType, Class, Status from xsdata.codegen.utils import ClassUtils from xsdata.logger import logger -from xsdata.models.enums import DataType -from xsdata.models.enums import Tag +from xsdata.models.enums import DataType, Tag from xsdata.utils import collections diff --git a/xsdata/codegen/handlers/process_mixed_content_class.py b/xsdata/codegen/handlers/process_mixed_content_class.py index 68313a9e9..6e760e4d5 100644 --- a/xsdata/codegen/handlers/process_mixed_content_class.py +++ b/xsdata/codegen/handlers/process_mixed_content_class.py @@ -1,13 +1,8 @@ import sys from xsdata.codegen.mixins import HandlerInterface -from xsdata.codegen.models import Attr -from xsdata.codegen.models import AttrType -from xsdata.codegen.models import Class -from xsdata.codegen.models import Restrictions -from xsdata.models.enums import DataType -from xsdata.models.enums import NamespaceType -from xsdata.models.enums import Tag +from xsdata.codegen.models import Attr, AttrType, Class, Restrictions +from xsdata.models.enums import DataType, NamespaceType, Tag class ProcessMixedContentClass(HandlerInterface): diff --git a/xsdata/codegen/handlers/rename_duplicate_attributes.py b/xsdata/codegen/handlers/rename_duplicate_attributes.py index c37d924ae..6060a826c 100644 --- a/xsdata/codegen/handlers/rename_duplicate_attributes.py +++ b/xsdata/codegen/handlers/rename_duplicate_attributes.py @@ -1,6 +1,5 @@ from xsdata.codegen.mixins import HandlerInterface -from xsdata.codegen.models import Attr -from xsdata.codegen.models import Class +from xsdata.codegen.models import Attr, Class from xsdata.codegen.utils import ClassUtils from xsdata.utils.collections import group_by from xsdata.utils.constants import DEFAULT_ATTR_NAME diff --git a/xsdata/codegen/handlers/rename_duplicate_classes.py b/xsdata/codegen/handlers/rename_duplicate_classes.py index f16b1e74e..4b3887820 100644 --- a/xsdata/codegen/handlers/rename_duplicate_classes.py +++ b/xsdata/codegen/handlers/rename_duplicate_classes.py @@ -1,15 +1,9 @@ from typing import List from xsdata.codegen.mixins import ContainerHandlerInterface -from xsdata.codegen.models import Attr -from xsdata.codegen.models import Class -from xsdata.codegen.models import get_location -from xsdata.codegen.models import get_name -from xsdata.codegen.models import get_qname +from xsdata.codegen.models import Attr, Class, get_location, get_name, get_qname from xsdata.models.config import StructureStyle -from xsdata.utils import collections -from xsdata.utils import namespaces -from xsdata.utils import text +from xsdata.utils import collections, namespaces, text REQUIRE_UNIQUE_NAMES = (StructureStyle.SINGLE_PACKAGE, StructureStyle.CLUSTERS) diff --git a/xsdata/codegen/handlers/reset_attribute_sequences.py b/xsdata/codegen/handlers/reset_attribute_sequences.py index 87c3435fb..8b7655636 100644 --- a/xsdata/codegen/handlers/reset_attribute_sequences.py +++ b/xsdata/codegen/handlers/reset_attribute_sequences.py @@ -1,7 +1,5 @@ from xsdata.codegen.mixins import HandlerInterface -from xsdata.codegen.models import Attr -from xsdata.codegen.models import Class -from xsdata.codegen.models import get_restriction_sequence +from xsdata.codegen.models import Attr, Class, get_restriction_sequence from xsdata.utils import collections diff --git a/xsdata/codegen/handlers/sanitize_attributes_default_value.py b/xsdata/codegen/handlers/sanitize_attributes_default_value.py index a8d5bc980..aaddb980c 100644 --- a/xsdata/codegen/handlers/sanitize_attributes_default_value.py +++ b/xsdata/codegen/handlers/sanitize_attributes_default_value.py @@ -1,7 +1,5 @@ from xsdata.codegen.mixins import RelativeHandlerInterface -from xsdata.codegen.models import Attr -from xsdata.codegen.models import AttrType -from xsdata.codegen.models import Class +from xsdata.codegen.models import Attr, AttrType, Class from xsdata.formats.converter import converter from xsdata.logger import logger from xsdata.models.enums import DataType @@ -143,10 +141,7 @@ def is_valid_native_value(cls, target: Class, attr: Attr) -> bool: if not types: return False - if attr.restrictions.tokens: - tokens = attr.default.split() - else: - tokens = [attr.default] + tokens = attr.default.split() if attr.restrictions.tokens else [attr.default] if len(tokens) == 1 and attr.is_enumeration and attr.restrictions.tokens: attr.restrictions.tokens = False diff --git a/xsdata/codegen/handlers/sanitize_enumeration_class.py b/xsdata/codegen/handlers/sanitize_enumeration_class.py index a82f074d2..0342a524d 100644 --- a/xsdata/codegen/handlers/sanitize_enumeration_class.py +++ b/xsdata/codegen/handlers/sanitize_enumeration_class.py @@ -1,5 +1,4 @@ -from typing import Any -from typing import List +from typing import Any, List from xsdata.codegen.mixins import RelativeHandlerInterface from xsdata.codegen.models import Class diff --git a/xsdata/codegen/handlers/unnest_inner_classes.py b/xsdata/codegen/handlers/unnest_inner_classes.py index 006b98bfe..d9eb30c47 100644 --- a/xsdata/codegen/handlers/unnest_inner_classes.py +++ b/xsdata/codegen/handlers/unnest_inner_classes.py @@ -1,8 +1,7 @@ from typing import Optional from xsdata.codegen.mixins import RelativeHandlerInterface -from xsdata.codegen.models import Attr -from xsdata.codegen.models import Class +from xsdata.codegen.models import Attr, Class from xsdata.utils.namespaces import build_qname diff --git a/xsdata/codegen/handlers/update_attributes_effective_choice.py b/xsdata/codegen/handlers/update_attributes_effective_choice.py index c30cf7467..ee40ce89c 100644 --- a/xsdata/codegen/handlers/update_attributes_effective_choice.py +++ b/xsdata/codegen/handlers/update_attributes_effective_choice.py @@ -1,11 +1,8 @@ from collections import defaultdict -from typing import List -from typing import Tuple +from typing import List, Tuple from xsdata.codegen.mixins import HandlerInterface -from xsdata.codegen.models import Attr -from xsdata.codegen.models import Class -from xsdata.codegen.models import get_restriction_choice +from xsdata.codegen.models import Attr, Class, get_restriction_choice from xsdata.utils import collections diff --git a/xsdata/codegen/handlers/vacuum_inner_classes.py b/xsdata/codegen/handlers/vacuum_inner_classes.py index 5f5671b93..5b87edb56 100644 --- a/xsdata/codegen/handlers/vacuum_inner_classes.py +++ b/xsdata/codegen/handlers/vacuum_inner_classes.py @@ -1,8 +1,7 @@ from typing import Iterator from xsdata.codegen.mixins import HandlerInterface -from xsdata.codegen.models import AttrType -from xsdata.codegen.models import Class +from xsdata.codegen.models import AttrType, Class from xsdata.models.enums import DataType from xsdata.utils import collections from xsdata.utils.namespaces import build_qname diff --git a/xsdata/codegen/handlers/validate_attributes_overrides.py b/xsdata/codegen/handlers/validate_attributes_overrides.py index a8c22e8ea..f2a1a05fc 100644 --- a/xsdata/codegen/handlers/validate_attributes_overrides.py +++ b/xsdata/codegen/handlers/validate_attributes_overrides.py @@ -1,12 +1,8 @@ import sys -from typing import Dict -from typing import List -from typing import Optional +from typing import Dict, List, Optional from xsdata.codegen.mixins import RelativeHandlerInterface -from xsdata.codegen.models import Attr -from xsdata.codegen.models import Class -from xsdata.codegen.models import get_slug +from xsdata.codegen.models import Attr, Class, get_slug from xsdata.codegen.utils import ClassUtils from xsdata.logger import logger from xsdata.utils import collections diff --git a/xsdata/codegen/mappers/definitions.py b/xsdata/codegen/mappers/definitions.py index be823d443..8d6a26a2b 100644 --- a/xsdata/codegen/mappers/definitions.py +++ b/xsdata/codegen/mappers/definitions.py @@ -1,32 +1,22 @@ import itertools -from typing import Dict -from typing import Iterator -from typing import List -from typing import Optional -from typing import Tuple - -from xsdata.codegen.models import Attr -from xsdata.codegen.models import AttrType -from xsdata.codegen.models import Class -from xsdata.codegen.models import Restrictions -from xsdata.codegen.models import Status +from typing import Dict, Iterator, List, Optional, Tuple + +from xsdata.codegen.models import Attr, AttrType, Class, Restrictions, Status from xsdata.formats.dataclass.models.generics import AnyElement from xsdata.logger import logger -from xsdata.models.enums import DataType -from xsdata.models.enums import Namespace -from xsdata.models.enums import Tag -from xsdata.models.wsdl import Binding -from xsdata.models.wsdl import BindingMessage -from xsdata.models.wsdl import BindingOperation -from xsdata.models.wsdl import Definitions -from xsdata.models.wsdl import Part -from xsdata.models.wsdl import PortType -from xsdata.models.wsdl import PortTypeMessage -from xsdata.models.wsdl import PortTypeOperation -from xsdata.models.wsdl import ServicePort -from xsdata.utils import collections -from xsdata.utils import namespaces -from xsdata.utils import text +from xsdata.models.enums import DataType, Namespace, Tag +from xsdata.models.wsdl import ( + Binding, + BindingMessage, + BindingOperation, + Definitions, + Part, + PortType, + PortTypeMessage, + PortTypeOperation, + ServicePort, +) +from xsdata.utils import collections, namespaces, text class DefinitionsMapper: diff --git a/xsdata/codegen/mappers/dict.py b/xsdata/codegen/mappers/dict.py index 797064fb5..927a91be6 100644 --- a/xsdata/codegen/mappers/dict.py +++ b/xsdata/codegen/mappers/dict.py @@ -1,11 +1,8 @@ import sys -from typing import Any -from typing import Dict -from typing import List +from typing import Any, Dict, List from xsdata.codegen.mappers.element import ElementMapper -from xsdata.codegen.models import AttrType -from xsdata.codegen.models import Class +from xsdata.codegen.models import AttrType, Class from xsdata.codegen.utils import ClassUtils from xsdata.models.enums import Tag diff --git a/xsdata/codegen/mappers/dtd.py b/xsdata/codegen/mappers/dtd.py index 7a2370ea4..66ba7f0e7 100644 --- a/xsdata/codegen/mappers/dtd.py +++ b/xsdata/codegen/mappers/dtd.py @@ -1,26 +1,19 @@ import sys -from typing import Any -from typing import Dict -from typing import Iterator -from typing import List -from typing import Optional - -from xsdata.codegen.models import Attr -from xsdata.codegen.models import AttrType -from xsdata.codegen.models import Class -from xsdata.codegen.models import Extension -from xsdata.codegen.models import Restrictions -from xsdata.models.dtd import Dtd -from xsdata.models.dtd import DtdAttribute -from xsdata.models.dtd import DtdAttributeDefault -from xsdata.models.dtd import DtdAttributeType -from xsdata.models.dtd import DtdContent -from xsdata.models.dtd import DtdContentOccur -from xsdata.models.dtd import DtdContentType -from xsdata.models.dtd import DtdElement -from xsdata.models.dtd import DtdElementType -from xsdata.models.enums import DataType -from xsdata.models.enums import Tag +from typing import Any, Dict, Iterator, List, Optional + +from xsdata.codegen.models import Attr, AttrType, Class, Extension, Restrictions +from xsdata.models.dtd import ( + Dtd, + DtdAttribute, + DtdAttributeDefault, + DtdAttributeType, + DtdContent, + DtdContentOccur, + DtdContentType, + DtdElement, + DtdElementType, +) +from xsdata.models.enums import DataType, Tag from xsdata.utils.constants import DEFAULT_ATTR_NAME diff --git a/xsdata/codegen/mappers/element.py b/xsdata/codegen/mappers/element.py index f1cd364e0..c939edb5a 100644 --- a/xsdata/codegen/mappers/element.py +++ b/xsdata/codegen/mappers/element.py @@ -1,21 +1,14 @@ import sys from collections import defaultdict -from typing import Any -from typing import List -from typing import Optional +from typing import Any, List, Optional -from xsdata.codegen.models import Attr -from xsdata.codegen.models import AttrType -from xsdata.codegen.models import Class +from xsdata.codegen.models import Attr, AttrType, Class from xsdata.codegen.utils import ClassUtils from xsdata.formats.converter import converter from xsdata.formats.dataclass.models.generics import AnyElement -from xsdata.models.enums import DataType -from xsdata.models.enums import QNames -from xsdata.models.enums import Tag +from xsdata.models.enums import DataType, QNames, Tag from xsdata.utils import collections -from xsdata.utils.namespaces import build_qname -from xsdata.utils.namespaces import split_qname +from xsdata.utils.namespaces import build_qname, split_qname class ElementMapper: diff --git a/xsdata/codegen/mappers/schema.py b/xsdata/codegen/mappers/schema.py index d1376be5f..269978b02 100644 --- a/xsdata/codegen/mappers/schema.py +++ b/xsdata/codegen/mappers/schema.py @@ -1,29 +1,19 @@ -from typing import Dict -from typing import Iterator -from typing import List -from typing import Optional -from typing import Tuple - -from xsdata.codegen.models import Attr -from xsdata.codegen.models import AttrType -from xsdata.codegen.models import Class -from xsdata.codegen.models import Extension -from xsdata.codegen.models import Restrictions -from xsdata.models.enums import DataType -from xsdata.models.enums import Tag +from typing import Dict, Iterator, List, Optional, Tuple + +from xsdata.codegen.models import Attr, AttrType, Class, Extension, Restrictions +from xsdata.models.enums import DataType, Tag from xsdata.models.mixins import ElementBase -from xsdata.models.xsd import Attribute -from xsdata.models.xsd import AttributeGroup -from xsdata.models.xsd import ComplexType -from xsdata.models.xsd import Element -from xsdata.models.xsd import Group -from xsdata.models.xsd import Schema -from xsdata.models.xsd import SimpleType -from xsdata.utils import collections -from xsdata.utils import text -from xsdata.utils.namespaces import build_qname -from xsdata.utils.namespaces import is_default -from xsdata.utils.namespaces import prefix_exists +from xsdata.models.xsd import ( + Attribute, + AttributeGroup, + ComplexType, + Element, + Group, + Schema, + SimpleType, +) +from xsdata.utils import collections, text +from xsdata.utils.namespaces import build_qname, is_default, prefix_exists class SchemaMapper: diff --git a/xsdata/codegen/mixins.py b/xsdata/codegen/mixins.py index 8d647c321..b3eaaada4 100644 --- a/xsdata/codegen/mixins.py +++ b/xsdata/codegen/mixins.py @@ -1,12 +1,8 @@ import abc from abc import ABCMeta -from typing import Callable -from typing import Iterator -from typing import List -from typing import Optional +from typing import Callable, Iterator, List, Optional -from xsdata.codegen.models import Attr -from xsdata.codegen.models import Class +from xsdata.codegen.models import Attr, Class from xsdata.models.config import GeneratorConfig from xsdata.utils.constants import return_true diff --git a/xsdata/codegen/models.py b/xsdata/codegen/models.py index e8c20024e..206be926c 100644 --- a/xsdata/codegen/models.py +++ b/xsdata/codegen/models.py @@ -1,27 +1,15 @@ import operator import sys -from dataclasses import asdict -from dataclasses import dataclass -from dataclasses import field -from dataclasses import replace +from dataclasses import asdict, dataclass, field, replace from enum import IntEnum -from typing import Any -from typing import Dict -from typing import Iterator -from typing import List -from typing import Optional -from typing import Tuple -from typing import Type +from typing import Any, Dict, Iterator, List, Optional, Tuple, Type from xsdata.exceptions import CodeGenerationError from xsdata.formats.converter import converter from xsdata.formats.dataclass.models.elements import XmlType -from xsdata.models.enums import DataType -from xsdata.models.enums import Namespace -from xsdata.models.enums import Tag +from xsdata.models.enums import DataType, Namespace, Tag from xsdata.models.mixins import ElementBase -from xsdata.utils import namespaces -from xsdata.utils import text +from xsdata.utils import namespaces, text xml_type_map = { Tag.ANY: XmlType.WILDCARD, diff --git a/xsdata/codegen/parsers/definitions.py b/xsdata/codegen/parsers/definitions.py index 2e66a2205..866c6beba 100644 --- a/xsdata/codegen/parsers/definitions.py +++ b/xsdata/codegen/parsers/definitions.py @@ -1,7 +1,5 @@ from dataclasses import dataclass -from typing import Any -from typing import List -from typing import Optional +from typing import Any, List, Optional from xsdata.codegen.parsers.schema import SchemaParser from xsdata.formats.bindings import T diff --git a/xsdata/codegen/parsers/dtd.py b/xsdata/codegen/parsers/dtd.py index 081f3dc1c..ee685048f 100644 --- a/xsdata/codegen/parsers/dtd.py +++ b/xsdata/codegen/parsers/dtd.py @@ -1,18 +1,18 @@ import io -from typing import Any -from typing import List -from typing import Optional +from typing import Any, List, Optional from xsdata.exceptions import ParserError -from xsdata.models.dtd import Dtd -from xsdata.models.dtd import DtdAttribute -from xsdata.models.dtd import DtdAttributeDefault -from xsdata.models.dtd import DtdAttributeType -from xsdata.models.dtd import DtdContent -from xsdata.models.dtd import DtdContentOccur -from xsdata.models.dtd import DtdContentType -from xsdata.models.dtd import DtdElement -from xsdata.models.dtd import DtdElementType +from xsdata.models.dtd import ( + Dtd, + DtdAttribute, + DtdAttributeDefault, + DtdAttributeType, + DtdContent, + DtdContentOccur, + DtdContentType, + DtdElement, + DtdElementType, +) from xsdata.models.enums import Namespace diff --git a/xsdata/codegen/parsers/schema.py b/xsdata/codegen/parsers/schema.py index ba325bde4..2c1b239af 100644 --- a/xsdata/codegen/parsers/schema.py +++ b/xsdata/codegen/parsers/schema.py @@ -1,12 +1,6 @@ import sys -from dataclasses import dataclass -from dataclasses import field -from typing import Any -from typing import Dict -from typing import List -from typing import Optional -from typing import Type -from typing import Union +from dataclasses import dataclass, field +from typing import Any, Dict, List, Optional, Type, Union from urllib.parse import urljoin from xsdata.formats.bindings import T @@ -14,9 +8,7 @@ from xsdata.formats.dataclass.parsers.mixins import XmlNode from xsdata.formats.dataclass.parsers.xml import UserXmlParser from xsdata.models import xsd -from xsdata.models.enums import FormType -from xsdata.models.enums import Mode -from xsdata.models.enums import Namespace +from xsdata.models.enums import FormType, Mode, Namespace from xsdata.models.mixins import ElementBase OPEN_CONTENT_ELEMENT = Union[xsd.ComplexType, xsd.Restriction, xsd.Extension] diff --git a/xsdata/codegen/resolver.py b/xsdata/codegen/resolver.py index ce381020f..44f287137 100644 --- a/xsdata/codegen/resolver.py +++ b/xsdata/codegen/resolver.py @@ -1,13 +1,10 @@ import logging import re -from typing import Dict -from typing import List +from typing import Dict, List from toposort import toposort_flatten -from xsdata.codegen.models import Class -from xsdata.codegen.models import get_slug -from xsdata.codegen.models import Import +from xsdata.codegen.models import Class, Import, get_slug from xsdata.exceptions import ResolverValueError from xsdata.utils import collections diff --git a/xsdata/codegen/transformer.py b/xsdata/codegen/transformer.py index 4389e7604..5114295bd 100644 --- a/xsdata/codegen/transformer.py +++ b/xsdata/codegen/transformer.py @@ -6,12 +6,7 @@ import tempfile from collections import defaultdict from pathlib import Path -from typing import Callable -from typing import Dict -from typing import List -from typing import NamedTuple -from typing import Optional -from typing import Tuple +from typing import Callable, Dict, List, NamedTuple, Optional, Tuple from xsdata.codegen import opener from xsdata.codegen.analyzer import ClassAnalyzer @@ -243,7 +238,7 @@ def convert_definitions(self, definitions: Definitions): def generate_classes(self, schema: Schema) -> List[Class]: """Convert the given schema tree to a list of classes.""" uri = schema.location - logger.info("Compiling schema %s", "..." if not uri else uri) + logger.info("Compiling schema %s", uri if uri else "...") classes = SchemaMapper.map(schema) class_num, inner_num = self.count_classes(classes) diff --git a/xsdata/codegen/utils.py b/xsdata/codegen/utils.py index d9e1f2817..51978eb6b 100644 --- a/xsdata/codegen/utils.py +++ b/xsdata/codegen/utils.py @@ -1,22 +1,19 @@ import sys -from typing import Iterator -from typing import List -from typing import Optional -from typing import Set - -from xsdata.codegen.models import Attr -from xsdata.codegen.models import AttrType -from xsdata.codegen.models import Class -from xsdata.codegen.models import Extension -from xsdata.codegen.models import get_qname -from xsdata.codegen.models import get_slug -from xsdata.codegen.models import Restrictions -from xsdata.codegen.models import Status +from typing import Iterator, List, Optional, Set + +from xsdata.codegen.models import ( + Attr, + AttrType, + Class, + Extension, + Restrictions, + Status, + get_qname, + get_slug, +) from xsdata.exceptions import CodeGenerationError from xsdata.models.enums import DataType -from xsdata.utils import collections -from xsdata.utils import namespaces -from xsdata.utils import text +from xsdata.utils import collections, namespaces, text class ClassUtils: diff --git a/xsdata/codegen/validator.py b/xsdata/codegen/validator.py index be2f7e556..64867b069 100644 --- a/xsdata/codegen/validator.py +++ b/xsdata/codegen/validator.py @@ -1,11 +1,7 @@ -from typing import List -from typing import Optional +from typing import List, Optional from xsdata.codegen.container import ClassContainer -from xsdata.codegen.models import Attr -from xsdata.codegen.models import Class -from xsdata.codegen.models import Extension -from xsdata.codegen.models import get_tag +from xsdata.codegen.models import Attr, Class, Extension, get_tag from xsdata.codegen.utils import ClassUtils from xsdata.logger import logger from xsdata.models.enums import Tag diff --git a/xsdata/codegen/writer.py b/xsdata/codegen/writer.py index 064cd61fb..d1e529c54 100644 --- a/xsdata/codegen/writer.py +++ b/xsdata/codegen/writer.py @@ -1,7 +1,4 @@ -from typing import ClassVar -from typing import Dict -from typing import List -from typing import Type +from typing import ClassVar, Dict, List, Type from xsdata.codegen.models import Class from xsdata.exceptions import CodeGenerationError diff --git a/xsdata/formats/bindings.py b/xsdata/formats/bindings.py index fa2e37352..9070e6272 100644 --- a/xsdata/formats/bindings.py +++ b/xsdata/formats/bindings.py @@ -1,10 +1,7 @@ import abc import io import pathlib -from typing import Any -from typing import Optional -from typing import Type -from typing import TypeVar +from typing import Any, Optional, Type, TypeVar T = TypeVar("T") diff --git a/xsdata/formats/converter.py b/xsdata/formats/converter.py index 02a069c6a..1fa3b9165 100644 --- a/xsdata/formats/converter.py +++ b/xsdata/formats/converter.py @@ -3,37 +3,34 @@ import binascii import math import warnings -from datetime import date -from datetime import datetime -from datetime import time -from decimal import Decimal -from decimal import InvalidOperation -from enum import Enum -from enum import EnumMeta -from typing import Any -from typing import Callable -from typing import cast -from typing import Dict -from typing import List -from typing import Optional -from typing import Sequence -from typing import Tuple -from typing import Type -from typing import Union +from datetime import date, datetime, time +from decimal import Decimal, InvalidOperation +from enum import Enum, EnumMeta +from typing import ( + Any, + Callable, + Dict, + List, + Optional, + Sequence, + Tuple, + Type, + Union, + cast, +) from xml.etree.ElementTree import QName -from xsdata.exceptions import ConverterError -from xsdata.exceptions import ConverterWarning -from xsdata.models.datatype import XmlBase64Binary -from xsdata.models.datatype import XmlDate -from xsdata.models.datatype import XmlDateTime -from xsdata.models.datatype import XmlDuration -from xsdata.models.datatype import XmlHexBinary -from xsdata.models.datatype import XmlPeriod -from xsdata.models.datatype import XmlTime -from xsdata.utils import collections -from xsdata.utils import namespaces -from xsdata.utils import text +from xsdata.exceptions import ConverterError, ConverterWarning +from xsdata.models.datatype import ( + XmlBase64Binary, + XmlDate, + XmlDateTime, + XmlDuration, + XmlHexBinary, + XmlPeriod, + XmlTime, +) +from xsdata.utils import collections, namespaces, text class Converter(abc.ABC): diff --git a/xsdata/formats/dataclass/client.py b/xsdata/formats/dataclass/client.py index fa1db9ee7..7b82241a7 100644 --- a/xsdata/formats/dataclass/client.py +++ b/xsdata/formats/dataclass/client.py @@ -1,17 +1,11 @@ -from dataclasses import dataclass -from dataclasses import field -from typing import Any -from typing import Dict -from typing import NamedTuple -from typing import Optional -from typing import Type +from dataclasses import dataclass, field +from typing import Any, Dict, NamedTuple, Optional, Type from xsdata.exceptions import ClientValueError from xsdata.formats.dataclass.parsers import XmlParser from xsdata.formats.dataclass.parsers.json import DictConverter from xsdata.formats.dataclass.serializers import XmlSerializer -from xsdata.formats.dataclass.transports import DefaultTransport -from xsdata.formats.dataclass.transports import Transport +from xsdata.formats.dataclass.transports import DefaultTransport, Transport class Config(NamedTuple): diff --git a/xsdata/formats/dataclass/compat.py b/xsdata/formats/dataclass/compat.py index 7e2fe105f..6058ff0d3 100644 --- a/xsdata/formats/dataclass/compat.py +++ b/xsdata/formats/dataclass/compat.py @@ -1,20 +1,9 @@ import abc -from dataclasses import fields -from dataclasses import is_dataclass -from dataclasses import MISSING -from typing import Any -from typing import cast -from typing import Dict -from typing import Iterator -from typing import List -from typing import NamedTuple -from typing import Optional -from typing import Set -from typing import Type +from dataclasses import MISSING, fields, is_dataclass +from typing import Any, Dict, Iterator, List, NamedTuple, Optional, Set, Type, cast from xsdata.exceptions import XmlContextError -from xsdata.formats.dataclass.models.generics import AnyElement -from xsdata.formats.dataclass.models.generics import DerivedElement +from xsdata.formats.dataclass.models.generics import AnyElement, DerivedElement from xsdata.utils.hooks import load_entry_points diff --git a/xsdata/formats/dataclass/context.py b/xsdata/formats/dataclass/context.py index 4338fa370..6a30dd36b 100644 --- a/xsdata/formats/dataclass/context.py +++ b/xsdata/formats/dataclass/context.py @@ -1,12 +1,6 @@ import sys from collections import defaultdict -from typing import Any -from typing import Callable -from typing import Dict -from typing import List -from typing import Optional -from typing import Set -from typing import Type +from typing import Any, Callable, Dict, List, Optional, Set, Type from xsdata.exceptions import XmlContextError from xsdata.formats.bindings import T diff --git a/xsdata/formats/dataclass/filters.py b/xsdata/formats/dataclass/filters.py index f3cc4d15f..c8abbc342 100644 --- a/xsdata/formats/dataclass/filters.py +++ b/xsdata/formats/dataclass/filters.py @@ -2,34 +2,23 @@ import sys import textwrap from collections import defaultdict -from typing import Any -from typing import Callable -from typing import Dict -from typing import Iterable -from typing import List -from typing import Optional -from typing import Set -from typing import Tuple -from typing import Type - -from docformatter import configuration -from docformatter import format +from typing import Any, Callable, Dict, Iterable, List, Optional, Set, Tuple, Type + +from docformatter import configuration, format from jinja2 import Environment -from xsdata.codegen.models import Attr -from xsdata.codegen.models import AttrType -from xsdata.codegen.models import Class +from xsdata.codegen.models import Attr, AttrType, Class from xsdata.formats.converter import converter from xsdata.formats.dataclass.models.elements import XmlType -from xsdata.models.config import DocstringStyle -from xsdata.models.config import ExtensionType -from xsdata.models.config import GeneratorConfig -from xsdata.models.config import GeneratorExtension -from xsdata.models.config import ObjectType -from xsdata.models.config import OutputFormat -from xsdata.utils import collections -from xsdata.utils import namespaces -from xsdata.utils import text +from xsdata.models.config import ( + DocstringStyle, + ExtensionType, + GeneratorConfig, + GeneratorExtension, + ObjectType, + OutputFormat, +) +from xsdata.utils import collections, namespaces, text from xsdata.utils.objects import literal_value diff --git a/xsdata/formats/dataclass/generator.py b/xsdata/formats/dataclass/generator.py index 06a2163df..c8d6ca31d 100644 --- a/xsdata/formats/dataclass/generator.py +++ b/xsdata/formats/dataclass/generator.py @@ -1,17 +1,12 @@ from pathlib import Path -from typing import Iterator -from typing import List -from typing import Optional +from typing import Iterator, List, Optional -from jinja2 import Environment -from jinja2 import FileSystemLoader +from jinja2 import Environment, FileSystemLoader -from xsdata.codegen.models import Class -from xsdata.codegen.models import Import +from xsdata.codegen.models import Class, Import from xsdata.codegen.resolver import DependenciesResolver from xsdata.formats.dataclass.filters import Filters -from xsdata.formats.mixins import AbstractGenerator -from xsdata.formats.mixins import GeneratorResult +from xsdata.formats.mixins import AbstractGenerator, GeneratorResult from xsdata.models.config import GeneratorConfig diff --git a/xsdata/formats/dataclass/models/builders.py b/xsdata/formats/dataclass/models/builders.py index 50c83ec76..ddc4955f6 100644 --- a/xsdata/formats/dataclass/models/builders.py +++ b/xsdata/formats/dataclass/models/builders.py @@ -1,31 +1,30 @@ import sys from collections import defaultdict from enum import Enum -from typing import Any -from typing import Callable -from typing import Dict -from typing import get_type_hints -from typing import Iterator -from typing import List -from typing import Mapping -from typing import NamedTuple -from typing import Optional -from typing import Sequence -from typing import Set -from typing import Tuple -from typing import Type +from typing import ( + Any, + Callable, + Dict, + Iterator, + List, + Mapping, + NamedTuple, + Optional, + Sequence, + Set, + Tuple, + Type, + get_type_hints, +) from xsdata.exceptions import XmlContextError from xsdata.formats.converter import converter from xsdata.formats.dataclass.compat import ClassType -from xsdata.formats.dataclass.models.elements import XmlMeta -from xsdata.formats.dataclass.models.elements import XmlType -from xsdata.formats.dataclass.models.elements import XmlVar +from xsdata.formats.dataclass.models.elements import XmlMeta, XmlType, XmlVar from xsdata.formats.dataclass.typing import evaluate from xsdata.models.enums import NamespaceType from xsdata.utils.collections import first -from xsdata.utils.constants import EMPTY_SEQUENCE -from xsdata.utils.constants import return_input +from xsdata.utils.constants import EMPTY_SEQUENCE, return_input from xsdata.utils.namespaces import build_qname @@ -286,13 +285,12 @@ def build( f"Xml type '{xml_type}' does not support typing: {type_hint}" ) - if wrapper is not None: - if not isinstance(origin, type) or not issubclass( - origin, (list, set, tuple) - ): - raise XmlContextError( - f"a wrapper requires a collection type on attribute {name}" - ) + if wrapper is not None and ( + not isinstance(origin, type) or not issubclass(origin, (list, set, tuple)) + ): + raise XmlContextError( + f"a wrapper requires a collection type on attribute {name}" + ) local_name = self.build_local_name(xml_type, local_name, name) diff --git a/xsdata/formats/dataclass/models/elements.py b/xsdata/formats/dataclass/models/elements.py index 7ee49ed9f..2aa2a236c 100644 --- a/xsdata/formats/dataclass/models/elements.py +++ b/xsdata/formats/dataclass/models/elements.py @@ -1,23 +1,24 @@ import itertools import operator import sys -from typing import Any -from typing import Callable -from typing import Dict -from typing import Iterator -from typing import List -from typing import Mapping -from typing import Optional -from typing import Sequence -from typing import Set -from typing import Tuple -from typing import Type +from typing import ( + Any, + Callable, + Dict, + Iterator, + List, + Mapping, + Optional, + Sequence, + Set, + Tuple, + Type, +) from xsdata.formats.converter import converter from xsdata.models.enums import NamespaceType from xsdata.utils import collections -from xsdata.utils.namespaces import local_name -from xsdata.utils.namespaces import target_uri +from xsdata.utils.namespaces import local_name, target_uri NoneType = type(None) diff --git a/xsdata/formats/dataclass/models/generics.py b/xsdata/formats/dataclass/models/generics.py index b4c60d89a..089f3da5c 100644 --- a/xsdata/formats/dataclass/models/generics.py +++ b/xsdata/formats/dataclass/models/generics.py @@ -1,10 +1,5 @@ -from dataclasses import dataclass -from dataclasses import field -from typing import Dict -from typing import Generic -from typing import List -from typing import Optional -from typing import TypeVar +from dataclasses import dataclass, field +from typing import Dict, Generic, List, Optional, TypeVar from xsdata.formats.dataclass.models.elements import XmlType diff --git a/xsdata/formats/dataclass/parsers/__init__.py b/xsdata/formats/dataclass/parsers/__init__.py index 5bd28954c..36fa8b64b 100644 --- a/xsdata/formats/dataclass/parsers/__init__.py +++ b/xsdata/formats/dataclass/parsers/__init__.py @@ -1,6 +1,5 @@ from xsdata.formats.dataclass.parsers.json import JsonParser from xsdata.formats.dataclass.parsers.tree import TreeParser -from xsdata.formats.dataclass.parsers.xml import UserXmlParser -from xsdata.formats.dataclass.parsers.xml import XmlParser +from xsdata.formats.dataclass.parsers.xml import UserXmlParser, XmlParser __all__ = ["JsonParser", "XmlParser", "UserXmlParser", "TreeParser"] diff --git a/xsdata/formats/dataclass/parsers/bases.py b/xsdata/formats/dataclass/parsers/bases.py index 62b3b56f3..0701fc776 100644 --- a/xsdata/formats/dataclass/parsers/bases.py +++ b/xsdata/formats/dataclass/parsers/bases.py @@ -1,24 +1,18 @@ import copy import warnings -from dataclasses import dataclass -from dataclasses import field -from typing import Any -from typing import cast -from typing import Dict -from typing import List -from typing import Optional -from typing import Tuple -from typing import Type - -from xsdata.exceptions import ConverterWarning -from xsdata.exceptions import ParserError +from dataclasses import dataclass, field +from typing import Any, Dict, List, Optional, Tuple, Type, cast + +from xsdata.exceptions import ConverterWarning, ParserError from xsdata.formats.bindings import T from xsdata.formats.dataclass.context import XmlContext from xsdata.formats.dataclass.parsers.config import ParserConfig -from xsdata.formats.dataclass.parsers.mixins import EventsHandler -from xsdata.formats.dataclass.parsers.mixins import PushParser -from xsdata.formats.dataclass.parsers.mixins import XmlHandler -from xsdata.formats.dataclass.parsers.mixins import XmlNode +from xsdata.formats.dataclass.parsers.mixins import ( + EventsHandler, + PushParser, + XmlHandler, + XmlNode, +) from xsdata.formats.dataclass.parsers.utils import ParserUtils from xsdata.models.enums import EventType diff --git a/xsdata/formats/dataclass/parsers/config.py b/xsdata/formats/dataclass/parsers/config.py index 337779e58..09d617e49 100644 --- a/xsdata/formats/dataclass/parsers/config.py +++ b/xsdata/formats/dataclass/parsers/config.py @@ -1,7 +1,4 @@ -from typing import Callable -from typing import Dict -from typing import Optional -from typing import Type +from typing import Callable, Dict, Optional, Type from xsdata.formats.bindings import T diff --git a/xsdata/formats/dataclass/parsers/handlers/lxml.py b/xsdata/formats/dataclass/parsers/handlers/lxml.py index c4de155d2..050f17358 100644 --- a/xsdata/formats/dataclass/parsers/handlers/lxml.py +++ b/xsdata/formats/dataclass/parsers/handlers/lxml.py @@ -1,5 +1,4 @@ -from typing import Any -from typing import Iterable +from typing import Any, Iterable from lxml import etree diff --git a/xsdata/formats/dataclass/parsers/handlers/native.py b/xsdata/formats/dataclass/parsers/handlers/native.py index 28b531d2c..cee8875bc 100644 --- a/xsdata/formats/dataclass/parsers/handlers/native.py +++ b/xsdata/formats/dataclass/parsers/handlers/native.py @@ -1,10 +1,5 @@ import functools -from typing import Any -from typing import Dict -from typing import Iterable -from typing import Iterator -from typing import Optional -from typing import Tuple +from typing import Any, Dict, Iterable, Iterator, Optional, Tuple from urllib.parse import urljoin from xml.etree import ElementInclude as xinclude from xml.etree import ElementTree as etree diff --git a/xsdata/formats/dataclass/parsers/json.py b/xsdata/formats/dataclass/parsers/json.py index 1ea771c0f..c7a5d21dc 100644 --- a/xsdata/formats/dataclass/parsers/json.py +++ b/xsdata/formats/dataclass/parsers/json.py @@ -1,29 +1,16 @@ import json import warnings -from dataclasses import dataclass -from dataclasses import field -from typing import Any -from typing import Callable -from typing import Dict -from typing import Iterable -from typing import List -from typing import Optional -from typing import Sequence -from typing import Type -from typing import Union - -from xsdata.exceptions import ConverterWarning -from xsdata.exceptions import ParserError -from xsdata.formats.bindings import AbstractParser -from xsdata.formats.bindings import T +from dataclasses import dataclass, field +from typing import Any, Callable, Dict, Iterable, List, Optional, Sequence, Type, Union + +from xsdata.exceptions import ConverterWarning, ParserError +from xsdata.formats.bindings import AbstractParser, T from xsdata.formats.converter import converter from xsdata.formats.dataclass.context import XmlContext -from xsdata.formats.dataclass.models.elements import XmlMeta -from xsdata.formats.dataclass.models.elements import XmlVar +from xsdata.formats.dataclass.models.elements import XmlMeta, XmlVar from xsdata.formats.dataclass.parsers.config import ParserConfig from xsdata.formats.dataclass.parsers.utils import ParserUtils -from xsdata.formats.dataclass.typing import get_args -from xsdata.formats.dataclass.typing import get_origin +from xsdata.formats.dataclass.typing import get_args, get_origin from xsdata.utils import collections from xsdata.utils.constants import EMPTY_MAP diff --git a/xsdata/formats/dataclass/parsers/mixins.py b/xsdata/formats/dataclass/parsers/mixins.py index 04a348b2f..86ea40709 100644 --- a/xsdata/formats/dataclass/parsers/mixins.py +++ b/xsdata/formats/dataclass/parsers/mixins.py @@ -1,10 +1,5 @@ import abc -from typing import Any -from typing import Dict -from typing import List -from typing import Optional -from typing import Tuple -from typing import Type +from typing import Any, Dict, List, Optional, Tuple, Type from xsdata.exceptions import XmlHandlerError from xsdata.formats.bindings import AbstractParser diff --git a/xsdata/formats/dataclass/parsers/nodes/element.py b/xsdata/formats/dataclass/parsers/nodes/element.py index 5b891c655..9584f44af 100644 --- a/xsdata/formats/dataclass/parsers/nodes/element.py +++ b/xsdata/formats/dataclass/parsers/nodes/element.py @@ -1,23 +1,15 @@ -from typing import Any -from typing import Dict -from typing import List -from typing import Optional -from typing import Set -from typing import Type +from typing import Any, Dict, List, Optional, Set, Type from xsdata.exceptions import ParserError from xsdata.formats.converter import converter from xsdata.formats.dataclass.context import XmlContext -from xsdata.formats.dataclass.models.elements import XmlMeta -from xsdata.formats.dataclass.models.elements import XmlVar +from xsdata.formats.dataclass.models.elements import XmlMeta, XmlVar from xsdata.formats.dataclass.parsers import nodes from xsdata.formats.dataclass.parsers.config import ParserConfig from xsdata.formats.dataclass.parsers.mixins import XmlNode -from xsdata.formats.dataclass.parsers.utils import ParserUtils -from xsdata.formats.dataclass.parsers.utils import PendingCollection +from xsdata.formats.dataclass.parsers.utils import ParserUtils, PendingCollection from xsdata.logger import logger -from xsdata.models.enums import DataType -from xsdata.models.enums import Namespace +from xsdata.models.enums import DataType, Namespace from xsdata.utils.namespaces import target_uri @@ -115,7 +107,7 @@ def bind_content( self.bind_wild_text(params, wild_var, text, tail) self.tail_processed = True - for key in params.keys(): + for key in params: if isinstance(params[key], PendingCollection): params[key] = params[key].evaluate() diff --git a/xsdata/formats/dataclass/parsers/nodes/primitive.py b/xsdata/formats/dataclass/parsers/nodes/primitive.py index 083e6effb..a226e8003 100644 --- a/xsdata/formats/dataclass/parsers/nodes/primitive.py +++ b/xsdata/formats/dataclass/parsers/nodes/primitive.py @@ -1,7 +1,4 @@ -from typing import Dict -from typing import List -from typing import Optional -from typing import Type +from typing import Dict, List, Optional, Type from xsdata.exceptions import XmlContextError from xsdata.formats.dataclass.models.elements import XmlVar @@ -40,10 +37,7 @@ def bind( ) if obj is None and not self.var.nillable: - if bytes in self.var.types: - obj = b"" - else: - obj = "" + obj = b"" if bytes in self.var.types else "" if self.var.derived: obj = self.derived_factory(qname=qname, value=obj) diff --git a/xsdata/formats/dataclass/parsers/nodes/skip.py b/xsdata/formats/dataclass/parsers/nodes/skip.py index 35f050ca1..2044c2538 100644 --- a/xsdata/formats/dataclass/parsers/nodes/skip.py +++ b/xsdata/formats/dataclass/parsers/nodes/skip.py @@ -1,6 +1,4 @@ -from typing import Dict -from typing import List -from typing import Optional +from typing import Dict, List, Optional from xsdata.formats.dataclass.parsers.mixins import XmlNode diff --git a/xsdata/formats/dataclass/parsers/nodes/standard.py b/xsdata/formats/dataclass/parsers/nodes/standard.py index e04f364a5..01e6a9e91 100644 --- a/xsdata/formats/dataclass/parsers/nodes/standard.py +++ b/xsdata/formats/dataclass/parsers/nodes/standard.py @@ -1,7 +1,4 @@ -from typing import Dict -from typing import List -from typing import Optional -from typing import Type +from typing import Dict, List, Optional, Type from xsdata.exceptions import XmlContextError from xsdata.formats.dataclass.parsers.mixins import XmlNode diff --git a/xsdata/formats/dataclass/parsers/nodes/union.py b/xsdata/formats/dataclass/parsers/nodes/union.py index 5029159d1..9f88b0127 100644 --- a/xsdata/formats/dataclass/parsers/nodes/union.py +++ b/xsdata/formats/dataclass/parsers/nodes/union.py @@ -1,21 +1,14 @@ import copy import warnings -from typing import Any -from typing import Dict -from typing import List -from typing import Optional -from typing import Tuple -from typing import Type - -from xsdata.exceptions import ConverterWarning -from xsdata.exceptions import ParserError +from typing import Any, Dict, List, Optional, Tuple, Type + +from xsdata.exceptions import ConverterWarning, ParserError from xsdata.formats.bindings import T from xsdata.formats.dataclass.context import XmlContext from xsdata.formats.dataclass.models.elements import XmlVar from xsdata.formats.dataclass.parsers.bases import NodeParser from xsdata.formats.dataclass.parsers.config import ParserConfig -from xsdata.formats.dataclass.parsers.mixins import EventsHandler -from xsdata.formats.dataclass.parsers.mixins import XmlNode +from xsdata.formats.dataclass.parsers.mixins import EventsHandler, XmlNode from xsdata.formats.dataclass.parsers.utils import ParserUtils from xsdata.utils.namespaces import target_uri diff --git a/xsdata/formats/dataclass/parsers/nodes/wildcard.py b/xsdata/formats/dataclass/parsers/nodes/wildcard.py index 5d00100e2..288b83318 100644 --- a/xsdata/formats/dataclass/parsers/nodes/wildcard.py +++ b/xsdata/formats/dataclass/parsers/nodes/wildcard.py @@ -1,7 +1,4 @@ -from typing import Dict -from typing import List -from typing import Optional -from typing import Type +from typing import Dict, List, Optional, Type from xsdata.formats.dataclass.models.elements import XmlVar from xsdata.formats.dataclass.parsers.mixins import XmlNode diff --git a/xsdata/formats/dataclass/parsers/nodes/wrapper.py b/xsdata/formats/dataclass/parsers/nodes/wrapper.py index a72f9da0d..1763c1dc1 100644 --- a/xsdata/formats/dataclass/parsers/nodes/wrapper.py +++ b/xsdata/formats/dataclass/parsers/nodes/wrapper.py @@ -1,6 +1,4 @@ -from typing import Dict -from typing import List -from typing import Optional +from typing import Dict, List, Optional from xsdata.formats.dataclass.parsers.mixins import XmlNode from xsdata.formats.dataclass.parsers.nodes.element import ElementNode diff --git a/xsdata/formats/dataclass/parsers/tree.py b/xsdata/formats/dataclass/parsers/tree.py index ed8fbd321..68bdf720c 100644 --- a/xsdata/formats/dataclass/parsers/tree.py +++ b/xsdata/formats/dataclass/parsers/tree.py @@ -1,17 +1,10 @@ -from dataclasses import dataclass -from dataclasses import field -from typing import Dict -from typing import List -from typing import Optional -from typing import Type +from dataclasses import dataclass, field +from typing import Dict, List, Optional, Type -from xsdata.formats.dataclass.models.elements import XmlType -from xsdata.formats.dataclass.models.elements import XmlVar -from xsdata.formats.dataclass.parsers.bases import NodeParser -from xsdata.formats.dataclass.parsers.bases import Parsed +from xsdata.formats.dataclass.models.elements import XmlType, XmlVar +from xsdata.formats.dataclass.parsers.bases import NodeParser, Parsed from xsdata.formats.dataclass.parsers.handlers import default_handler -from xsdata.formats.dataclass.parsers.mixins import XmlHandler -from xsdata.formats.dataclass.parsers.mixins import XmlNode +from xsdata.formats.dataclass.parsers.mixins import XmlHandler, XmlNode from xsdata.formats.dataclass.parsers.nodes.wildcard import WildcardNode diff --git a/xsdata/formats/dataclass/parsers/utils.py b/xsdata/formats/dataclass/parsers/utils.py index d8c42649f..df2bfcca2 100644 --- a/xsdata/formats/dataclass/parsers/utils.py +++ b/xsdata/formats/dataclass/parsers/utils.py @@ -1,18 +1,9 @@ from collections import UserList -from typing import Any -from typing import Callable -from typing import Dict -from typing import Iterable -from typing import Optional -from typing import Sequence -from typing import Type - -from xsdata.formats.converter import converter -from xsdata.formats.converter import QNameConverter +from typing import Any, Callable, Dict, Iterable, Optional, Sequence, Type + +from xsdata.formats.converter import QNameConverter, converter from xsdata.models.enums import QNames -from xsdata.utils import collections -from xsdata.utils import constants -from xsdata.utils import text +from xsdata.utils import collections, constants, text from xsdata.utils.namespaces import build_qname diff --git a/xsdata/formats/dataclass/parsers/xml.py b/xsdata/formats/dataclass/parsers/xml.py index 3f8926304..bc3d3a184 100644 --- a/xsdata/formats/dataclass/parsers/xml.py +++ b/xsdata/formats/dataclass/parsers/xml.py @@ -1,16 +1,9 @@ -from dataclasses import dataclass -from dataclasses import field -from typing import Any -from typing import Dict -from typing import List -from typing import Optional -from typing import Type - -from xsdata.formats.dataclass.parsers.bases import NodeParser -from xsdata.formats.dataclass.parsers.bases import Parsed +from dataclasses import dataclass, field +from typing import Any, Dict, List, Optional, Type + +from xsdata.formats.dataclass.parsers.bases import NodeParser, Parsed from xsdata.formats.dataclass.parsers.handlers import default_handler -from xsdata.formats.dataclass.parsers.mixins import XmlHandler -from xsdata.formats.dataclass.parsers.mixins import XmlNode +from xsdata.formats.dataclass.parsers.mixins import XmlHandler, XmlNode from xsdata.models.enums import EventType from xsdata.utils.namespaces import local_name from xsdata.utils.text import snake_case diff --git a/xsdata/formats/dataclass/serializers/__init__.py b/xsdata/formats/dataclass/serializers/__init__.py index 55ba1f1ff..839a00980 100644 --- a/xsdata/formats/dataclass/serializers/__init__.py +++ b/xsdata/formats/dataclass/serializers/__init__.py @@ -1,6 +1,5 @@ from xsdata.formats.dataclass.serializers.code import PycodeSerializer -from xsdata.formats.dataclass.serializers.json import DictFactory -from xsdata.formats.dataclass.serializers.json import JsonSerializer +from xsdata.formats.dataclass.serializers.json import DictFactory, JsonSerializer from xsdata.formats.dataclass.serializers.xml import XmlSerializer __all__ = [ diff --git a/xsdata/formats/dataclass/serializers/code.py b/xsdata/formats/dataclass/serializers/code.py index 1f46bf49b..da5d09bcd 100644 --- a/xsdata/formats/dataclass/serializers/code.py +++ b/xsdata/formats/dataclass/serializers/code.py @@ -1,13 +1,7 @@ -from dataclasses import dataclass -from dataclasses import field +from dataclasses import dataclass, field from enum import Enum from io import StringIO -from typing import Any -from typing import List -from typing import Mapping -from typing import Set -from typing import TextIO -from typing import Type +from typing import Any, List, Mapping, Set, TextIO, Type from xsdata.formats.bindings import AbstractSerializer from xsdata.formats.dataclass.context import XmlContext diff --git a/xsdata/formats/dataclass/serializers/config.py b/xsdata/formats/dataclass/serializers/config.py index 3cc0699f4..e39f7af51 100644 --- a/xsdata/formats/dataclass/serializers/config.py +++ b/xsdata/formats/dataclass/serializers/config.py @@ -1,6 +1,4 @@ -from typing import Callable -from typing import Dict -from typing import Optional +from typing import Callable, Dict, Optional class SerializerConfig: diff --git a/xsdata/formats/dataclass/serializers/json.py b/xsdata/formats/dataclass/serializers/json.py index 26be13c10..cc4c6e5cc 100644 --- a/xsdata/formats/dataclass/serializers/json.py +++ b/xsdata/formats/dataclass/serializers/json.py @@ -1,17 +1,9 @@ import json import warnings -from dataclasses import dataclass -from dataclasses import field +from dataclasses import dataclass, field from enum import Enum from io import StringIO -from typing import Any -from typing import Callable -from typing import Dict -from typing import Iterator -from typing import Optional -from typing import TextIO -from typing import Tuple -from typing import Union +from typing import Any, Callable, Dict, Iterator, Optional, TextIO, Tuple, Union from xsdata.formats.bindings import AbstractSerializer from xsdata.formats.converter import converter diff --git a/xsdata/formats/dataclass/serializers/mixins.py b/xsdata/formats/dataclass/serializers/mixins.py index ad31da6d7..a7d19200c 100644 --- a/xsdata/formats/dataclass/serializers/mixins.py +++ b/xsdata/formats/dataclass/serializers/mixins.py @@ -1,23 +1,13 @@ -from typing import Any -from typing import Dict -from typing import Generator -from typing import List -from typing import Optional -from typing import TextIO -from typing import Tuple +from typing import Any, Dict, Generator, List, Optional, TextIO, Tuple from xml.etree.ElementTree import QName from xml.sax.handler import ContentHandler from xsdata.exceptions import XmlWriterError from xsdata.formats.converter import converter from xsdata.formats.dataclass.serializers.config import SerializerConfig -from xsdata.models.enums import DataType -from xsdata.models.enums import Namespace -from xsdata.models.enums import QNames +from xsdata.models.enums import DataType, Namespace, QNames from xsdata.utils.constants import EMPTY_MAP -from xsdata.utils.namespaces import generate_prefix -from xsdata.utils.namespaces import prefix_exists -from xsdata.utils.namespaces import split_qname +from xsdata.utils.namespaces import generate_prefix, prefix_exists, split_qname XSI_NIL = (Namespace.XSI.uri, "nil") @@ -245,7 +235,7 @@ def flush_start(self, is_nil: bool = True): if not is_nil: self.attrs.pop(XSI_NIL, None) - for name in self.attrs.keys(): + for name in self.attrs: self.add_namespace(name[0]) self.reset_default_namespace() diff --git a/xsdata/formats/dataclass/serializers/writers/lxml.py b/xsdata/formats/dataclass/serializers/writers/lxml.py index 4d5730eca..af949095e 100644 --- a/xsdata/formats/dataclass/serializers/writers/lxml.py +++ b/xsdata/formats/dataclass/serializers/writers/lxml.py @@ -1,9 +1,6 @@ -from typing import Dict -from typing import Generator -from typing import TextIO +from typing import Dict, Generator, TextIO -from lxml.etree import indent -from lxml.etree import tostring +from lxml.etree import indent, tostring from lxml.sax import ElementTreeContentHandler from xsdata.formats.dataclass.serializers.config import SerializerConfig diff --git a/xsdata/formats/dataclass/serializers/writers/native.py b/xsdata/formats/dataclass/serializers/writers/native.py index 59d7be0d0..31a68ee00 100644 --- a/xsdata/formats/dataclass/serializers/writers/native.py +++ b/xsdata/formats/dataclass/serializers/writers/native.py @@ -1,5 +1,4 @@ -from typing import Dict -from typing import TextIO +from typing import Dict, TextIO from xml.sax.saxutils import XMLGenerator from xsdata.formats.dataclass.serializers.config import SerializerConfig diff --git a/xsdata/formats/dataclass/serializers/xml.py b/xsdata/formats/dataclass/serializers/xml.py index 1d3c1ec12..688870dc0 100644 --- a/xsdata/formats/dataclass/serializers/xml.py +++ b/xsdata/formats/dataclass/serializers/xml.py @@ -1,33 +1,30 @@ -from dataclasses import dataclass -from dataclasses import field +from dataclasses import dataclass, field from enum import Enum from io import StringIO -from typing import Any -from typing import Dict -from typing import Generator -from typing import Iterable -from typing import Iterator -from typing import List -from typing import Optional -from typing import TextIO -from typing import Tuple -from typing import Type +from typing import ( + Any, + Dict, + Generator, + Iterable, + Iterator, + List, + Optional, + TextIO, + Tuple, + Type, +) from xml.etree.ElementTree import QName from xsdata.exceptions import SerializerError from xsdata.formats.bindings import AbstractSerializer from xsdata.formats.converter import converter from xsdata.formats.dataclass.context import XmlContext -from xsdata.formats.dataclass.models.elements import XmlMeta -from xsdata.formats.dataclass.models.elements import XmlVar +from xsdata.formats.dataclass.models.elements import XmlMeta, XmlVar from xsdata.formats.dataclass.serializers.config import SerializerConfig -from xsdata.formats.dataclass.serializers.mixins import XmlWriter -from xsdata.formats.dataclass.serializers.mixins import XmlWriterEvent +from xsdata.formats.dataclass.serializers.mixins import XmlWriter, XmlWriterEvent from xsdata.formats.dataclass.serializers.writers import default_writer -from xsdata.models.enums import DataType -from xsdata.models.enums import QNames -from xsdata.utils import collections -from xsdata.utils import namespaces +from xsdata.models.enums import DataType, QNames +from xsdata.utils import collections, namespaces from xsdata.utils.constants import EMPTY_MAP NoneStr = Optional[str] diff --git a/xsdata/formats/dataclass/transports.py b/xsdata/formats/dataclass/transports.py index d135f5e32..9e350cdae 100644 --- a/xsdata/formats/dataclass/transports.py +++ b/xsdata/formats/dataclass/transports.py @@ -1,10 +1,7 @@ import abc -from typing import Any -from typing import Dict -from typing import Optional +from typing import Any, Dict, Optional -from requests import Response -from requests import Session +from requests import Response, Session class Transport(abc.ABC): diff --git a/xsdata/formats/dataclass/typing.py b/xsdata/formats/dataclass/typing.py index 446c76775..d92cdaefa 100644 --- a/xsdata/formats/dataclass/typing.py +++ b/xsdata/formats/dataclass/typing.py @@ -1,13 +1,7 @@ import sys -from typing import Any -from typing import Iterator -from typing import Tuple -from typing import Type -from typing import TypeVar -from typing import Union - -from typing_extensions import get_args -from typing_extensions import get_origin +from typing import Any, Iterator, Tuple, Type, TypeVar, Union + +from typing_extensions import get_args, get_origin NONE_TYPE = type(None) diff --git a/xsdata/formats/mixins.py b/xsdata/formats/mixins.py index 7ad105c12..39caa45c9 100644 --- a/xsdata/formats/mixins.py +++ b/xsdata/formats/mixins.py @@ -1,18 +1,14 @@ import abc import datetime from pathlib import Path -from typing import Dict -from typing import Iterator -from typing import List -from typing import NamedTuple +from typing import Dict, Iterator, List, NamedTuple from xsdata import __version__ from xsdata.codegen.models import Class from xsdata.exceptions import CodeGenerationError from xsdata.models.config import GeneratorConfig from xsdata.utils.collections import group_by -from xsdata.utils.package import module_path -from xsdata.utils.package import package_path +from xsdata.utils.package import module_path, package_path class GeneratorResult(NamedTuple): diff --git a/xsdata/models/config.py b/xsdata/models/config.py index bca2c7e8a..fc9aa36b3 100644 --- a/xsdata/models/config.py +++ b/xsdata/models/config.py @@ -1,21 +1,13 @@ import re import sys import warnings -from dataclasses import dataclass -from dataclasses import field +from dataclasses import dataclass, field from enum import Enum from pathlib import Path -from typing import Any -from typing import Callable -from typing import Dict -from typing import List -from typing import Optional -from typing import Pattern -from typing import TextIO +from typing import Any, Callable, Dict, List, Optional, Pattern, TextIO from xsdata import __version__ -from xsdata.exceptions import CodeGenerationWarning -from xsdata.exceptions import GeneratorConfigError +from xsdata.exceptions import CodeGenerationWarning, GeneratorConfigError from xsdata.formats.dataclass.context import XmlContext from xsdata.formats.dataclass.parsers import XmlParser from xsdata.formats.dataclass.parsers.config import ParserConfig @@ -24,12 +16,8 @@ from xsdata.formats.dataclass.serializers.writers import XmlEventWriter from xsdata.logger import logger from xsdata.models.enums import Namespace -from xsdata.models.mixins import array_element -from xsdata.models.mixins import attribute -from xsdata.models.mixins import element -from xsdata.models.mixins import text_node -from xsdata.utils import objects -from xsdata.utils import text +from xsdata.models.mixins import array_element, attribute, element, text_node +from xsdata.utils import objects, text class StructureStyle(Enum): diff --git a/xsdata/models/datatype.py b/xsdata/models/datatype.py index 282f67e49..ef65d1f2f 100644 --- a/xsdata/models/datatype.py +++ b/xsdata/models/datatype.py @@ -2,21 +2,18 @@ import operator import re from collections import UserString -from typing import Any -from typing import Callable -from typing import Dict -from typing import NamedTuple -from typing import Optional -from typing import Union - -from xsdata.utils.dates import calculate_offset -from xsdata.utils.dates import calculate_timezone -from xsdata.utils.dates import format_date -from xsdata.utils.dates import format_offset -from xsdata.utils.dates import format_time -from xsdata.utils.dates import parse_date_args -from xsdata.utils.dates import validate_date -from xsdata.utils.dates import validate_time +from typing import Any, Callable, Dict, NamedTuple, Optional, Union + +from xsdata.utils.dates import ( + calculate_offset, + calculate_timezone, + format_date, + format_offset, + format_time, + parse_date_args, + validate_date, + validate_time, +) xml_duration_re = re.compile( r"^([-]?)P" diff --git a/xsdata/models/dtd.py b/xsdata/models/dtd.py index dbec4cf64..7bc307a05 100644 --- a/xsdata/models/dtd.py +++ b/xsdata/models/dtd.py @@ -1,8 +1,6 @@ import enum from dataclasses import dataclass -from typing import Dict -from typing import List -from typing import Optional +from typing import Dict, List, Optional from xsdata.models.enums import DataType from xsdata.utils.namespaces import build_qname diff --git a/xsdata/models/enums.py b/xsdata/models/enums.py index eb2bd9130..986a196e7 100644 --- a/xsdata/models/enums.py +++ b/xsdata/models/enums.py @@ -2,21 +2,18 @@ from decimal import Decimal from enum import Enum from pathlib import Path -from typing import Any -from typing import Callable -from typing import Dict -from typing import Optional -from typing import Tuple -from typing import Type +from typing import Any, Callable, Dict, Optional, Tuple, Type from xml.etree.ElementTree import QName -from xsdata.models.datatype import XmlBase64Binary -from xsdata.models.datatype import XmlDate -from xsdata.models.datatype import XmlDateTime -from xsdata.models.datatype import XmlDuration -from xsdata.models.datatype import XmlHexBinary -from xsdata.models.datatype import XmlPeriod -from xsdata.models.datatype import XmlTime +from xsdata.models.datatype import ( + XmlBase64Binary, + XmlDate, + XmlDateTime, + XmlDuration, + XmlHexBinary, + XmlPeriod, + XmlTime, +) COMMON_SCHEMA_DIR = Path(__file__).absolute().parent.parent.joinpath("schemas/") diff --git a/xsdata/models/mixins.py b/xsdata/models/mixins.py index e4421a15a..4c4f2a19d 100644 --- a/xsdata/models/mixins.py +++ b/xsdata/models/mixins.py @@ -1,19 +1,9 @@ -from dataclasses import dataclass -from dataclasses import field -from dataclasses import fields -from typing import Any -from typing import Callable -from typing import Dict -from typing import Iterator -from typing import List -from typing import Optional +from dataclasses import dataclass, field, fields +from typing import Any, Callable, Dict, Iterator, List, Optional from xsdata.exceptions import SchemaValueError from xsdata.formats.dataclass.models.elements import XmlType -from xsdata.models.enums import DataType -from xsdata.models.enums import FormType -from xsdata.models.enums import Namespace -from xsdata.models.enums import NamespaceType +from xsdata.models.enums import DataType, FormType, Namespace, NamespaceType from xsdata.utils import text from xsdata.utils.constants import return_true diff --git a/xsdata/models/wsdl.py b/xsdata/models/wsdl.py index 3df87a6e0..ea5403bde 100644 --- a/xsdata/models/wsdl.py +++ b/xsdata/models/wsdl.py @@ -1,19 +1,11 @@ -from dataclasses import dataclass -from dataclasses import field -from typing import Dict -from typing import Iterator -from typing import List -from typing import Optional -from typing import TypeVar +from dataclasses import dataclass, field +from typing import Dict, Iterator, List, Optional, TypeVar from xsdata.codegen.models import get_name from xsdata.exceptions import DefinitionsValueError from xsdata.formats.dataclass.models.generics import AnyElement from xsdata.models.enums import Namespace -from xsdata.models.mixins import array_any_element -from xsdata.models.mixins import array_element -from xsdata.models.mixins import attribute -from xsdata.models.mixins import element +from xsdata.models.mixins import array_any_element, array_element, attribute, element from xsdata.models.xsd import Schema from xsdata.utils import collections diff --git a/xsdata/models/xsd.py b/xsdata/models/xsd.py index 759cc5d52..3e066cda9 100644 --- a/xsdata/models/xsd.py +++ b/xsdata/models/xsd.py @@ -1,27 +1,28 @@ import sys import textwrap -from dataclasses import dataclass -from dataclasses import field +from dataclasses import dataclass, field from typing import Any as Anything -from typing import Dict -from typing import Iterator +from typing import Dict, Iterator, Optional from typing import List as Array -from typing import Optional from typing import Union as UnionType from xsdata.formats.dataclass.serializers import XmlSerializer from xsdata.formats.dataclass.serializers.config import SerializerConfig -from xsdata.models.enums import DataType -from xsdata.models.enums import FormType -from xsdata.models.enums import Mode -from xsdata.models.enums import Namespace -from xsdata.models.enums import ProcessType -from xsdata.models.enums import UseType -from xsdata.models.mixins import array_any_element -from xsdata.models.mixins import array_element -from xsdata.models.mixins import attribute -from xsdata.models.mixins import element -from xsdata.models.mixins import ElementBase +from xsdata.models.enums import ( + DataType, + FormType, + Mode, + Namespace, + ProcessType, + UseType, +) +from xsdata.models.mixins import ( + ElementBase, + array_any_element, + array_element, + attribute, + element, +) from xsdata.utils import text from xsdata.utils.collections import unique_sequence from xsdata.utils.constants import DEFAULT_ATTR_NAME diff --git a/xsdata/utils/click.py b/xsdata/utils/click.py index d52274415..b3ab34871 100644 --- a/xsdata/utils/click.py +++ b/xsdata/utils/click.py @@ -1,16 +1,17 @@ import enum import logging -from dataclasses import fields -from dataclasses import is_dataclass -from typing import Any -from typing import Callable -from typing import Dict -from typing import get_type_hints -from typing import Iterator -from typing import List -from typing import Type -from typing import TypeVar -from typing import Union +from dataclasses import fields, is_dataclass +from typing import ( + Any, + Callable, + Dict, + Iterator, + List, + Type, + TypeVar, + Union, + get_type_hints, +) import click from click import Command diff --git a/xsdata/utils/collections.py b/xsdata/utils/collections.py index 9ac3f8581..fd744cd28 100644 --- a/xsdata/utils/collections.py +++ b/xsdata/utils/collections.py @@ -1,14 +1,16 @@ from collections import defaultdict -from typing import Any -from typing import Callable -from typing import Dict -from typing import Iterable -from typing import Iterator -from typing import List -from typing import Optional -from typing import Sequence -from typing import Set -from typing import TypeVar +from typing import ( + Any, + Callable, + Dict, + Iterable, + Iterator, + List, + Optional, + Sequence, + Set, + TypeVar, +) T = TypeVar("T") diff --git a/xsdata/utils/constants.py b/xsdata/utils/constants.py index cc6c02b26..b24650761 100644 --- a/xsdata/utils/constants.py +++ b/xsdata/utils/constants.py @@ -1,8 +1,5 @@ import sys -from typing import Any -from typing import Dict -from typing import Sequence -from typing import Tuple +from typing import Any, Dict, Sequence, Tuple EMPTY_MAP: Dict = {} EMPTY_SEQUENCE: Sequence = [] diff --git a/xsdata/utils/dates.py b/xsdata/utils/dates.py index acc4ecbc1..267c97480 100644 --- a/xsdata/utils/dates.py +++ b/xsdata/utils/dates.py @@ -1,9 +1,6 @@ import datetime from calendar import isleap -from typing import Any -from typing import Generator -from typing import Optional -from typing import Union +from typing import Any, Generator, Optional, Union def parse_date_args(value: Any, fmt: str) -> Generator: @@ -109,6 +106,9 @@ def validate_time(hour: int, minute: int, second: int, franctional_second: int): raise ValueError("Fractional second must be in 0..999999999") +SIMPLE_TWO_DIGITS_FORMATS = ("d", "m", "H", "M") + + class DateTimeParser: def __init__(self, value: str, fmt: str): self.format = fmt @@ -155,16 +155,10 @@ def skip(self, char: str): self.vidx += 1 def parse_var(self, var: str): - if var == "d": - yield self.parse_digits(2) - elif var == "m": + if var in SIMPLE_TWO_DIGITS_FORMATS: yield self.parse_digits(2) elif var == "Y": yield self.parse_year() - elif var == "H": - yield self.parse_digits(2) - elif var == "M": - yield self.parse_digits(2) elif var == "S": yield self.parse_digits(2) diff --git a/xsdata/utils/downloader.py b/xsdata/utils/downloader.py index 10287dffe..8a73a5a37 100644 --- a/xsdata/utils/downloader.py +++ b/xsdata/utils/downloader.py @@ -1,13 +1,10 @@ import os import re from pathlib import Path -from typing import Dict -from typing import Optional -from typing import Union +from typing import Dict, Optional, Union from xsdata.codegen import opener -from xsdata.codegen.parsers import DefinitionsParser -from xsdata.codegen.parsers import SchemaParser +from xsdata.codegen.parsers import DefinitionsParser, SchemaParser from xsdata.logger import logger from xsdata.models.wsdl import Definitions from xsdata.models.xsd import Schema diff --git a/xsdata/utils/graphs.py b/xsdata/utils/graphs.py index 704f5038a..bd442821c 100644 --- a/xsdata/utils/graphs.py +++ b/xsdata/utils/graphs.py @@ -1,7 +1,4 @@ -from typing import Dict -from typing import Iterator -from typing import List -from typing import Set +from typing import Dict, Iterator, List, Set def strongly_connected_components(edges: Dict[str, List[str]]) -> Iterator[Set[str]]: diff --git a/xsdata/utils/namespaces.py b/xsdata/utils/namespaces.py index c9d523657..b41bb2350 100644 --- a/xsdata/utils/namespaces.py +++ b/xsdata/utils/namespaces.py @@ -1,8 +1,6 @@ import functools import re -from typing import Dict -from typing import Optional -from typing import Tuple +from typing import Dict, Optional, Tuple from xsdata.models.enums import Namespace from xsdata.utils import text @@ -48,11 +46,7 @@ def prefix_exists(uri: str, ns_map: Dict) -> bool: def is_default(uri: str, ns_map: Dict) -> bool: """Check if the uri exists and it has no prefix.""" - for prefix, ns in ns_map.items(): - if uri == ns and not prefix: - return True - - return False + return any(uri == ns and not prefix for prefix, ns in ns_map.items()) def clean_prefixes(ns_map: Dict) -> Dict: @@ -132,7 +126,7 @@ def is_ncname(name: Optional[str]) -> bool: return False char = name[0] - if not char.isalpha() and not char == "_": + if not char.isalpha() and char != "_": return False for char in name[1:]: diff --git a/xsdata/utils/testing.py b/xsdata/utils/testing.py index 9187009a4..ee469de6a 100644 --- a/xsdata/utils/testing.py +++ b/xsdata/utils/testing.py @@ -4,37 +4,30 @@ import random import unittest from dataclasses import is_dataclass -from typing import Any -from typing import Callable -from typing import Dict -from typing import List -from typing import Optional -from typing import Sequence -from typing import Type -from typing import TypeVar - -from xsdata.codegen.models import Attr -from xsdata.codegen.models import AttrType -from xsdata.codegen.models import Class -from xsdata.codegen.models import Extension -from xsdata.codegen.models import Import -from xsdata.codegen.models import Restrictions -from xsdata.codegen.models import Status -from xsdata.formats.dataclass.models.elements import XmlMeta -from xsdata.formats.dataclass.models.elements import XmlType -from xsdata.formats.dataclass.models.elements import XmlVar -from xsdata.models.dtd import Dtd -from xsdata.models.dtd import DtdAttribute -from xsdata.models.dtd import DtdAttributeDefault -from xsdata.models.dtd import DtdAttributeType -from xsdata.models.dtd import DtdContent -from xsdata.models.dtd import DtdContentOccur -from xsdata.models.dtd import DtdContentType -from xsdata.models.dtd import DtdElement -from xsdata.models.dtd import DtdElementType -from xsdata.models.enums import DataType -from xsdata.models.enums import Namespace -from xsdata.models.enums import Tag +from typing import Any, Callable, Dict, List, Optional, Sequence, Type, TypeVar + +from xsdata.codegen.models import ( + Attr, + AttrType, + Class, + Extension, + Import, + Restrictions, + Status, +) +from xsdata.formats.dataclass.models.elements import XmlMeta, XmlType, XmlVar +from xsdata.models.dtd import ( + Dtd, + DtdAttribute, + DtdAttributeDefault, + DtdAttributeType, + DtdContent, + DtdContentOccur, + DtdContentType, + DtdElement, + DtdElementType, +) +from xsdata.models.enums import DataType, Namespace, Tag from xsdata.utils.collections import first from xsdata.utils.namespaces import build_qname diff --git a/xsdata/utils/text.py b/xsdata/utils/text.py index 921711687..dabd0f88f 100644 --- a/xsdata/utils/text.py +++ b/xsdata/utils/text.py @@ -1,9 +1,6 @@ import re import string -from typing import Any -from typing import List -from typing import Match -from typing import Tuple +from typing import Any, List, Match, Tuple stop_words = { "",