diff --git a/pyproject.toml b/pyproject.toml index fc09e391..54c9e380 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -347,6 +347,9 @@ ignore = [ ] task-tags = ["cspell"] +[tool.ruff.lint.flake8-tidy-imports] +ban-relative-imports = "all" + [tool.ruff.lint.isort] split-on-trailing-comma = false diff --git a/src/qrules/__init__.py b/src/qrules/__init__.py index 5c8eda91..1cc2941f 100644 --- a/src/qrules/__init__.py +++ b/src/qrules/__init__.py @@ -22,9 +22,9 @@ import attrs -from . import io -from .combinatorics import InitialFacts, StateDefinition, create_initial_facts -from .conservation_rules import ( +from qrules import io +from qrules.combinatorics import InitialFacts, StateDefinition, create_initial_facts +from qrules.conservation_rules import ( BaryonNumberConservation, BottomnessConservation, ChargeConservation, @@ -45,17 +45,22 @@ parity_conservation, spin_magnitude_conservation, ) -from .particle import ParticleCollection, load_pdg -from .quantum_numbers import InteractionProperties -from .settings import ( +from qrules.particle import ParticleCollection, load_pdg +from qrules.quantum_numbers import InteractionProperties +from qrules.settings import ( ADDITIONAL_PARTICLES_DEFINITIONS_PATH, InteractionType, _halves_domain, _int_domain, ) -from .solving import NodeSettings, QNResult, Rule, validate_full_solution -from .topology import MutableTransition, create_n_body_topology -from .transition import EdgeSettings, ProblemSet, ReactionInfo, StateTransitionManager +from qrules.solving import NodeSettings, QNResult, Rule, validate_full_solution +from qrules.topology import MutableTransition, create_n_body_topology +from qrules.transition import ( + EdgeSettings, + ProblemSet, + ReactionInfo, + StateTransitionManager, +) def check_reaction_violations( # noqa: C901, PLR0917 diff --git a/src/qrules/argument_handling.py b/src/qrules/argument_handling.py index add0b0d7..d38b0f60 100644 --- a/src/qrules/argument_handling.py +++ b/src/qrules/argument_handling.py @@ -23,12 +23,12 @@ import attrs -from .conservation_rules import ( +from qrules.conservation_rules import ( ConservationRule, EdgeQNConservationRule, GraphElementRule, ) -from .quantum_numbers import EdgeQuantumNumber, NodeQuantumNumber, Parity +from qrules.quantum_numbers import EdgeQuantumNumber, NodeQuantumNumber, Parity Scalar = Union[int, float] diff --git a/src/qrules/conservation_rules.py b/src/qrules/conservation_rules.py index 685439b2..4eacddda 100644 --- a/src/qrules/conservation_rules.py +++ b/src/qrules/conservation_rules.py @@ -54,9 +54,9 @@ from attrs import define, field, frozen from attrs.converters import optional -from .quantum_numbers import EdgeQuantumNumbers as EdgeQN -from .quantum_numbers import NodeQuantumNumbers as NodeQN -from .quantum_numbers import arange +from qrules.quantum_numbers import EdgeQuantumNumbers as EdgeQN +from qrules.quantum_numbers import NodeQuantumNumbers as NodeQN +from qrules.quantum_numbers import arange if sys.version_info >= (3, 8): from typing import Protocol diff --git a/src/qrules/io/__init__.py b/src/qrules/io/__init__.py index 5c2cbb09..915c45cb 100644 --- a/src/qrules/io/__init__.py +++ b/src/qrules/io/__init__.py @@ -14,11 +14,10 @@ import attrs import yaml +from qrules.io import _dict, _dot from qrules.particle import Particle, ParticleCollection from qrules.topology import Topology -from . import _dict, _dot - def asdict(instance: object) -> dict: if isinstance(instance, ParticleCollection): diff --git a/src/qrules/particle.py b/src/qrules/particle.py index ab724641..81085ff8 100644 --- a/src/qrules/particle.py +++ b/src/qrules/particle.py @@ -32,8 +32,8 @@ from attrs.converters import optional from attrs.validators import instance_of -from .conservation_rules import GellMannNishijimaInput, gellmann_nishijima -from .quantum_numbers import Parity, _to_fraction +from qrules.conservation_rules import GellMannNishijimaInput, gellmann_nishijima +from qrules.quantum_numbers import Parity, _to_fraction if TYPE_CHECKING: from IPython.lib.pretty import PrettyPrinter diff --git a/src/qrules/solving.py b/src/qrules/solving.py index 29d77b3a..3859fc9c 100644 --- a/src/qrules/solving.py +++ b/src/qrules/solving.py @@ -21,8 +21,7 @@ from constraint import BacktrackingSolver, Constraint, Problem, Unassigned, Variable from qrules._implementers import implement_pretty_repr - -from .argument_handling import ( +from qrules.argument_handling import ( GraphEdgePropertyMap, GraphElementRule, GraphNodePropertyMap, @@ -31,8 +30,12 @@ Scalar, get_required_qns, ) -from .quantum_numbers import EdgeQuantumNumber, EdgeQuantumNumbers, NodeQuantumNumber -from .topology import MutableTransition, Topology +from qrules.quantum_numbers import ( + EdgeQuantumNumber, + EdgeQuantumNumbers, + NodeQuantumNumber, +) +from qrules.topology import MutableTransition, Topology if sys.version_info >= (3, 10): from typing import TypeAlias diff --git a/src/qrules/system_control.py b/src/qrules/system_control.py index f415f0c0..f4c26799 100644 --- a/src/qrules/system_control.py +++ b/src/qrules/system_control.py @@ -8,7 +8,7 @@ import attrs -from .quantum_numbers import ( +from qrules.quantum_numbers import ( EdgeQuantumNumber, EdgeQuantumNumbers, InteractionProperties, @@ -16,12 +16,12 @@ NodeQuantumNumbers, Parity, ) -from .settings import InteractionType -from .solving import GraphEdgePropertyMap, GraphNodePropertyMap, GraphSettings -from .topology import MutableTransition +from qrules.settings import InteractionType +from qrules.solving import GraphEdgePropertyMap, GraphNodePropertyMap, GraphSettings +from qrules.topology import MutableTransition if TYPE_CHECKING: - from .particle import Particle, ParticleCollection, ParticleWithSpin + from qrules.particle import Particle, ParticleCollection, ParticleWithSpin _LOGGER = logging.getLogger(__name__) diff --git a/src/qrules/transition.py b/src/qrules/transition.py index 666b90ff..aa5491f5 100644 --- a/src/qrules/transition.py +++ b/src/qrules/transition.py @@ -18,8 +18,7 @@ from tqdm.auto import tqdm from qrules._implementers import implement_pretty_repr - -from .combinatorics import ( +from qrules.combinatorics import ( InitialFacts, StateDefinition, create_initial_facts, @@ -27,27 +26,27 @@ match_external_edges, permutate_topology_kinematically, ) -from .particle import ( +from qrules.particle import ( Particle, ParticleCollection, ParticleWithSpin, _to_float, load_pdg, ) -from .quantum_numbers import ( +from qrules.quantum_numbers import ( EdgeQuantumNumber, EdgeQuantumNumbers, InteractionProperties, NodeQuantumNumber, NodeQuantumNumbers, ) -from .settings import ( +from qrules.settings import ( DEFAULT_INTERACTION_TYPES, InteractionType, NumberOfThreads, create_interaction_settings, ) -from .solving import ( +from qrules.solving import ( CSPSolver, EdgeSettings, GraphEdgePropertyMap, @@ -56,7 +55,7 @@ QNProblemSet, QNResult, ) -from .system_control import ( +from qrules.system_control import ( GammaCheck, InteractionDeterminator, LeptonCheck, @@ -67,7 +66,7 @@ find_particle, remove_duplicate_solutions, ) -from .topology import ( +from qrules.topology import ( FrozenDict, MutableTransition, Topology, @@ -80,7 +79,7 @@ else: from typing_extensions import TypeAlias if TYPE_CHECKING: - from .topology import FrozenTransition + from qrules.topology import FrozenTransition _LOGGER = logging.getLogger(__name__) diff --git a/tests/unit/conservation_rules/test_clebsch_gordan.py b/tests/unit/conservation_rules/test_clebsch_gordan.py index b3a6f5b0..b9192b21 100644 --- a/tests/unit/conservation_rules/test_clebsch_gordan.py +++ b/tests/unit/conservation_rules/test_clebsch_gordan.py @@ -11,8 +11,7 @@ spin_conservation, ) from qrules.particle import Spin - -from .test_spin import __create_two_body_decay_spin_data +from tests.unit.conservation_rules.test_spin import __create_two_body_decay_spin_data _SpinRuleInputType = Tuple[List[SpinEdgeInput], List[SpinEdgeInput], SpinNodeInput]