vector 1.4.0__tar.gz → 1.4.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {vector-1.4.0 → vector-1.4.1}/.github/workflows/cd.yml +25 -3
- {vector-1.4.0 → vector-1.4.1}/.github/workflows/ci.yml +1 -1
- {vector-1.4.0 → vector-1.4.1}/.pre-commit-config.yaml +2 -7
- {vector-1.4.0 → vector-1.4.1}/PKG-INFO +99 -1
- {vector-1.4.0 → vector-1.4.1}/README.md +98 -0
- {vector-1.4.0 → vector-1.4.1}/docs/changelog.md +25 -0
- {vector-1.4.0 → vector-1.4.1}/docs/usage/intro.ipynb +551 -163
- {vector-1.4.0 → vector-1.4.1}/pyproject.toml +76 -59
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/spatial/deltaangle.py +277 -42
- {vector-1.4.0 → vector-1.4.1}/src/vector/_lib.py +5 -5
- {vector-1.4.0 → vector-1.4.1}/src/vector/_version.py +2 -2
- {vector-1.4.0 → vector-1.4.1}/src/vector/backends/numpy.py +110 -1
- vector-1.4.1/tests/compute/lorentz/test_is_lightlike.py +200 -0
- vector-1.4.1/tests/compute/lorentz/test_is_spacelike.py +284 -0
- vector-1.4.1/tests/compute/lorentz/test_is_timelike.py +284 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/test_scale.py +0 -14
- vector-1.4.1/tests/compute/test_is_antiparallel.py +124 -0
- vector-1.4.1/tests/compute/test_is_parallel.py +124 -0
- vector-1.4.1/tests/compute/test_is_perpendicular.py +124 -0
- {vector-1.4.0 → vector-1.4.1}/tests/test_compute_features.py +1 -0
- vector-1.4.1/tests/test_issues.py +176 -0
- vector-1.4.0/tests/test_issues.py +0 -63
- {vector-1.4.0 → vector-1.4.1}/.all-contributorsrc +0 -0
- {vector-1.4.0 → vector-1.4.1}/.git_archival.txt +0 -0
- {vector-1.4.0 → vector-1.4.1}/.gitattributes +0 -0
- {vector-1.4.0 → vector-1.4.1}/.github/CONTRIBUTING.md +0 -0
- {vector-1.4.0 → vector-1.4.1}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {vector-1.4.0 → vector-1.4.1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {vector-1.4.0 → vector-1.4.1}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {vector-1.4.0 → vector-1.4.1}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {vector-1.4.0 → vector-1.4.1}/.github/codecov.yml +0 -0
- {vector-1.4.0 → vector-1.4.1}/.github/dependabot.yml +0 -0
- {vector-1.4.0 → vector-1.4.1}/.github/matchers/pylint.json +0 -0
- {vector-1.4.0 → vector-1.4.1}/.github/workflows/notebooks.yml +0 -0
- {vector-1.4.0 → vector-1.4.1}/.gitignore +0 -0
- {vector-1.4.0 → vector-1.4.1}/.readthedocs.yml +0 -0
- {vector-1.4.0 → vector-1.4.1}/CITATION.cff +0 -0
- {vector-1.4.0 → vector-1.4.1}/LICENSE +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/Makefile +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/_images/LogoSrc.svg +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/_images/vector-logo.png +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/backends/vector.backends._numba.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/backends/vector.backends._numba_object.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/backends/vector.backends.awkward.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/backends/vector.backends.awkward_constructors.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/backends/vector.backends.numba_numpy.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/backends/vector.backends.numpy.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/backends/vector.backends.object.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/backends/vector.backends.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/lorentz/vector._compute.lorentz.Et.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/lorentz/vector._compute.lorentz.Et2.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/lorentz/vector._compute.lorentz.Mt.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/lorentz/vector._compute.lorentz.Mt2.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/lorentz/vector._compute.lorentz.add.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/lorentz/vector._compute.lorentz.beta.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/lorentz/vector._compute.lorentz.boostX_beta.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/lorentz/vector._compute.lorentz.boostX_gamma.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/lorentz/vector._compute.lorentz.boostY_beta.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/lorentz/vector._compute.lorentz.boostY_gamma.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/lorentz/vector._compute.lorentz.boostZ_beta.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/lorentz/vector._compute.lorentz.boostZ_gamma.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/lorentz/vector._compute.lorentz.boost_beta3.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/lorentz/vector._compute.lorentz.boost_p4.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/lorentz/vector._compute.lorentz.deltaRapidityPhi.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/lorentz/vector._compute.lorentz.deltaRapidityPhi2.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/lorentz/vector._compute.lorentz.dot.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/lorentz/vector._compute.lorentz.equal.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/lorentz/vector._compute.lorentz.gamma.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/lorentz/vector._compute.lorentz.is_lightlike.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/lorentz/vector._compute.lorentz.is_spacelike.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/lorentz/vector._compute.lorentz.is_timelike.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/lorentz/vector._compute.lorentz.isclose.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/lorentz/vector._compute.lorentz.not_equal.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/lorentz/vector._compute.lorentz.rapidity.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/lorentz/vector._compute.lorentz.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/lorentz/vector._compute.lorentz.scale.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/lorentz/vector._compute.lorentz.subtract.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/lorentz/vector._compute.lorentz.t.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/lorentz/vector._compute.lorentz.t2.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/lorentz/vector._compute.lorentz.tau.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/lorentz/vector._compute.lorentz.tau2.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/lorentz/vector._compute.lorentz.to_beta3.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/lorentz/vector._compute.lorentz.transform4D.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/lorentz/vector._compute.lorentz.unit.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/planar/vector._compute.planar.add.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/planar/vector._compute.planar.deltaphi.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/planar/vector._compute.planar.dot.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/planar/vector._compute.planar.equal.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/planar/vector._compute.planar.is_antiparallel.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/planar/vector._compute.planar.is_parallel.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/planar/vector._compute.planar.is_perpendicular.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/planar/vector._compute.planar.isclose.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/planar/vector._compute.planar.not_equal.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/planar/vector._compute.planar.phi.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/planar/vector._compute.planar.rho.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/planar/vector._compute.planar.rho2.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/planar/vector._compute.planar.rotateZ.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/planar/vector._compute.planar.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/planar/vector._compute.planar.scale.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/planar/vector._compute.planar.subtract.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/planar/vector._compute.planar.transform2D.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/planar/vector._compute.planar.unit.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/planar/vector._compute.planar.x.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/planar/vector._compute.planar.y.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/spatial/vector._compute.spatial.add.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/spatial/vector._compute.spatial.costheta.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/spatial/vector._compute.spatial.cottheta.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/spatial/vector._compute.spatial.cross.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/spatial/vector._compute.spatial.deltaR.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/spatial/vector._compute.spatial.deltaR2.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/spatial/vector._compute.spatial.deltaangle.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/spatial/vector._compute.spatial.deltaeta.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/spatial/vector._compute.spatial.dot.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/spatial/vector._compute.spatial.equal.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/spatial/vector._compute.spatial.eta.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/spatial/vector._compute.spatial.is_antiparallel.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/spatial/vector._compute.spatial.is_parallel.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/spatial/vector._compute.spatial.is_perpendicular.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/spatial/vector._compute.spatial.isclose.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/spatial/vector._compute.spatial.mag.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/spatial/vector._compute.spatial.mag2.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/spatial/vector._compute.spatial.not_equal.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/spatial/vector._compute.spatial.rotateX.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/spatial/vector._compute.spatial.rotateY.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/spatial/vector._compute.spatial.rotate_axis.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/spatial/vector._compute.spatial.rotate_euler.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/spatial/vector._compute.spatial.rotate_quaternion.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/spatial/vector._compute.spatial.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/spatial/vector._compute.spatial.scale.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/spatial/vector._compute.spatial.subtract.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/spatial/vector._compute.spatial.theta.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/spatial/vector._compute.spatial.transform3D.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/spatial/vector._compute.spatial.unit.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/spatial/vector._compute.spatial.z.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/compute/vector._compute.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/inheritance.svg +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/modules.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/vector._methods.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/vector._typeutils.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/api/vector.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/conf.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/index.rst +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/make.bat +0 -0
- {vector-1.4.0 → vector-1.4.1}/docs/usage/structure.md +0 -0
- {vector-1.4.0 → vector-1.4.1}/environment.yml +0 -0
- {vector-1.4.0 → vector-1.4.1}/noxfile.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/__init__.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/__init__.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/lorentz/Et.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/lorentz/Et2.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/lorentz/Mt.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/lorentz/Mt2.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/lorentz/__init__.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/lorentz/add.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/lorentz/beta.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/lorentz/boostX_beta.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/lorentz/boostX_gamma.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/lorentz/boostY_beta.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/lorentz/boostY_gamma.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/lorentz/boostZ_beta.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/lorentz/boostZ_gamma.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/lorentz/boost_beta3.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/lorentz/boost_p4.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/lorentz/deltaRapidityPhi.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/lorentz/deltaRapidityPhi2.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/lorentz/dot.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/lorentz/equal.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/lorentz/gamma.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/lorentz/is_lightlike.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/lorentz/is_spacelike.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/lorentz/is_timelike.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/lorentz/isclose.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/lorentz/not_equal.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/lorentz/rapidity.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/lorentz/scale.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/lorentz/subtract.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/lorentz/t.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/lorentz/t2.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/lorentz/tau.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/lorentz/tau2.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/lorentz/to_beta3.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/lorentz/transform4D.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/lorentz/unit.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/planar/__init__.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/planar/add.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/planar/deltaphi.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/planar/dot.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/planar/equal.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/planar/is_antiparallel.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/planar/is_parallel.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/planar/is_perpendicular.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/planar/isclose.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/planar/not_equal.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/planar/phi.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/planar/rho.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/planar/rho2.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/planar/rotateZ.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/planar/scale.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/planar/subtract.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/planar/transform2D.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/planar/unit.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/planar/x.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/planar/y.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/spatial/__init__.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/spatial/add.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/spatial/costheta.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/spatial/cottheta.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/spatial/cross.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/spatial/deltaR.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/spatial/deltaR2.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/spatial/deltaeta.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/spatial/dot.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/spatial/equal.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/spatial/eta.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/spatial/is_antiparallel.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/spatial/is_parallel.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/spatial/is_perpendicular.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/spatial/isclose.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/spatial/mag.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/spatial/mag2.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/spatial/not_equal.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/spatial/rotateX.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/spatial/rotateY.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/spatial/rotate_axis.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/spatial/rotate_euler.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/spatial/rotate_quaternion.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/spatial/scale.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/spatial/subtract.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/spatial/theta.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/spatial/transform3D.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/spatial/unit.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_compute/spatial/z.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_methods.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/_typeutils.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/backends/__init__.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/backends/_numba.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/backends/_numba_object.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/backends/awkward.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/backends/awkward_constructors.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/backends/numba_numpy.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/backends/object.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/backends/sympy.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/py.typed +0 -0
- {vector-1.4.0 → vector-1.4.1}/src/vector/version.pyi +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/__init__.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/backends/__init__.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/backends/test_awkward.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/backends/test_awkward_numba.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/backends/test_dask_awkward.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/backends/test_numba_numpy.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/backends/test_numba_object.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/backends/test_numpy.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/backends/test_object.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/backends/test_operators.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/backends/test_sympy.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/__init__.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/lorentz/__init__.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/lorentz/test_Et.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/lorentz/test_Et2.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/lorentz/test_Mt.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/lorentz/test_Mt2.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/lorentz/test_beta.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/lorentz/test_boostX_beta.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/lorentz/test_boostX_gamma.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/lorentz/test_boostY_beta.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/lorentz/test_boostY_gamma.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/lorentz/test_boostZ_beta.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/lorentz/test_boostZ_gamma.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/lorentz/test_boost_beta3.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/lorentz/test_boost_p4.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/lorentz/test_deltaRapidityPhi.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/lorentz/test_deltaRapidityPhi2.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/lorentz/test_gamma.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/lorentz/test_rapidity.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/lorentz/test_t.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/lorentz/test_t2.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/lorentz/test_tau.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/lorentz/test_tau2.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/lorentz/test_to_beta3.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/planar/__init__.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/planar/test_deltaphi.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/planar/test_phi.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/planar/test_rho.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/planar/test_rho2.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/planar/test_rotateZ.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/planar/test_x.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/planar/test_y.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/spatial/__init__.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/spatial/test_costheta.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/spatial/test_cottheta.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/spatial/test_cross.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/spatial/test_deltaR.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/spatial/test_deltaR2.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/spatial/test_deltaangle.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/spatial/test_deltaeta.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/spatial/test_eta.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/spatial/test_mag.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/spatial/test_mag2.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/spatial/test_rotateX.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/spatial/test_rotateY.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/spatial/test_rotate_axis.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/spatial/test_rotate_euler.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/spatial/test_rotate_quaternion.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/spatial/test_theta.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/spatial/test_z.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/lorentz/__init__.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/lorentz/test_Et.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/lorentz/test_Et2.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/lorentz/test_Mt.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/lorentz/test_Mt2.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/lorentz/test_beta.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/lorentz/test_boostX_beta.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/lorentz/test_boostX_gamma.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/lorentz/test_boostY_beta.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/lorentz/test_boostY_gamma.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/lorentz/test_boostZ_beta.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/lorentz/test_boostZ_gamma.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/lorentz/test_boost_beta3.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/lorentz/test_boost_p4.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/lorentz/test_deltaRapidityPhi.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/lorentz/test_deltaRapidityPhi2.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/lorentz/test_gamma.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/lorentz/test_is_lightlike.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/lorentz/test_is_spacelike.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/lorentz/test_is_timelike.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/lorentz/test_rapidity.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/lorentz/test_t.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/lorentz/test_t2.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/lorentz/test_tau.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/lorentz/test_tau2.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/lorentz/test_to_beta3.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/planar/__init__.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/planar/test_deltaphi.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/planar/test_phi.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/planar/test_rho.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/planar/test_rho2.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/planar/test_rotateZ.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/planar/test_x.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/planar/test_y.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/spatial/__init__.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/spatial/test_costheta.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/spatial/test_cottheta.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/spatial/test_cross.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/spatial/test_deltaR.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/spatial/test_deltaR2.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/spatial/test_deltaangle.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/spatial/test_deltaeta.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/spatial/test_eta.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/spatial/test_mag.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/spatial/test_mag2.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/spatial/test_rotateX.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/spatial/test_rotateY.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/spatial/test_rotate_axis.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/spatial/test_rotate_euler.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/spatial/test_rotate_quaternion.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/spatial/test_theta.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/spatial/test_z.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/test_add.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/test_conversions.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/test_dot.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/test_equal.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/test_is_antiparallel.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/test_is_parallel.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/test_is_perpendicular.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/test_not_equal.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/test_subtract.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/sympy/test_unit.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/test_add.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/test_conversions.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/test_dot.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/test_equal.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/test_isclose.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/test_not_equal.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/test_scale.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/test_subtract.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/compute/test_unit.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/samples/issue-161-v2.pkl +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/samples/issue-161.pkl +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/test_methods.py +0 -0
- {vector-1.4.0 → vector-1.4.1}/tests/test_notebooks.py +0 -0
|
@@ -9,6 +9,10 @@ on:
|
|
|
9
9
|
jobs:
|
|
10
10
|
dist:
|
|
11
11
|
runs-on: ubuntu-latest
|
|
12
|
+
permissions:
|
|
13
|
+
id-token: write
|
|
14
|
+
attestations: write
|
|
15
|
+
contents: read
|
|
12
16
|
steps:
|
|
13
17
|
- uses: actions/checkout@v4
|
|
14
18
|
with:
|
|
@@ -17,13 +21,18 @@ jobs:
|
|
|
17
21
|
- name: Build SDist and wheel
|
|
18
22
|
run: pipx run build
|
|
19
23
|
|
|
24
|
+
- name: Check metadata
|
|
25
|
+
run: pipx run twine check dist/*
|
|
26
|
+
|
|
27
|
+
- name: Generate artifact attestation for sdist and wheel
|
|
28
|
+
uses: actions/attest-build-provenance@49df96e17e918a15956db358890b08e61c704919 # v1.2.0
|
|
29
|
+
with:
|
|
30
|
+
subject-path: "dist/vector-*"
|
|
31
|
+
|
|
20
32
|
- uses: actions/upload-artifact@v4
|
|
21
33
|
with:
|
|
22
34
|
path: dist/*
|
|
23
35
|
|
|
24
|
-
- name: Check metadata
|
|
25
|
-
run: pipx run twine check dist/*
|
|
26
|
-
|
|
27
36
|
publish:
|
|
28
37
|
needs: [dist]
|
|
29
38
|
runs-on: ubuntu-latest
|
|
@@ -40,4 +49,17 @@ jobs:
|
|
|
40
49
|
name: artifact
|
|
41
50
|
path: dist
|
|
42
51
|
|
|
52
|
+
- name: List distributions to be deployed
|
|
53
|
+
run: ls -l dist/
|
|
54
|
+
|
|
55
|
+
- name: Verify sdist artifact attestation
|
|
56
|
+
env:
|
|
57
|
+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
58
|
+
run: gh attestation verify dist/vector-*.tar.gz --repo ${{ github.repository }}
|
|
59
|
+
|
|
60
|
+
- name: Verify wheel artifact attestation
|
|
61
|
+
env:
|
|
62
|
+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
63
|
+
run: gh attestation verify dist/vector-*.whl --repo ${{ github.repository }}
|
|
64
|
+
|
|
43
65
|
- uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -146,7 +146,7 @@ jobs:
|
|
|
146
146
|
run: python -m pytest -ra --cov=vector --ignore tests/test_notebooks.py .
|
|
147
147
|
|
|
148
148
|
- name: Upload coverage report
|
|
149
|
-
uses: codecov/codecov-action@v4.
|
|
149
|
+
uses: codecov/codecov-action@v4.4.1
|
|
150
150
|
with:
|
|
151
151
|
token: ${{ secrets.CODECOV_TOKEN }}
|
|
152
152
|
|
|
@@ -19,19 +19,14 @@ repos:
|
|
|
19
19
|
- id: trailing-whitespace
|
|
20
20
|
|
|
21
21
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
22
|
-
rev: "v0.4.
|
|
22
|
+
rev: "v0.4.4"
|
|
23
23
|
hooks:
|
|
24
24
|
- id: ruff
|
|
25
25
|
args: ["--fix", "--show-fixes"]
|
|
26
26
|
- id: ruff-format
|
|
27
27
|
|
|
28
|
-
- repo: https://github.com/tox-dev/pyproject-fmt
|
|
29
|
-
rev: "1.8.0"
|
|
30
|
-
hooks:
|
|
31
|
-
- id: pyproject-fmt
|
|
32
|
-
|
|
33
28
|
- repo: https://github.com/pre-commit/mirrors-mypy
|
|
34
|
-
rev: v1.
|
|
29
|
+
rev: v1.10.0
|
|
35
30
|
hooks:
|
|
36
31
|
- id: mypy
|
|
37
32
|
files: src
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: vector
|
|
3
|
-
Version: 1.4.
|
|
3
|
+
Version: 1.4.1
|
|
4
4
|
Summary: Vector classes and utilities
|
|
5
5
|
Project-URL: Bug Tracker, https://github.com/scikit-hep/vector/issues
|
|
6
6
|
Project-URL: Changelog, https://vector.readthedocs.io/en/latest/changelog.html
|
|
@@ -831,6 +831,104 @@ def compute_masses(array):
|
|
|
831
831
|
compute_masses(array)
|
|
832
832
|
```
|
|
833
833
|
|
|
834
|
+
## Sub-classing Awkward mixins
|
|
835
|
+
|
|
836
|
+
At the moment, it is possible to sub-class vector awkward mixins to extend the vector functionalities. Although the mechanism in place works well, it is still being improved.
|
|
837
|
+
|
|
838
|
+
For instance, the `MomentumAwkward` classes can be extended in the following way:
|
|
839
|
+
|
|
840
|
+
```py
|
|
841
|
+
@ak.mixin_class(vector.backends.awkward.behavior)
|
|
842
|
+
class TwoVector(vector.backends.awkward.MomentumAwkward2D):
|
|
843
|
+
pass
|
|
844
|
+
|
|
845
|
+
|
|
846
|
+
@ak.mixin_class(vector.backends.awkward.behavior)
|
|
847
|
+
class ThreeVector(vector.backends.awkward.MomentumAwkward3D):
|
|
848
|
+
pass
|
|
849
|
+
|
|
850
|
+
|
|
851
|
+
# required for transforming vectors
|
|
852
|
+
# the class names must always end with "Array"
|
|
853
|
+
TwoVectorArray.ProjectionClass2D = TwoVectorArray # noqa: F821
|
|
854
|
+
TwoVectorArray.ProjectionClass3D = ThreeVectorArray # noqa: F821
|
|
855
|
+
TwoVectorArray.MomentumClass = TwoVectorArray # noqa: F821
|
|
856
|
+
|
|
857
|
+
ThreeVectorArray.ProjectionClass2D = TwoVectorArray # noqa: F821
|
|
858
|
+
ThreeVectorArray.ProjectionClass3D = ThreeVectorArray # noqa: F821
|
|
859
|
+
ThreeVectorArray.MomentumClass = ThreeVectorArray # noqa: F821
|
|
860
|
+
|
|
861
|
+
vec = ak.zip(
|
|
862
|
+
{
|
|
863
|
+
"pt": [[1, 2], [], [3], [4]],
|
|
864
|
+
"phi": [[1.2, 1.4], [], [1.6], [3.4]],
|
|
865
|
+
},
|
|
866
|
+
with_name="TwoVector",
|
|
867
|
+
behavior=vector.backends.awkward.behavior,
|
|
868
|
+
)
|
|
869
|
+
|
|
870
|
+
vec
|
|
871
|
+
```
|
|
872
|
+
|
|
873
|
+
The binary operators are not automatically registered by awkward, but vector methods can be used to perform operations on sub-classed vectors.
|
|
874
|
+
|
|
875
|
+
```py
|
|
876
|
+
vec.add(vec)
|
|
877
|
+
```
|
|
878
|
+
|
|
879
|
+
Similarly, other vector methods can be used by the new methods internally.
|
|
880
|
+
|
|
881
|
+
```py
|
|
882
|
+
@ak.mixin_class(vector.backends.awkward.behavior)
|
|
883
|
+
class LorentzVector(vector.backends.awkward.MomentumAwkward4D):
|
|
884
|
+
@ak.mixin_class_method(np.divide, {numbers.Number})
|
|
885
|
+
def divide(self, factor):
|
|
886
|
+
return self.scale(1 / factor)
|
|
887
|
+
|
|
888
|
+
|
|
889
|
+
# required for transforming vectors
|
|
890
|
+
# the class names must always end with "Array"
|
|
891
|
+
LorentzVectorArray.ProjectionClass2D = TwoVectorArray # noqa: F821
|
|
892
|
+
LorentzVectorArray.ProjectionClass3D = ThreeVectorArray # noqa: F821
|
|
893
|
+
LorentzVectorArray.ProjectionClass4D = LorentzVectorArray # noqa: F821
|
|
894
|
+
LorentzVectorArray.MomentumClass = LorentzVectorArray # noqa: F821
|
|
895
|
+
|
|
896
|
+
vec = ak.zip(
|
|
897
|
+
{
|
|
898
|
+
"pt": [[1, 2], [], [3], [4]],
|
|
899
|
+
"eta": [[1.2, 1.4], [], [1.6], [3.4]],
|
|
900
|
+
"phi": [[0.3, 0.4], [], [0.5], [0.6]],
|
|
901
|
+
"energy": [[50, 51], [], [52], [60]],
|
|
902
|
+
},
|
|
903
|
+
with_name="LorentzVector",
|
|
904
|
+
behavior=vector.backends.awkward.behavior,
|
|
905
|
+
)
|
|
906
|
+
|
|
907
|
+
vec / 2
|
|
908
|
+
vec.like(vector.obj(x=1, y=2))
|
|
909
|
+
vec.like(vector.obj(x=1, y=2, z=3))
|
|
910
|
+
```
|
|
911
|
+
|
|
912
|
+
It is also possible to manually add binary operations in vector's behavior dict to enable binary operations.
|
|
913
|
+
|
|
914
|
+
```py
|
|
915
|
+
_binary_dispatch_cls = {
|
|
916
|
+
"TwoVector": TwoVector,
|
|
917
|
+
"ThreeVector": ThreeVector,
|
|
918
|
+
"LorentzVector": LorentzVector,
|
|
919
|
+
}
|
|
920
|
+
_rank = [TwoVector, ThreeVector, LorentzVector]
|
|
921
|
+
|
|
922
|
+
for lhs, lhs_to in _binary_dispatch_cls.items():
|
|
923
|
+
for rhs, rhs_to in _binary_dispatch_cls.items():
|
|
924
|
+
out_to = min(lhs_to, rhs_to, key=_rank.index)
|
|
925
|
+
vector.backends.awkward.behavior[(np.add, lhs, rhs)] = out_to.add
|
|
926
|
+
vector.backends.awkward.behavior[(np.subtract, lhs, rhs)] = out_to.subtract
|
|
927
|
+
|
|
928
|
+
vec + vec
|
|
929
|
+
vec.to_2D() + vec.to_2D()
|
|
930
|
+
```
|
|
931
|
+
|
|
834
932
|
## Talks about vector
|
|
835
933
|
|
|
836
934
|
- 9th October 2023 - [What’s new with Vector? First major release is out!](https://indi.to/35ym5) - [PyHEP 2023 (virtual)](https://indico.cern.ch/event/1252095/) [🎥](https://www.youtube.com/watch?v=JHEAb2R3xzE&list=PLKZ9c4ONm-VlAorAG8kR09ZqhMfHiH2LJ&index=10)
|
|
@@ -761,6 +761,104 @@ def compute_masses(array):
|
|
|
761
761
|
compute_masses(array)
|
|
762
762
|
```
|
|
763
763
|
|
|
764
|
+
## Sub-classing Awkward mixins
|
|
765
|
+
|
|
766
|
+
At the moment, it is possible to sub-class vector awkward mixins to extend the vector functionalities. Although the mechanism in place works well, it is still being improved.
|
|
767
|
+
|
|
768
|
+
For instance, the `MomentumAwkward` classes can be extended in the following way:
|
|
769
|
+
|
|
770
|
+
```py
|
|
771
|
+
@ak.mixin_class(vector.backends.awkward.behavior)
|
|
772
|
+
class TwoVector(vector.backends.awkward.MomentumAwkward2D):
|
|
773
|
+
pass
|
|
774
|
+
|
|
775
|
+
|
|
776
|
+
@ak.mixin_class(vector.backends.awkward.behavior)
|
|
777
|
+
class ThreeVector(vector.backends.awkward.MomentumAwkward3D):
|
|
778
|
+
pass
|
|
779
|
+
|
|
780
|
+
|
|
781
|
+
# required for transforming vectors
|
|
782
|
+
# the class names must always end with "Array"
|
|
783
|
+
TwoVectorArray.ProjectionClass2D = TwoVectorArray # noqa: F821
|
|
784
|
+
TwoVectorArray.ProjectionClass3D = ThreeVectorArray # noqa: F821
|
|
785
|
+
TwoVectorArray.MomentumClass = TwoVectorArray # noqa: F821
|
|
786
|
+
|
|
787
|
+
ThreeVectorArray.ProjectionClass2D = TwoVectorArray # noqa: F821
|
|
788
|
+
ThreeVectorArray.ProjectionClass3D = ThreeVectorArray # noqa: F821
|
|
789
|
+
ThreeVectorArray.MomentumClass = ThreeVectorArray # noqa: F821
|
|
790
|
+
|
|
791
|
+
vec = ak.zip(
|
|
792
|
+
{
|
|
793
|
+
"pt": [[1, 2], [], [3], [4]],
|
|
794
|
+
"phi": [[1.2, 1.4], [], [1.6], [3.4]],
|
|
795
|
+
},
|
|
796
|
+
with_name="TwoVector",
|
|
797
|
+
behavior=vector.backends.awkward.behavior,
|
|
798
|
+
)
|
|
799
|
+
|
|
800
|
+
vec
|
|
801
|
+
```
|
|
802
|
+
|
|
803
|
+
The binary operators are not automatically registered by awkward, but vector methods can be used to perform operations on sub-classed vectors.
|
|
804
|
+
|
|
805
|
+
```py
|
|
806
|
+
vec.add(vec)
|
|
807
|
+
```
|
|
808
|
+
|
|
809
|
+
Similarly, other vector methods can be used by the new methods internally.
|
|
810
|
+
|
|
811
|
+
```py
|
|
812
|
+
@ak.mixin_class(vector.backends.awkward.behavior)
|
|
813
|
+
class LorentzVector(vector.backends.awkward.MomentumAwkward4D):
|
|
814
|
+
@ak.mixin_class_method(np.divide, {numbers.Number})
|
|
815
|
+
def divide(self, factor):
|
|
816
|
+
return self.scale(1 / factor)
|
|
817
|
+
|
|
818
|
+
|
|
819
|
+
# required for transforming vectors
|
|
820
|
+
# the class names must always end with "Array"
|
|
821
|
+
LorentzVectorArray.ProjectionClass2D = TwoVectorArray # noqa: F821
|
|
822
|
+
LorentzVectorArray.ProjectionClass3D = ThreeVectorArray # noqa: F821
|
|
823
|
+
LorentzVectorArray.ProjectionClass4D = LorentzVectorArray # noqa: F821
|
|
824
|
+
LorentzVectorArray.MomentumClass = LorentzVectorArray # noqa: F821
|
|
825
|
+
|
|
826
|
+
vec = ak.zip(
|
|
827
|
+
{
|
|
828
|
+
"pt": [[1, 2], [], [3], [4]],
|
|
829
|
+
"eta": [[1.2, 1.4], [], [1.6], [3.4]],
|
|
830
|
+
"phi": [[0.3, 0.4], [], [0.5], [0.6]],
|
|
831
|
+
"energy": [[50, 51], [], [52], [60]],
|
|
832
|
+
},
|
|
833
|
+
with_name="LorentzVector",
|
|
834
|
+
behavior=vector.backends.awkward.behavior,
|
|
835
|
+
)
|
|
836
|
+
|
|
837
|
+
vec / 2
|
|
838
|
+
vec.like(vector.obj(x=1, y=2))
|
|
839
|
+
vec.like(vector.obj(x=1, y=2, z=3))
|
|
840
|
+
```
|
|
841
|
+
|
|
842
|
+
It is also possible to manually add binary operations in vector's behavior dict to enable binary operations.
|
|
843
|
+
|
|
844
|
+
```py
|
|
845
|
+
_binary_dispatch_cls = {
|
|
846
|
+
"TwoVector": TwoVector,
|
|
847
|
+
"ThreeVector": ThreeVector,
|
|
848
|
+
"LorentzVector": LorentzVector,
|
|
849
|
+
}
|
|
850
|
+
_rank = [TwoVector, ThreeVector, LorentzVector]
|
|
851
|
+
|
|
852
|
+
for lhs, lhs_to in _binary_dispatch_cls.items():
|
|
853
|
+
for rhs, rhs_to in _binary_dispatch_cls.items():
|
|
854
|
+
out_to = min(lhs_to, rhs_to, key=_rank.index)
|
|
855
|
+
vector.backends.awkward.behavior[(np.add, lhs, rhs)] = out_to.add
|
|
856
|
+
vector.backends.awkward.behavior[(np.subtract, lhs, rhs)] = out_to.subtract
|
|
857
|
+
|
|
858
|
+
vec + vec
|
|
859
|
+
vec.to_2D() + vec.to_2D()
|
|
860
|
+
```
|
|
861
|
+
|
|
764
862
|
## Talks about vector
|
|
765
863
|
|
|
766
864
|
- 9th October 2023 - [What’s new with Vector? First major release is out!](https://indi.to/35ym5) - [PyHEP 2023 (virtual)](https://indico.cern.ch/event/1252095/) [🎥](https://www.youtube.com/watch?v=JHEAb2R3xzE&list=PLKZ9c4ONm-VlAorAG8kR09ZqhMfHiH2LJ&index=10)
|
|
@@ -2,6 +2,31 @@
|
|
|
2
2
|
|
|
3
3
|
## Version 1.4
|
|
4
4
|
|
|
5
|
+
### Version 1.4.1
|
|
6
|
+
|
|
7
|
+
#### Fixes
|
|
8
|
+
|
|
9
|
+
- fix: sympy backend on numpy 2.0 (full numpy 2.0 support) [#473][]
|
|
10
|
+
- fix: add lower and upper bounds for deltaangle [#465][]
|
|
11
|
+
- fix: maximum for SymPy backend is the identity function now [#465][]
|
|
12
|
+
- fix: get coordinate classes to work for numpy [#466][]
|
|
13
|
+
|
|
14
|
+
#### Documentation
|
|
15
|
+
|
|
16
|
+
- docs: add basic docs for sub-classing awkward mixins [#468][]
|
|
17
|
+
|
|
18
|
+
#### Maintenance
|
|
19
|
+
|
|
20
|
+
- chore: add missing compute function tests [#454]
|
|
21
|
+
- ci: Add GitHub artifact attestations to package distribution [#470][]
|
|
22
|
+
|
|
23
|
+
[#473]: https://github.com/scikit-hep/vector/pull/473
|
|
24
|
+
[#465]: https://github.com/scikit-hep/vector/pull/465
|
|
25
|
+
[#466]: https://github.com/scikit-hep/vector/pull/466
|
|
26
|
+
[#468]: https://github.com/scikit-hep/vector/pull/468
|
|
27
|
+
[#454]: https://github.com/scikit-hep/vector/pull/454
|
|
28
|
+
[#470]: https://github.com/scikit-hep/vector/pull/470
|
|
29
|
+
|
|
5
30
|
### Version 1.4.0
|
|
6
31
|
|
|
7
32
|
#### Features
|