vector 1.4.0__tar.gz → 1.4.2__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.2}/.github/workflows/cd.yml +25 -3
- {vector-1.4.0 → vector-1.4.2}/.github/workflows/ci.yml +5 -14
- {vector-1.4.0 → vector-1.4.2}/.pre-commit-config.yaml +5 -10
- {vector-1.4.0 → vector-1.4.2}/PKG-INFO +119 -9
- {vector-1.4.0 → vector-1.4.2}/README.md +117 -7
- {vector-1.4.0 → vector-1.4.2}/docs/changelog.md +42 -0
- {vector-1.4.0 → vector-1.4.2}/docs/index.rst +6 -6
- {vector-1.4.0 → vector-1.4.2}/docs/usage/intro.ipynb +680 -188
- {vector-1.4.0 → vector-1.4.2}/noxfile.py +6 -1
- {vector-1.4.0 → vector-1.4.2}/pyproject.toml +80 -60
- {vector-1.4.0 → vector-1.4.2}/src/vector/__init__.py +2 -2
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/spatial/deltaangle.py +277 -42
- {vector-1.4.0 → vector-1.4.2}/src/vector/_lib.py +8 -8
- {vector-1.4.0 → vector-1.4.2}/src/vector/_version.py +2 -2
- {vector-1.4.0 → vector-1.4.2}/src/vector/backends/numpy.py +110 -1
- {vector-1.4.0 → vector-1.4.2}/src/vector/backends/object.py +3 -3
- {vector-1.4.0 → vector-1.4.2}/src/vector/backends/sympy.py +4 -4
- vector-1.4.2/tests/compute/lorentz/test_is_lightlike.py +200 -0
- vector-1.4.2/tests/compute/lorentz/test_is_spacelike.py +284 -0
- vector-1.4.2/tests/compute/lorentz/test_is_timelike.py +284 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/lorentz/test_Et.py +12 -18
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/lorentz/test_Et2.py +2 -2
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/lorentz/test_beta.py +11 -19
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/test_scale.py +0 -14
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/test_unit.py +19 -15
- vector-1.4.2/tests/compute/test_is_antiparallel.py +124 -0
- vector-1.4.2/tests/compute/test_is_parallel.py +124 -0
- vector-1.4.2/tests/compute/test_is_perpendicular.py +124 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/test_unit.py +24 -24
- {vector-1.4.0 → vector-1.4.2}/tests/test_compute_features.py +2 -1
- vector-1.4.2/tests/test_issues.py +176 -0
- {vector-1.4.0 → vector-1.4.2}/tests/test_notebooks.py +1 -1
- vector-1.4.0/tests/test_issues.py +0 -63
- {vector-1.4.0 → vector-1.4.2}/.all-contributorsrc +0 -0
- {vector-1.4.0 → vector-1.4.2}/.git_archival.txt +0 -0
- {vector-1.4.0 → vector-1.4.2}/.gitattributes +0 -0
- {vector-1.4.0 → vector-1.4.2}/.github/CONTRIBUTING.md +0 -0
- {vector-1.4.0 → vector-1.4.2}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {vector-1.4.0 → vector-1.4.2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {vector-1.4.0 → vector-1.4.2}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {vector-1.4.0 → vector-1.4.2}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {vector-1.4.0 → vector-1.4.2}/.github/codecov.yml +0 -0
- {vector-1.4.0 → vector-1.4.2}/.github/dependabot.yml +0 -0
- {vector-1.4.0 → vector-1.4.2}/.github/matchers/pylint.json +0 -0
- {vector-1.4.0 → vector-1.4.2}/.github/workflows/notebooks.yml +0 -0
- {vector-1.4.0 → vector-1.4.2}/.gitignore +0 -0
- {vector-1.4.0 → vector-1.4.2}/.readthedocs.yml +0 -0
- {vector-1.4.0 → vector-1.4.2}/CITATION.cff +0 -0
- {vector-1.4.0 → vector-1.4.2}/LICENSE +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/Makefile +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/_images/LogoSrc.svg +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/_images/vector-logo.png +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/backends/vector.backends._numba.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/backends/vector.backends._numba_object.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/backends/vector.backends.awkward.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/backends/vector.backends.awkward_constructors.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/backends/vector.backends.numba_numpy.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/backends/vector.backends.numpy.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/backends/vector.backends.object.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/backends/vector.backends.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/lorentz/vector._compute.lorentz.Et.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/lorentz/vector._compute.lorentz.Et2.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/lorentz/vector._compute.lorentz.Mt.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/lorentz/vector._compute.lorentz.Mt2.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/lorentz/vector._compute.lorentz.add.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/lorentz/vector._compute.lorentz.beta.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/lorentz/vector._compute.lorentz.boostX_beta.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/lorentz/vector._compute.lorentz.boostX_gamma.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/lorentz/vector._compute.lorentz.boostY_beta.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/lorentz/vector._compute.lorentz.boostY_gamma.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/lorentz/vector._compute.lorentz.boostZ_beta.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/lorentz/vector._compute.lorentz.boostZ_gamma.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/lorentz/vector._compute.lorentz.boost_beta3.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/lorentz/vector._compute.lorentz.boost_p4.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/lorentz/vector._compute.lorentz.deltaRapidityPhi.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/lorentz/vector._compute.lorentz.deltaRapidityPhi2.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/lorentz/vector._compute.lorentz.dot.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/lorentz/vector._compute.lorentz.equal.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/lorentz/vector._compute.lorentz.gamma.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/lorentz/vector._compute.lorentz.is_lightlike.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/lorentz/vector._compute.lorentz.is_spacelike.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/lorentz/vector._compute.lorentz.is_timelike.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/lorentz/vector._compute.lorentz.isclose.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/lorentz/vector._compute.lorentz.not_equal.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/lorentz/vector._compute.lorentz.rapidity.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/lorentz/vector._compute.lorentz.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/lorentz/vector._compute.lorentz.scale.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/lorentz/vector._compute.lorentz.subtract.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/lorentz/vector._compute.lorentz.t.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/lorentz/vector._compute.lorentz.t2.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/lorentz/vector._compute.lorentz.tau.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/lorentz/vector._compute.lorentz.tau2.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/lorentz/vector._compute.lorentz.to_beta3.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/lorentz/vector._compute.lorentz.transform4D.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/lorentz/vector._compute.lorentz.unit.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/planar/vector._compute.planar.add.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/planar/vector._compute.planar.deltaphi.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/planar/vector._compute.planar.dot.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/planar/vector._compute.planar.equal.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/planar/vector._compute.planar.is_antiparallel.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/planar/vector._compute.planar.is_parallel.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/planar/vector._compute.planar.is_perpendicular.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/planar/vector._compute.planar.isclose.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/planar/vector._compute.planar.not_equal.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/planar/vector._compute.planar.phi.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/planar/vector._compute.planar.rho.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/planar/vector._compute.planar.rho2.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/planar/vector._compute.planar.rotateZ.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/planar/vector._compute.planar.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/planar/vector._compute.planar.scale.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/planar/vector._compute.planar.subtract.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/planar/vector._compute.planar.transform2D.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/planar/vector._compute.planar.unit.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/planar/vector._compute.planar.x.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/planar/vector._compute.planar.y.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/spatial/vector._compute.spatial.add.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/spatial/vector._compute.spatial.costheta.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/spatial/vector._compute.spatial.cottheta.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/spatial/vector._compute.spatial.cross.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/spatial/vector._compute.spatial.deltaR.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/spatial/vector._compute.spatial.deltaR2.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/spatial/vector._compute.spatial.deltaangle.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/spatial/vector._compute.spatial.deltaeta.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/spatial/vector._compute.spatial.dot.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/spatial/vector._compute.spatial.equal.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/spatial/vector._compute.spatial.eta.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/spatial/vector._compute.spatial.is_antiparallel.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/spatial/vector._compute.spatial.is_parallel.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/spatial/vector._compute.spatial.is_perpendicular.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/spatial/vector._compute.spatial.isclose.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/spatial/vector._compute.spatial.mag.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/spatial/vector._compute.spatial.mag2.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/spatial/vector._compute.spatial.not_equal.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/spatial/vector._compute.spatial.rotateX.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/spatial/vector._compute.spatial.rotateY.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/spatial/vector._compute.spatial.rotate_axis.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/spatial/vector._compute.spatial.rotate_euler.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/spatial/vector._compute.spatial.rotate_quaternion.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/spatial/vector._compute.spatial.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/spatial/vector._compute.spatial.scale.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/spatial/vector._compute.spatial.subtract.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/spatial/vector._compute.spatial.theta.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/spatial/vector._compute.spatial.transform3D.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/spatial/vector._compute.spatial.unit.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/spatial/vector._compute.spatial.z.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/compute/vector._compute.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/inheritance.svg +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/modules.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/vector._methods.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/vector._typeutils.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/api/vector.rst +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/conf.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/make.bat +0 -0
- {vector-1.4.0 → vector-1.4.2}/docs/usage/structure.md +0 -0
- {vector-1.4.0 → vector-1.4.2}/environment.yml +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/__init__.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/lorentz/Et.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/lorentz/Et2.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/lorentz/Mt.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/lorentz/Mt2.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/lorentz/__init__.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/lorentz/add.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/lorentz/beta.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/lorentz/boostX_beta.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/lorentz/boostX_gamma.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/lorentz/boostY_beta.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/lorentz/boostY_gamma.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/lorentz/boostZ_beta.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/lorentz/boostZ_gamma.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/lorentz/boost_beta3.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/lorentz/boost_p4.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/lorentz/deltaRapidityPhi.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/lorentz/deltaRapidityPhi2.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/lorentz/dot.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/lorentz/equal.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/lorentz/gamma.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/lorentz/is_lightlike.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/lorentz/is_spacelike.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/lorentz/is_timelike.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/lorentz/isclose.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/lorentz/not_equal.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/lorentz/rapidity.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/lorentz/scale.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/lorentz/subtract.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/lorentz/t.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/lorentz/t2.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/lorentz/tau.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/lorentz/tau2.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/lorentz/to_beta3.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/lorentz/transform4D.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/lorentz/unit.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/planar/__init__.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/planar/add.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/planar/deltaphi.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/planar/dot.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/planar/equal.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/planar/is_antiparallel.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/planar/is_parallel.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/planar/is_perpendicular.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/planar/isclose.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/planar/not_equal.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/planar/phi.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/planar/rho.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/planar/rho2.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/planar/rotateZ.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/planar/scale.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/planar/subtract.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/planar/transform2D.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/planar/unit.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/planar/x.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/planar/y.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/spatial/__init__.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/spatial/add.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/spatial/costheta.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/spatial/cottheta.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/spatial/cross.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/spatial/deltaR.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/spatial/deltaR2.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/spatial/deltaeta.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/spatial/dot.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/spatial/equal.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/spatial/eta.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/spatial/is_antiparallel.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/spatial/is_parallel.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/spatial/is_perpendicular.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/spatial/isclose.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/spatial/mag.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/spatial/mag2.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/spatial/not_equal.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/spatial/rotateX.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/spatial/rotateY.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/spatial/rotate_axis.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/spatial/rotate_euler.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/spatial/rotate_quaternion.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/spatial/scale.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/spatial/subtract.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/spatial/theta.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/spatial/transform3D.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/spatial/unit.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_compute/spatial/z.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_methods.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/_typeutils.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/backends/__init__.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/backends/_numba.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/backends/_numba_object.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/backends/awkward.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/backends/awkward_constructors.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/backends/numba_numpy.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/py.typed +0 -0
- {vector-1.4.0 → vector-1.4.2}/src/vector/version.pyi +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/__init__.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/backends/__init__.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/backends/test_awkward.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/backends/test_awkward_numba.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/backends/test_dask_awkward.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/backends/test_numba_numpy.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/backends/test_numba_object.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/backends/test_numpy.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/backends/test_object.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/backends/test_operators.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/backends/test_sympy.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/__init__.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/lorentz/__init__.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/lorentz/test_Et.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/lorentz/test_Et2.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/lorentz/test_Mt.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/lorentz/test_Mt2.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/lorentz/test_beta.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/lorentz/test_boostX_beta.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/lorentz/test_boostX_gamma.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/lorentz/test_boostY_beta.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/lorentz/test_boostY_gamma.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/lorentz/test_boostZ_beta.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/lorentz/test_boostZ_gamma.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/lorentz/test_boost_beta3.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/lorentz/test_boost_p4.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/lorentz/test_deltaRapidityPhi.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/lorentz/test_deltaRapidityPhi2.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/lorentz/test_gamma.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/lorentz/test_rapidity.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/lorentz/test_t.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/lorentz/test_t2.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/lorentz/test_tau.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/lorentz/test_tau2.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/lorentz/test_to_beta3.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/planar/__init__.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/planar/test_deltaphi.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/planar/test_phi.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/planar/test_rho.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/planar/test_rho2.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/planar/test_rotateZ.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/planar/test_x.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/planar/test_y.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/spatial/__init__.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/spatial/test_costheta.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/spatial/test_cottheta.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/spatial/test_cross.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/spatial/test_deltaR.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/spatial/test_deltaR2.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/spatial/test_deltaangle.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/spatial/test_deltaeta.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/spatial/test_eta.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/spatial/test_mag.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/spatial/test_mag2.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/spatial/test_rotateX.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/spatial/test_rotateY.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/spatial/test_rotate_axis.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/spatial/test_rotate_euler.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/spatial/test_rotate_quaternion.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/spatial/test_theta.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/spatial/test_z.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/lorentz/__init__.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/lorentz/test_Mt.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/lorentz/test_Mt2.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/lorentz/test_boostX_beta.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/lorentz/test_boostX_gamma.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/lorentz/test_boostY_beta.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/lorentz/test_boostY_gamma.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/lorentz/test_boostZ_beta.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/lorentz/test_boostZ_gamma.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/lorentz/test_boost_beta3.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/lorentz/test_boost_p4.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/lorentz/test_deltaRapidityPhi.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/lorentz/test_deltaRapidityPhi2.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/lorentz/test_gamma.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/lorentz/test_is_lightlike.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/lorentz/test_is_spacelike.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/lorentz/test_is_timelike.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/lorentz/test_rapidity.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/lorentz/test_t.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/lorentz/test_t2.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/lorentz/test_tau.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/lorentz/test_tau2.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/lorentz/test_to_beta3.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/planar/__init__.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/planar/test_deltaphi.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/planar/test_phi.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/planar/test_rho.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/planar/test_rho2.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/planar/test_rotateZ.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/planar/test_x.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/planar/test_y.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/spatial/__init__.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/spatial/test_costheta.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/spatial/test_cottheta.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/spatial/test_cross.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/spatial/test_deltaR.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/spatial/test_deltaR2.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/spatial/test_deltaangle.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/spatial/test_deltaeta.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/spatial/test_eta.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/spatial/test_mag.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/spatial/test_mag2.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/spatial/test_rotateX.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/spatial/test_rotateY.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/spatial/test_rotate_axis.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/spatial/test_rotate_euler.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/spatial/test_rotate_quaternion.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/spatial/test_theta.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/spatial/test_z.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/test_add.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/test_conversions.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/test_dot.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/test_equal.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/test_is_antiparallel.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/test_is_parallel.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/test_is_perpendicular.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/test_not_equal.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/sympy/test_subtract.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/test_add.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/test_conversions.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/test_dot.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/test_equal.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/test_isclose.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/test_not_equal.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/test_scale.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/compute/test_subtract.py +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/samples/issue-161-v2.pkl +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/samples/issue-161.pkl +0 -0
- {vector-1.4.0 → vector-1.4.2}/tests/test_methods.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@6149ea5740be74af77f260b9db67e633f6b0a9a1 # v1.4.2
|
|
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
|
|
@@ -23,7 +23,6 @@ jobs:
|
|
|
23
23
|
- uses: actions/setup-python@v5
|
|
24
24
|
with:
|
|
25
25
|
python-version: 3.x
|
|
26
|
-
- uses: pre-commit/action@v3.0.1
|
|
27
26
|
- name: PyLint
|
|
28
27
|
run: |
|
|
29
28
|
echo "::add-matcher::$GITHUB_WORKSPACE/.github/matchers/pylint.json"
|
|
@@ -91,10 +90,10 @@ jobs:
|
|
|
91
90
|
- name: Install package
|
|
92
91
|
run: python -m pip install -e .[dev]
|
|
93
92
|
|
|
94
|
-
- name: Install awkward v1
|
|
95
|
-
run: python -m pip install -U "awkward<2"
|
|
93
|
+
- name: Install awkward v1 and numpy v1
|
|
94
|
+
run: python -m pip install -U "awkward<2" "numpy<2"
|
|
96
95
|
|
|
97
|
-
- name: Run doctests on Python 3.11 with awkward v1.x
|
|
96
|
+
- name: Run doctests on Python 3.11 with awkward v1.x and numpy v1.x
|
|
98
97
|
if: matrix.python-version == '3.11'
|
|
99
98
|
run: python -m pytest -ra --doctest-plus src/vector/
|
|
100
99
|
|
|
@@ -128,7 +127,7 @@ jobs:
|
|
|
128
127
|
run: python -m pip install -e .[dev]
|
|
129
128
|
|
|
130
129
|
- name: Install awkward v2
|
|
131
|
-
run: python -m pip install -U
|
|
130
|
+
run: python -m pip install -U awkward "numpy<2.1"
|
|
132
131
|
|
|
133
132
|
- name: Run doctests on Python 3.11 with awkward v2.x
|
|
134
133
|
if: matrix.python-version == 3.11
|
|
@@ -137,16 +136,8 @@ jobs:
|
|
|
137
136
|
- name: Test package with awkward v2.x
|
|
138
137
|
run: python -m pytest -ra --cov=vector --ignore tests/test_notebooks.py .
|
|
139
138
|
|
|
140
|
-
- name: Install numpy v2
|
|
141
|
-
if: matrix.python-version != 3.8
|
|
142
|
-
run: python -m pip install "numpy>=2.0.0b1"
|
|
143
|
-
|
|
144
|
-
- name: Test package with numpy v2.x
|
|
145
|
-
if: matrix.python-version != 3.8
|
|
146
|
-
run: python -m pytest -ra --cov=vector --ignore tests/test_notebooks.py .
|
|
147
|
-
|
|
148
139
|
- name: Upload coverage report
|
|
149
|
-
uses: codecov/codecov-action@v4.
|
|
140
|
+
uses: codecov/codecov-action@v4.5.0
|
|
150
141
|
with:
|
|
151
142
|
token: ${{ secrets.CODECOV_TOKEN }}
|
|
152
143
|
|
|
@@ -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.
|
|
22
|
+
rev: "v0.6.1"
|
|
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.11.1
|
|
35
30
|
hooks:
|
|
36
31
|
- id: mypy
|
|
37
32
|
files: src
|
|
@@ -42,7 +37,7 @@ repos:
|
|
|
42
37
|
- sympy
|
|
43
38
|
|
|
44
39
|
- repo: https://github.com/codespell-project/codespell
|
|
45
|
-
rev: v2.
|
|
40
|
+
rev: v2.3.0
|
|
46
41
|
hooks:
|
|
47
42
|
- id: codespell
|
|
48
43
|
exclude: ^docs/usage/intro.ipynb$
|
|
@@ -55,7 +50,7 @@ repos:
|
|
|
55
50
|
exclude: assets/js/webapp\.js
|
|
56
51
|
|
|
57
52
|
- repo: https://github.com/adamchainz/blacken-docs
|
|
58
|
-
rev: 1.
|
|
53
|
+
rev: 1.18.0
|
|
59
54
|
hooks:
|
|
60
55
|
- id: blacken-docs
|
|
61
56
|
args: ["-E"]
|
|
@@ -71,7 +66,7 @@ repos:
|
|
|
71
66
|
- id: rst-inline-touching-normal
|
|
72
67
|
|
|
73
68
|
- repo: https://github.com/nbQA-dev/nbQA
|
|
74
|
-
rev: 1.8.
|
|
69
|
+
rev: 1.8.7
|
|
75
70
|
hooks:
|
|
76
71
|
- id: nbqa-pyupgrade
|
|
77
72
|
args: ["--py37-plus"]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: vector
|
|
3
|
-
Version: 1.4.
|
|
3
|
+
Version: 1.4.2
|
|
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
|
|
@@ -29,7 +29,7 @@ Classifier: Topic :: Scientific/Engineering :: Mathematics
|
|
|
29
29
|
Classifier: Topic :: Scientific/Engineering :: Physics
|
|
30
30
|
Classifier: Typing :: Typed
|
|
31
31
|
Requires-Python: >=3.8
|
|
32
|
-
Requires-Dist: numpy
|
|
32
|
+
Requires-Dist: numpy<2.1,>=1.13.3
|
|
33
33
|
Requires-Dist: packaging>=19
|
|
34
34
|
Provides-Extra: awkward
|
|
35
35
|
Requires-Dist: awkward>=1.2; extra == 'awkward'
|
|
@@ -78,7 +78,6 @@ Description-Content-Type: text/markdown
|
|
|
78
78
|
[![codecov percentage][codecov-badge]][codecov-link]
|
|
79
79
|
[![GitHub Discussion][github-discussions-badge]][github-discussions-link]
|
|
80
80
|
[![Gitter][gitter-badge]][gitter-link]
|
|
81
|
-
[![Code style: black][black-badge]][black-link]
|
|
82
81
|
|
|
83
82
|
[![PyPI platforms][pypi-platforms]][pypi-link]
|
|
84
83
|
[![PyPI version][pypi-version]][pypi-link]
|
|
@@ -99,7 +98,7 @@ Main features of Vector:
|
|
|
99
98
|
- [SymPy](https://www.sympy.org/en/index.html) vectors
|
|
100
99
|
- NumPy arrays of vectors (as a [structured array](https://numpy.org/doc/stable/user/basics.rec.html) subclass)
|
|
101
100
|
- [Awkward Arrays](https://awkward-array.org/) of vectors
|
|
102
|
-
- potential for more: CuPy, TensorFlow, Torch
|
|
101
|
+
- potential for more: CuPy, TensorFlow, Torch...
|
|
103
102
|
- Awkward backend also implemented in [Numba](https://numba.pydata.org/) for JIT-compiled calculations on vectors.
|
|
104
103
|
- [JAX](https://awkward-array.org/doc/main/user-guide/how-to-specialize-differentiate-jax.html) and [Dask](https://dask-awkward.readthedocs.io/en/stable/) support through Awkward Arrays.
|
|
105
104
|
- Distinction between geometrical vectors, which have a minimum of attribute and method names, and vectors representing momentum, which have synonyms like `pt` = `rho`, `energy` = `t`, `mass` = `tau`.
|
|
@@ -831,8 +830,121 @@ def compute_masses(array):
|
|
|
831
830
|
compute_masses(array)
|
|
832
831
|
```
|
|
833
832
|
|
|
833
|
+
## Sub-classing Awkward mixins
|
|
834
|
+
|
|
835
|
+
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.
|
|
836
|
+
|
|
837
|
+
For instance, the `MomentumAwkward` classes can be extended in the following way:
|
|
838
|
+
|
|
839
|
+
```py
|
|
840
|
+
behavior = vector.backends.awkward.behavior
|
|
841
|
+
|
|
842
|
+
|
|
843
|
+
@ak.mixin_class(behavior)
|
|
844
|
+
class TwoVector(vector.backends.awkward.MomentumAwkward2D):
|
|
845
|
+
pass
|
|
846
|
+
|
|
847
|
+
|
|
848
|
+
@ak.mixin_class(behavior)
|
|
849
|
+
class ThreeVector(vector.backends.awkward.MomentumAwkward3D):
|
|
850
|
+
pass
|
|
851
|
+
|
|
852
|
+
|
|
853
|
+
# required for transforming vectors
|
|
854
|
+
# the class names must always end with "Array"
|
|
855
|
+
TwoVectorArray.ProjectionClass2D = TwoVectorArray # noqa: F821
|
|
856
|
+
TwoVectorArray.ProjectionClass3D = ThreeVectorArray # noqa: F821
|
|
857
|
+
TwoVectorArray.MomentumClass = TwoVectorArray # noqa: F821
|
|
858
|
+
|
|
859
|
+
ThreeVectorArray.ProjectionClass2D = TwoVectorArray # noqa: F821
|
|
860
|
+
ThreeVectorArray.ProjectionClass3D = ThreeVectorArray # noqa: F821
|
|
861
|
+
ThreeVectorArray.MomentumClass = ThreeVectorArray # noqa: F821
|
|
862
|
+
|
|
863
|
+
vec = ak.zip(
|
|
864
|
+
{
|
|
865
|
+
"pt": [[1, 2], [], [3], [4]],
|
|
866
|
+
"phi": [[1.2, 1.4], [], [1.6], [3.4]],
|
|
867
|
+
},
|
|
868
|
+
with_name="TwoVector",
|
|
869
|
+
behavior=behavior,
|
|
870
|
+
)
|
|
871
|
+
|
|
872
|
+
vec
|
|
873
|
+
```
|
|
874
|
+
|
|
875
|
+
The binary operators are not automatically registered by awkward, but vector methods can be used to perform operations on sub-classed vectors.
|
|
876
|
+
|
|
877
|
+
```py
|
|
878
|
+
vec.add(vec)
|
|
879
|
+
```
|
|
880
|
+
|
|
881
|
+
Similarly, other vector methods can be used by the new methods internally.
|
|
882
|
+
|
|
883
|
+
```py
|
|
884
|
+
@ak.mixin_class(behavior)
|
|
885
|
+
class LorentzVector(vector.backends.awkward.MomentumAwkward4D):
|
|
886
|
+
@ak.mixin_class_method(np.divide, {numbers.Number})
|
|
887
|
+
def divide(self, factor):
|
|
888
|
+
return self.scale(1 / factor)
|
|
889
|
+
|
|
890
|
+
|
|
891
|
+
# required for transforming vectors
|
|
892
|
+
# the class names must always end with "Array"
|
|
893
|
+
LorentzVectorArray.ProjectionClass2D = TwoVectorArray # noqa: F821
|
|
894
|
+
LorentzVectorArray.ProjectionClass3D = ThreeVectorArray # noqa: F821
|
|
895
|
+
LorentzVectorArray.ProjectionClass4D = LorentzVectorArray # noqa: F821
|
|
896
|
+
LorentzVectorArray.MomentumClass = LorentzVectorArray # noqa: F821
|
|
897
|
+
|
|
898
|
+
vec = ak.zip(
|
|
899
|
+
{
|
|
900
|
+
"pt": [[1, 2], [], [3], [4]],
|
|
901
|
+
"eta": [[1.2, 1.4], [], [1.6], [3.4]],
|
|
902
|
+
"phi": [[0.3, 0.4], [], [0.5], [0.6]],
|
|
903
|
+
"energy": [[50, 51], [], [52], [60]],
|
|
904
|
+
},
|
|
905
|
+
with_name="LorentzVector",
|
|
906
|
+
behavior=behavior,
|
|
907
|
+
)
|
|
908
|
+
|
|
909
|
+
vec / 2
|
|
910
|
+
vec.like(vector.obj(x=1, y=2))
|
|
911
|
+
vec.like(vector.obj(x=1, y=2, z=3))
|
|
912
|
+
```
|
|
913
|
+
|
|
914
|
+
It is also possible to manually add binary operations in vector's behavior dict to enable binary operations.
|
|
915
|
+
|
|
916
|
+
```py
|
|
917
|
+
_binary_dispatch_cls = {
|
|
918
|
+
"TwoVector": TwoVector,
|
|
919
|
+
"ThreeVector": ThreeVector,
|
|
920
|
+
"LorentzVector": LorentzVector,
|
|
921
|
+
}
|
|
922
|
+
_rank = [TwoVector, ThreeVector, LorentzVector]
|
|
923
|
+
|
|
924
|
+
for lhs, lhs_to in _binary_dispatch_cls.items():
|
|
925
|
+
for rhs, rhs_to in _binary_dispatch_cls.items():
|
|
926
|
+
out_to = min(lhs_to, rhs_to, key=_rank.index)
|
|
927
|
+
behavior[(np.add, lhs, rhs)] = out_to.add
|
|
928
|
+
behavior[(np.subtract, lhs, rhs)] = out_to.subtract
|
|
929
|
+
|
|
930
|
+
vec + vec
|
|
931
|
+
vec.to_2D() + vec.to_2D()
|
|
932
|
+
```
|
|
933
|
+
|
|
934
|
+
Finally, instead of manually registering the superclass ufuncs, one can use the utility `copy_behaviors` function to copy behavior items for a new subclass -
|
|
935
|
+
|
|
936
|
+
```py
|
|
937
|
+
behavior.update(ak._util.copy_behaviors("Vector2D", "TwoVector", behavior))
|
|
938
|
+
behavior.update(ak._util.copy_behaviors("Vector3D", "ThreeVector", behavior))
|
|
939
|
+
behavior.update(ak._util.copy_behaviors("Momentum4D", "LorentzVector", behavior))
|
|
940
|
+
|
|
941
|
+
vec + vec
|
|
942
|
+
vec.to_2D() + vec.to_2D()
|
|
943
|
+
```
|
|
944
|
+
|
|
834
945
|
## Talks about vector
|
|
835
946
|
|
|
947
|
+
- 3rd July 2024 - [A new SymPy backend for vector: uniting experimental and theoretical physicists](https://indi.to/pfTC6) - [PyHEP 2024 (virtual)](https://indico.cern.ch/event/1384010/)
|
|
836
948
|
- 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)
|
|
837
949
|
- 13th September 2022 - [Constructing HEP vectors and analyzing HEP data using Vector](https://indi.to/bPmMc) - [PyHEP 2022 (virtual)](https://indico.cern.ch/event/1150631/) [🎥](https://www.youtube.com/watch?v=4iveMzrbe7s&list=PLKZ9c4ONm-VkohKG-skzEG_gklMaSgaO7&index=15)
|
|
838
950
|
- 20th July 2022 - [Analysis Grand Challenge / HEP Scientific Python Ecosystem](https://indico.cern.ch/event/1151329/timetable/#3-analysis-grand-challenge-hep) - [DANCE/CoDaS@Snowmass 2022 computational and data science software training](https://indico.cern.ch/event/1151329/)
|
|
@@ -878,14 +990,12 @@ development environment.
|
|
|
878
990
|
|
|
879
991
|
## Acknowledgements
|
|
880
992
|
|
|
881
|
-
This library was primarily developed by Jim Pivarski, Henry Schreiner, and Eduardo Rodrigues.
|
|
993
|
+
This library was primarily developed by Jim Pivarski, Henry Schreiner, Saransh Chopra, and Eduardo Rodrigues.
|
|
882
994
|
|
|
883
|
-
Support for this work was provided by the National Science Foundation cooperative agreement OAC-1836650 (IRIS-HEP) and OAC-1450377 (DIANA/HEP). Any opinions, findings, conclusions or recommendations expressed in this material are those of the authors and do not necessarily reflect the views of the National Science Foundation.
|
|
995
|
+
Support for this work was provided by the National Science Foundation cooperative agreement OAC-1836650 and PHY-2323298 (IRIS-HEP) and OAC-1450377 (DIANA/HEP). Any opinions, findings, conclusions or recommendations expressed in this material are those of the authors and do not necessarily reflect the views of the National Science Foundation.
|
|
884
996
|
|
|
885
997
|
[actions-badge]: https://github.com/scikit-hep/vector/actions/workflows/ci.yml/badge.svg
|
|
886
998
|
[actions-link]: https://github.com/scikit-hep/vector/actions
|
|
887
|
-
[black-badge]: https://img.shields.io/badge/code%20style-black-000000.svg
|
|
888
|
-
[black-link]: https://github.com/psf/black
|
|
889
999
|
[codecov-badge]: https://codecov.io/gh/scikit-hep/vector/branch/main/graph/badge.svg?token=YBv60ueORQ
|
|
890
1000
|
[codecov-link]: https://codecov.io/gh/scikit-hep/vector
|
|
891
1001
|
[conda-version]: https://img.shields.io/conda/vn/conda-forge/vector.svg
|
|
@@ -896,7 +1006,7 @@ Support for this work was provided by the National Science Foundation cooperativ
|
|
|
896
1006
|
[gitter-link]: https://gitter.im/Scikit-HEP/vector?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge
|
|
897
1007
|
[license-badge]: https://img.shields.io/badge/License-BSD_3--Clause-blue.svg
|
|
898
1008
|
[license-link]: https://opensource.org/licenses/BSD-3-Clause
|
|
899
|
-
[pre-commit-badge]: https://results.pre-commit.ci/badge/github/scikit-hep/vector/
|
|
1009
|
+
[pre-commit-badge]: https://results.pre-commit.ci/badge/github/scikit-hep/vector/main.svg
|
|
900
1010
|
[pre-commit-link]: https://results.pre-commit.ci/repo/github/scikit-hep/vector
|
|
901
1011
|
[pypi-link]: https://pypi.org/project/vector/
|
|
902
1012
|
[pypi-platforms]: https://img.shields.io/pypi/pyversions/vector
|
|
@@ -8,7 +8,6 @@
|
|
|
8
8
|
[![codecov percentage][codecov-badge]][codecov-link]
|
|
9
9
|
[![GitHub Discussion][github-discussions-badge]][github-discussions-link]
|
|
10
10
|
[![Gitter][gitter-badge]][gitter-link]
|
|
11
|
-
[![Code style: black][black-badge]][black-link]
|
|
12
11
|
|
|
13
12
|
[![PyPI platforms][pypi-platforms]][pypi-link]
|
|
14
13
|
[![PyPI version][pypi-version]][pypi-link]
|
|
@@ -29,7 +28,7 @@ Main features of Vector:
|
|
|
29
28
|
- [SymPy](https://www.sympy.org/en/index.html) vectors
|
|
30
29
|
- NumPy arrays of vectors (as a [structured array](https://numpy.org/doc/stable/user/basics.rec.html) subclass)
|
|
31
30
|
- [Awkward Arrays](https://awkward-array.org/) of vectors
|
|
32
|
-
- potential for more: CuPy, TensorFlow, Torch
|
|
31
|
+
- potential for more: CuPy, TensorFlow, Torch...
|
|
33
32
|
- Awkward backend also implemented in [Numba](https://numba.pydata.org/) for JIT-compiled calculations on vectors.
|
|
34
33
|
- [JAX](https://awkward-array.org/doc/main/user-guide/how-to-specialize-differentiate-jax.html) and [Dask](https://dask-awkward.readthedocs.io/en/stable/) support through Awkward Arrays.
|
|
35
34
|
- Distinction between geometrical vectors, which have a minimum of attribute and method names, and vectors representing momentum, which have synonyms like `pt` = `rho`, `energy` = `t`, `mass` = `tau`.
|
|
@@ -761,8 +760,121 @@ def compute_masses(array):
|
|
|
761
760
|
compute_masses(array)
|
|
762
761
|
```
|
|
763
762
|
|
|
763
|
+
## Sub-classing Awkward mixins
|
|
764
|
+
|
|
765
|
+
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.
|
|
766
|
+
|
|
767
|
+
For instance, the `MomentumAwkward` classes can be extended in the following way:
|
|
768
|
+
|
|
769
|
+
```py
|
|
770
|
+
behavior = vector.backends.awkward.behavior
|
|
771
|
+
|
|
772
|
+
|
|
773
|
+
@ak.mixin_class(behavior)
|
|
774
|
+
class TwoVector(vector.backends.awkward.MomentumAwkward2D):
|
|
775
|
+
pass
|
|
776
|
+
|
|
777
|
+
|
|
778
|
+
@ak.mixin_class(behavior)
|
|
779
|
+
class ThreeVector(vector.backends.awkward.MomentumAwkward3D):
|
|
780
|
+
pass
|
|
781
|
+
|
|
782
|
+
|
|
783
|
+
# required for transforming vectors
|
|
784
|
+
# the class names must always end with "Array"
|
|
785
|
+
TwoVectorArray.ProjectionClass2D = TwoVectorArray # noqa: F821
|
|
786
|
+
TwoVectorArray.ProjectionClass3D = ThreeVectorArray # noqa: F821
|
|
787
|
+
TwoVectorArray.MomentumClass = TwoVectorArray # noqa: F821
|
|
788
|
+
|
|
789
|
+
ThreeVectorArray.ProjectionClass2D = TwoVectorArray # noqa: F821
|
|
790
|
+
ThreeVectorArray.ProjectionClass3D = ThreeVectorArray # noqa: F821
|
|
791
|
+
ThreeVectorArray.MomentumClass = ThreeVectorArray # noqa: F821
|
|
792
|
+
|
|
793
|
+
vec = ak.zip(
|
|
794
|
+
{
|
|
795
|
+
"pt": [[1, 2], [], [3], [4]],
|
|
796
|
+
"phi": [[1.2, 1.4], [], [1.6], [3.4]],
|
|
797
|
+
},
|
|
798
|
+
with_name="TwoVector",
|
|
799
|
+
behavior=behavior,
|
|
800
|
+
)
|
|
801
|
+
|
|
802
|
+
vec
|
|
803
|
+
```
|
|
804
|
+
|
|
805
|
+
The binary operators are not automatically registered by awkward, but vector methods can be used to perform operations on sub-classed vectors.
|
|
806
|
+
|
|
807
|
+
```py
|
|
808
|
+
vec.add(vec)
|
|
809
|
+
```
|
|
810
|
+
|
|
811
|
+
Similarly, other vector methods can be used by the new methods internally.
|
|
812
|
+
|
|
813
|
+
```py
|
|
814
|
+
@ak.mixin_class(behavior)
|
|
815
|
+
class LorentzVector(vector.backends.awkward.MomentumAwkward4D):
|
|
816
|
+
@ak.mixin_class_method(np.divide, {numbers.Number})
|
|
817
|
+
def divide(self, factor):
|
|
818
|
+
return self.scale(1 / factor)
|
|
819
|
+
|
|
820
|
+
|
|
821
|
+
# required for transforming vectors
|
|
822
|
+
# the class names must always end with "Array"
|
|
823
|
+
LorentzVectorArray.ProjectionClass2D = TwoVectorArray # noqa: F821
|
|
824
|
+
LorentzVectorArray.ProjectionClass3D = ThreeVectorArray # noqa: F821
|
|
825
|
+
LorentzVectorArray.ProjectionClass4D = LorentzVectorArray # noqa: F821
|
|
826
|
+
LorentzVectorArray.MomentumClass = LorentzVectorArray # noqa: F821
|
|
827
|
+
|
|
828
|
+
vec = ak.zip(
|
|
829
|
+
{
|
|
830
|
+
"pt": [[1, 2], [], [3], [4]],
|
|
831
|
+
"eta": [[1.2, 1.4], [], [1.6], [3.4]],
|
|
832
|
+
"phi": [[0.3, 0.4], [], [0.5], [0.6]],
|
|
833
|
+
"energy": [[50, 51], [], [52], [60]],
|
|
834
|
+
},
|
|
835
|
+
with_name="LorentzVector",
|
|
836
|
+
behavior=behavior,
|
|
837
|
+
)
|
|
838
|
+
|
|
839
|
+
vec / 2
|
|
840
|
+
vec.like(vector.obj(x=1, y=2))
|
|
841
|
+
vec.like(vector.obj(x=1, y=2, z=3))
|
|
842
|
+
```
|
|
843
|
+
|
|
844
|
+
It is also possible to manually add binary operations in vector's behavior dict to enable binary operations.
|
|
845
|
+
|
|
846
|
+
```py
|
|
847
|
+
_binary_dispatch_cls = {
|
|
848
|
+
"TwoVector": TwoVector,
|
|
849
|
+
"ThreeVector": ThreeVector,
|
|
850
|
+
"LorentzVector": LorentzVector,
|
|
851
|
+
}
|
|
852
|
+
_rank = [TwoVector, ThreeVector, LorentzVector]
|
|
853
|
+
|
|
854
|
+
for lhs, lhs_to in _binary_dispatch_cls.items():
|
|
855
|
+
for rhs, rhs_to in _binary_dispatch_cls.items():
|
|
856
|
+
out_to = min(lhs_to, rhs_to, key=_rank.index)
|
|
857
|
+
behavior[(np.add, lhs, rhs)] = out_to.add
|
|
858
|
+
behavior[(np.subtract, lhs, rhs)] = out_to.subtract
|
|
859
|
+
|
|
860
|
+
vec + vec
|
|
861
|
+
vec.to_2D() + vec.to_2D()
|
|
862
|
+
```
|
|
863
|
+
|
|
864
|
+
Finally, instead of manually registering the superclass ufuncs, one can use the utility `copy_behaviors` function to copy behavior items for a new subclass -
|
|
865
|
+
|
|
866
|
+
```py
|
|
867
|
+
behavior.update(ak._util.copy_behaviors("Vector2D", "TwoVector", behavior))
|
|
868
|
+
behavior.update(ak._util.copy_behaviors("Vector3D", "ThreeVector", behavior))
|
|
869
|
+
behavior.update(ak._util.copy_behaviors("Momentum4D", "LorentzVector", behavior))
|
|
870
|
+
|
|
871
|
+
vec + vec
|
|
872
|
+
vec.to_2D() + vec.to_2D()
|
|
873
|
+
```
|
|
874
|
+
|
|
764
875
|
## Talks about vector
|
|
765
876
|
|
|
877
|
+
- 3rd July 2024 - [A new SymPy backend for vector: uniting experimental and theoretical physicists](https://indi.to/pfTC6) - [PyHEP 2024 (virtual)](https://indico.cern.ch/event/1384010/)
|
|
766
878
|
- 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)
|
|
767
879
|
- 13th September 2022 - [Constructing HEP vectors and analyzing HEP data using Vector](https://indi.to/bPmMc) - [PyHEP 2022 (virtual)](https://indico.cern.ch/event/1150631/) [🎥](https://www.youtube.com/watch?v=4iveMzrbe7s&list=PLKZ9c4ONm-VkohKG-skzEG_gklMaSgaO7&index=15)
|
|
768
880
|
- 20th July 2022 - [Analysis Grand Challenge / HEP Scientific Python Ecosystem](https://indico.cern.ch/event/1151329/timetable/#3-analysis-grand-challenge-hep) - [DANCE/CoDaS@Snowmass 2022 computational and data science software training](https://indico.cern.ch/event/1151329/)
|
|
@@ -808,14 +920,12 @@ development environment.
|
|
|
808
920
|
|
|
809
921
|
## Acknowledgements
|
|
810
922
|
|
|
811
|
-
This library was primarily developed by Jim Pivarski, Henry Schreiner, and Eduardo Rodrigues.
|
|
923
|
+
This library was primarily developed by Jim Pivarski, Henry Schreiner, Saransh Chopra, and Eduardo Rodrigues.
|
|
812
924
|
|
|
813
|
-
Support for this work was provided by the National Science Foundation cooperative agreement OAC-1836650 (IRIS-HEP) and OAC-1450377 (DIANA/HEP). Any opinions, findings, conclusions or recommendations expressed in this material are those of the authors and do not necessarily reflect the views of the National Science Foundation.
|
|
925
|
+
Support for this work was provided by the National Science Foundation cooperative agreement OAC-1836650 and PHY-2323298 (IRIS-HEP) and OAC-1450377 (DIANA/HEP). Any opinions, findings, conclusions or recommendations expressed in this material are those of the authors and do not necessarily reflect the views of the National Science Foundation.
|
|
814
926
|
|
|
815
927
|
[actions-badge]: https://github.com/scikit-hep/vector/actions/workflows/ci.yml/badge.svg
|
|
816
928
|
[actions-link]: https://github.com/scikit-hep/vector/actions
|
|
817
|
-
[black-badge]: https://img.shields.io/badge/code%20style-black-000000.svg
|
|
818
|
-
[black-link]: https://github.com/psf/black
|
|
819
929
|
[codecov-badge]: https://codecov.io/gh/scikit-hep/vector/branch/main/graph/badge.svg?token=YBv60ueORQ
|
|
820
930
|
[codecov-link]: https://codecov.io/gh/scikit-hep/vector
|
|
821
931
|
[conda-version]: https://img.shields.io/conda/vn/conda-forge/vector.svg
|
|
@@ -826,7 +936,7 @@ Support for this work was provided by the National Science Foundation cooperativ
|
|
|
826
936
|
[gitter-link]: https://gitter.im/Scikit-HEP/vector?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge
|
|
827
937
|
[license-badge]: https://img.shields.io/badge/License-BSD_3--Clause-blue.svg
|
|
828
938
|
[license-link]: https://opensource.org/licenses/BSD-3-Clause
|
|
829
|
-
[pre-commit-badge]: https://results.pre-commit.ci/badge/github/scikit-hep/vector/
|
|
939
|
+
[pre-commit-badge]: https://results.pre-commit.ci/badge/github/scikit-hep/vector/main.svg
|
|
830
940
|
[pre-commit-link]: https://results.pre-commit.ci/repo/github/scikit-hep/vector
|
|
831
941
|
[pypi-link]: https://pypi.org/project/vector/
|
|
832
942
|
[pypi-platforms]: https://img.shields.io/pypi/pyversions/vector
|
|
@@ -2,6 +2,48 @@
|
|
|
2
2
|
|
|
3
3
|
## Version 1.4
|
|
4
4
|
|
|
5
|
+
### Version 1.4.2
|
|
6
|
+
|
|
7
|
+
#### Fixes
|
|
8
|
+
|
|
9
|
+
- fix: depend on numpy<2.1 to support numba
|
|
10
|
+
- fix: fix ci for awkward v1.x (numpy v2 is out)
|
|
11
|
+
- fix: sympy tests (sympy v1.13)
|
|
12
|
+
|
|
13
|
+
#### Documentation
|
|
14
|
+
|
|
15
|
+
- docs: update intro notebook + readme
|
|
16
|
+
|
|
17
|
+
[#476]: https://github.com/scikit-hep/vector/pull/476
|
|
18
|
+
[#479]: https://github.com/scikit-hep/vector/pull/479
|
|
19
|
+
[#485]: https://github.com/scikit-hep/vector/pull/485
|
|
20
|
+
[#489]: https://github.com/scikit-hep/vector/pull/489
|
|
21
|
+
|
|
22
|
+
### Version 1.4.1
|
|
23
|
+
|
|
24
|
+
#### Fixes
|
|
25
|
+
|
|
26
|
+
- fix: sympy backend on numpy 2.0 (full numpy 2.0 support) [#473][]
|
|
27
|
+
- fix: add lower and upper bounds for deltaangle [#465][]
|
|
28
|
+
- fix: maximum for SymPy backend is the identity function now [#465][]
|
|
29
|
+
- fix: get coordinate classes to work for numpy [#466][]
|
|
30
|
+
|
|
31
|
+
#### Documentation
|
|
32
|
+
|
|
33
|
+
- docs: add basic docs for sub-classing awkward mixins [#468][]
|
|
34
|
+
|
|
35
|
+
#### Maintenance
|
|
36
|
+
|
|
37
|
+
- chore: add missing compute function tests [#454]
|
|
38
|
+
- ci: Add GitHub artifact attestations to package distribution [#470][]
|
|
39
|
+
|
|
40
|
+
[#473]: https://github.com/scikit-hep/vector/pull/473
|
|
41
|
+
[#465]: https://github.com/scikit-hep/vector/pull/465
|
|
42
|
+
[#466]: https://github.com/scikit-hep/vector/pull/466
|
|
43
|
+
[#468]: https://github.com/scikit-hep/vector/pull/468
|
|
44
|
+
[#454]: https://github.com/scikit-hep/vector/pull/454
|
|
45
|
+
[#470]: https://github.com/scikit-hep/vector/pull/470
|
|
46
|
+
|
|
5
47
|
### Version 1.4.0
|
|
6
48
|
|
|
7
49
|
#### Features
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
.. image:: _images/vector-logo.png
|
|
7
7
|
|
|
8
|
-
|Action status| |Documentation Status| |pre-commit.ci status| |coverage| |GitHub Discussion| |Gitter|
|
|
8
|
+
|Action status| |Documentation Status| |pre-commit.ci status| |coverage| |GitHub Discussion| |Gitter|
|
|
9
9
|
|
|
10
10
|
|PyPI platforms| |PyPI version| |Conda latest releasetatus| |DOI| |License| |Scikit-HEP|
|
|
11
11
|
|
|
@@ -21,10 +21,12 @@ Main features of Vector:
|
|
|
21
21
|
* Uses names and conventions set by `ROOT <https://root.cern/>`_'s `TLorentzVector <https://root.cern.ch/doc/master/classTLorentzVector.html>`_ and `Math::LorentzVector <https://root.cern.ch/doc/master/classROOT_1_1Math_1_1LorentzVector.html>`_, as well as `scikit-hep/math <https://github.com/scikit-hep/scikit-hep/tree/master/skhep/math>`_, `uproot-methods TLorentzVector <https://github.com/scikit-hep/uproot3-methods/blob/master/uproot3_methods/classes/TLorentzVector.py>`_, `henryiii/hepvector <https://github.com/henryiii/hepvector>`_, and `coffea.nanoevents.methods.vector <https://coffeateam.github.io/coffea/modules/coffea.nanoevents.methods.vector.html>`_.
|
|
22
22
|
* Implemented on a variety of backends:
|
|
23
23
|
* pure Python objects
|
|
24
|
+
* `SymPy <https://www.sympy.org/en/index.html>`_ vectors
|
|
24
25
|
* NumPy arrays of vectors (as a `structured array <https://numpy.org/doc/stable/user/basics.rec.html>`_ subclass)
|
|
25
26
|
* `Awkward Arrays <https://awkward-array.org/>`_ of vectors
|
|
26
|
-
* potential for more: CuPy, TensorFlow, Torch
|
|
27
|
-
*
|
|
27
|
+
* potential for more: CuPy, TensorFlow, Torch...
|
|
28
|
+
* Awkward and Object backends also implemented in `Numba <https://numba.pydata.org/>`_ for JIT-compiled calculations on vectors.
|
|
29
|
+
* `JAX <https://awkward-array.org/doc/main/user-guide/how-to-specialize-differentiate-jax.html>`_ and `Dask <https://dask-awkward.readthedocs.io/en/stable/>`_ support through Awkward Arrays.
|
|
28
30
|
* Distinction between geometrical vectors, which have a minimum of attribute and method names, and vectors representing momentum, which have synonyms like ``pt`` = ``rho``, ``energy`` = ``t``, ``mass`` = ``tau``.
|
|
29
31
|
|
|
30
32
|
Installation
|
|
@@ -115,14 +117,12 @@ The API reference details the functionality of each ``class`` and ``function`` p
|
|
|
115
117
|
:target: https://github.com/scikit-hep/vector/actions
|
|
116
118
|
.. |Documentation Status| image:: https://readthedocs.org/projects/vector/badge/?version=latest
|
|
117
119
|
:target: https://vector.readthedocs.io/en/latest/?badge=latest
|
|
118
|
-
.. |pre-commit.ci status| image:: https://results.pre-commit.ci/badge/github/scikit-hep/vector/
|
|
120
|
+
.. |pre-commit.ci status| image:: https://results.pre-commit.ci/badge/github/scikit-hep/vector/main.svg
|
|
119
121
|
:target: https://results.pre-commit.ci/repo/github/scikit-hep/vector
|
|
120
122
|
.. |GitHub Discussion| image:: https://img.shields.io/static/v1?label=Discussions&message=Ask&color=blue&logo=github
|
|
121
123
|
:target: https://github.com/scikit-hep/vector/discussions
|
|
122
124
|
.. |Gitter| image:: https://badges.gitter.im/Scikit-HEP/vector.svg
|
|
123
125
|
:target: https://gitter.im/Scikit-HEP/vector?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge
|
|
124
|
-
.. |Code style: black| image:: https://img.shields.io/badge/code%20style-black-000000.svg
|
|
125
|
-
:target: https://github.com/psf/black
|
|
126
126
|
.. |PyPI platforms| image:: https://img.shields.io/pypi/pyversions/vector
|
|
127
127
|
:target: https://pypi.org/project/vector/
|
|
128
128
|
.. |PyPI version| image:: https://badge.fury.io/py/vector.svg
|