From 53fb5fcca36cdd72958a067d582633ea24bd443a Mon Sep 17 00:00:00 2001 From: Saransh Chopra Date: Mon, 26 Aug 2024 15:57:05 +0100 Subject: [PATCH] Drop support for awkward v1 (#434) * Drop support for awkward v1 * style: pre-commit fixes * Fix CI * format * rm awkward v1 pickle file * use nox in ci * Informative name * update notebook tests * dask_awkward should not be installed in lite tests * Use correct python versions * Correct matrix name * Resolve pip backtracking issue * update changelog * fix awkward tests * Update noxfile * Update numpy 2 tests * get rid of numpy 2 nox session * fix notebook tests * update docs * fix record reducers tests --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .github/workflows/ci.yml | 83 ++++---------------- .github/workflows/notebooks.yml | 20 ++--- README.md | 2 +- docs/changelog.md | 10 +++ docs/usage/intro.ipynb | 2 +- noxfile.py | 17 ++-- pyproject.toml | 10 +-- src/vector/__init__.py | 12 +-- src/vector/backends/awkward.py | 30 ++----- src/vector/backends/awkward_constructors.py | 25 +----- tests/backends/test_awkward.py | 53 ++++++------- tests/samples/issue-161.pkl | Bin 231208 -> 0 bytes tests/test_issues.py | 6 +- 13 files changed, 86 insertions(+), 184 deletions(-) delete mode 100644 tests/samples/issue-161.pkl diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1a9efe72..f6fe21a7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -14,6 +14,11 @@ concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: ${{ startsWith(github.ref, 'refs/pull/') }} +env: + # The "FORCE_COLOR" variable, when set to 1, + # tells Nox to colorize itself. + FORCE_COLOR: "1" + jobs: pre-commit: runs-on: ubuntu-latest @@ -28,44 +33,7 @@ jobs: echo "::add-matcher::$GITHUB_WORKSPACE/.github/matchers/pylint.json" pipx run nox -s pylint - check-light: - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - python-version: - - "3.8" - - "3.9" - - "3.10" - - "3.11" - - "3.12" - name: Python ${{ matrix.python-version }} - Light - steps: - - uses: actions/checkout@v4 - - - uses: actions/setup-python@v5 - with: - python-version: ${{ matrix.python-version }} - - - name: Requirements check - run: python -m pip list - - - name: Install package - run: python -m pip install -e .[test] - - - name: Test light package - run: python -m pytest -ra --ignore tests/test_notebooks.py - - - name: Install numpy v2 - if: matrix.python-version != 3.8 - run: python -m pip install "numpy>=2.0.0b1" - - - name: Test light package with numpy v2.x - if: matrix.python-version != 3.8 - run: python -m pytest -ra --ignore tests/test_notebooks.py - - check-awkward-v1: - needs: [check-light] + check-lite: runs-on: ubuntu-latest strategy: fail-fast: false @@ -76,7 +44,7 @@ jobs: - "3.10" - "3.11" - "3.12" - name: Python ${{ matrix.python-version }} - Awkward v1 + name: Python ${{ matrix.python-version }} - Lite steps: - uses: actions/checkout@v4 @@ -87,21 +55,11 @@ jobs: - name: Requirements check run: python -m pip list - - name: Install package - run: python -m pip install -e .[dev] - - - name: Install awkward v1 and numpy v1 - run: python -m pip install -U "awkward<2" "numpy<2" - - - name: Run doctests on Python 3.11 with awkward v1.x and numpy v1.x - if: matrix.python-version == '3.11' - run: python -m pytest -ra --doctest-plus src/vector/ + - name: Test lite package + run: pipx run nox -s lite-${{ matrix.python-version.key || matrix.python-version }} --verbose - - name: Test package with awkward v1.x - run: python -m pytest -ra --cov=vector --ignore tests/test_notebooks.py . - - check-awkward-v2: - needs: [check-light] + check-full: + needs: [check-lite] runs-on: ubuntu-latest strategy: fail-fast: false @@ -112,7 +70,7 @@ jobs: - "3.10" - "3.11" - "3.12" - name: Python ${{ matrix.python-version }} - Awkward v2 + name: Python ${{ matrix.python-version }} - Full steps: - uses: actions/checkout@v4 @@ -123,18 +81,12 @@ jobs: - name: Requirements check run: python -m pip list - - name: Install package - run: python -m pip install -e .[dev] - - - name: Install awkward v2 - run: python -m pip install -U awkward "numpy<2.1" - - - name: Run doctests on Python 3.11 with awkward v2.x + - name: Run doctests on Python 3.11 if: matrix.python-version == 3.11 - run: python -m pytest -ra --doctest-plus src/vector/ + run: pipx run nox -s doctests-${{ matrix.python-version.key || matrix.python-version }} --verbose - - name: Test package with awkward v2.x - run: python -m pytest -ra --cov=vector --ignore tests/test_notebooks.py . + - name: Test package and generate coverage report + run: pipx run nox -s coverage-${{ matrix.python-version.key || matrix.python-version }} --verbose - name: Upload coverage report uses: codecov/codecov-action@v4.5.0 @@ -161,8 +113,7 @@ jobs: run: python -m pytest -ra -m dis --ignore tests/test_notebooks.py pass: - needs: - [pre-commit, check-light, check-awkward-v1, check-awkward-v2, discheck] + needs: [pre-commit, check-lite, check-full, discheck] runs-on: ubuntu-latest steps: - run: echo "All jobs passed" diff --git a/.github/workflows/notebooks.yml b/.github/workflows/notebooks.yml index f932fc4d..830e20cc 100644 --- a/.github/workflows/notebooks.yml +++ b/.github/workflows/notebooks.yml @@ -11,12 +11,14 @@ concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true +env: + # The "FORCE_COLOR" variable, when set to 1, + # tells Nox to colorize itself. + FORCE_COLOR: "1" + jobs: test: runs-on: ubuntu-latest - strategy: - matrix: - python-version: ["3.10"] steps: - uses: actions/checkout@v4 @@ -24,18 +26,10 @@ jobs: - name: Set up Python uses: actions/setup-python@v5 with: - python-version: ${{ matrix.python-version }} - - - name: Install dependencies - run: | - python -m pip install --upgrade pip setuptools wheel - python -m pip install --upgrade .[dev] - python -m pip install numba uproot - python -m pip install jupyter papermill + python-version: "3.10" - name: List installed Python packages run: python -m pip list - name: Test example notebooks - run: | - pytest tests/test_notebooks.py + run: pipx run nox -s notebooks diff --git a/README.md b/README.md index 45c5fac9..7b256697 100644 --- a/README.md +++ b/README.md @@ -44,7 +44,7 @@ This overview is based on the [documentation here](https://vector.readthedocs.io ```python import vector import numpy as np -import awkward as ak # at least version 1.2.0 +import awkward as ak # at least v2.0.0 (vector v1.4.* supports awkward v1 and v2 both) import numba as nb ``` diff --git a/docs/changelog.md b/docs/changelog.md index aad054e3..d56be2d0 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -1,5 +1,15 @@ # Changelog +## Version 1.5 + +### Version 1.5.0 + +#### Breaking + +- drop support for awkward v1 [#434][] + +[#434]: https://github.com/scikit-hep/vector/pull/434 + ## Version 1.4 ### Version 1.4.2 diff --git a/docs/usage/intro.ipynb b/docs/usage/intro.ipynb index f86022cf..8d22682d 100644 --- a/docs/usage/intro.ipynb +++ b/docs/usage/intro.ipynb @@ -38,7 +38,7 @@ "\n", "import numbers\n", "\n", - "import awkward as ak # at least version 1.2.0rc5\n", + "import awkward as ak # at least v2.0.0 (vector v1.4.* supports awkward v1 and v2 both)\n", "import numba as nb\n", "import numpy as np\n", "import sympy\n", diff --git a/noxfile.py b/noxfile.py index f4c512da..b95c18da 100644 --- a/noxfile.py +++ b/noxfile.py @@ -6,6 +6,7 @@ nox.options.sessions = ["lint", "lite", "tests", "doctests"] +ALL_PYTHON = ["3.8", "3.9", "3.10", "3.11", "3.12"] DIR = Path(__file__).parent.resolve() @@ -17,7 +18,7 @@ def lint(session: nox.Session) -> None: session.run("pre-commit", "run", "--all-files", *session.posargs) -@nox.session +@nox.session(reuse_venv=True) def pylint(session: nox.Session) -> None: """Run pylint.""" session.install("pylint~=2.14.0") @@ -25,14 +26,14 @@ def pylint(session: nox.Session) -> None: session.run("pylint", "src/vector/", *session.posargs) -@nox.session +@nox.session(reuse_venv=True, python=ALL_PYTHON) def lite(session: nox.Session) -> None: """Run the linter.""" session.install("-e", ".[test]") session.run("pytest", "--ignore", "tests/test_notebooks.py", *session.posargs) -@nox.session(reuse_venv=True) +@nox.session(reuse_venv=True, python=ALL_PYTHON) def tests(session: nox.Session) -> None: """Run the unit and regular tests.""" session.install("-e", ".[awkward,numba,test,test-extras,sympy]") @@ -44,14 +45,14 @@ def tests(session: nox.Session) -> None: ) -@nox.session(reuse_venv=True) +@nox.session(reuse_venv=True, python=ALL_PYTHON) def coverage(session: nox.Session) -> None: """Run tests and compute coverage.""" session.posargs.append("--cov=vector") tests(session) -@nox.session(reuse_venv=True) +@nox.session(reuse_venv=True, python=ALL_PYTHON) def doctests(session: nox.Session) -> None: """Run the doctests.""" session.install("-e", ".[awkward,numba,test,test-extras,sympy]") @@ -61,8 +62,8 @@ def doctests(session: nox.Session) -> None: @nox.session(reuse_venv=True) def notebooks(session: nox.Session) -> None: """Run the notebook tests""" - session.install("-e", ".[awkward,numba,test,test-extras]", "numba") - session.install("jupyter", "papermill") + session.install("-e", ".[awkward,numba,test,sympy]") + session.install("jupyter") session.run("pytest", "tests/test_notebooks.py", *session.posargs) @@ -81,7 +82,7 @@ def docs(session: nox.Session) -> None: print("Unsupported argument to docs") -@nox.session +@nox.session(reuse_venv=True) def build(session: nox.Session) -> None: """Build an SDist and wheel.""" session.install("build") diff --git a/pyproject.toml b/pyproject.toml index 3c12495b..1e544037 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -46,10 +46,10 @@ dependencies = [ "packaging>=19", ] optional-dependencies.awkward = [ - "awkward>=1.2", + "awkward>=2", ] optional-dependencies.dev = [ - "awkward>=1.2", + "awkward>=2", "dask-awkward", "nox", "numba>=0.57; python_version<'3.12'", @@ -60,7 +60,7 @@ optional-dependencies.dev = [ "sympy", ] optional-dependencies.docs = [ - "awkward>=1.2", + "awkward>=2", "ipykernel", "myst-parser>0.13", "nbsphinx", @@ -76,7 +76,6 @@ optional-dependencies.sympy = [ "sympy", ] optional-dependencies.test = [ - "dask-awkward", "nox", "papermill>=2.4", "pytest>=6", @@ -84,8 +83,9 @@ optional-dependencies.test = [ "pytest-doctestplus", ] optional-dependencies.test-extras = [ + "dask_awkward", "spark-parser", - "uncompyle6", + 'uncompyle6; python_version == "3.8"', ] urls."Bug Tracker" = "https://github.com/scikit-hep/vector/issues" urls.Changelog = "https://vector.readthedocs.io/en/latest/changelog.html" diff --git a/src/vector/__init__.py b/src/vector/__init__.py index 252e9f72..337f31e7 100644 --- a/src/vector/__init__.py +++ b/src/vector/__init__.py @@ -60,21 +60,13 @@ def _import_awkward() -> None: awk_version = packaging.version.Version(importlib.metadata.version("awkward")) - if awk_version < packaging.version.Version("1.2.0rc5"): + if awk_version < packaging.version.Version("2.0.0"): # the only context users will see this message is if they're trying to use vector.awk # VectorAwkward is still set to None - msg = f"awkward {awk_version} is too old; please upgrade to 1.2.0 or later" + msg = f"awkward {awk_version} is too old; please upgrade to 2.0.0 or later" raise ImportError(msg) -_is_awkward_v2: bool | None -try: - _is_awkward_v2 = packaging.version.Version( - importlib.metadata.version("awkward") - ) >= packaging.version.Version("2.0.0rc1") -except importlib.metadata.PackageNotFoundError: - _is_awkward_v2 = None - try: import awkward diff --git a/src/vector/backends/awkward.py b/src/vector/backends/awkward.py index f29bc03e..5ca68046 100644 --- a/src/vector/backends/awkward.py +++ b/src/vector/backends/awkward.py @@ -1638,33 +1638,17 @@ class MomentumRecord4D(MomentumAwkward4D, ak.Record): # type: ignore[misc] # implementation of behaviors in Numba ######################################## -if vector._is_awkward_v2: - def _lookup_field(record_type: typing.Any, name: str) -> int: - return record_type.fields.index(name) - -else: - - def _lookup_field(record_type: typing.Any, name: str) -> int: - return record_type.recordlookup.index(name) +def _lookup_field(record_type: typing.Any, name: str) -> int: + return record_type.fields.index(name) def _arraytype_of(awkwardtype: typing.Any, component: str) -> typing.Any: import numba - if isinstance( - awkwardtype, - ak._connect.numba.layout.NumpyArrayType - if hasattr(ak._connect, "numba") # Awkward v2 - else ak._connect._numba.layout.NumpyArrayType, - ): + if isinstance(awkwardtype, ak._connect.numba.layout.NumpyArrayType): return awkwardtype.arraytype - elif isinstance( - awkwardtype, - ak._connect.numba.layout.IndexedArrayType - if hasattr(ak._connect, "numba") # Awkward v2 - else ak._connect._numba.layout.IndexedArrayType, - ): + elif isinstance(awkwardtype, ak._connect.numba.layout.IndexedArrayType): return _arraytype_of(awkwardtype.contenttype, component) raise numba.TypingError( f"vector components like {component!r} must be NumpyArrayType, not {awkwardtype}" @@ -1947,11 +1931,7 @@ def _numba_lower( vectorcls = sig.return_type.instance_class - fields = ( - sig.args[0].arrayviewtype.type.fields - if vector._is_awkward_v2 - else sig.args[0].arrayviewtype.type.recordlookup - ) + fields = sig.args[0].arrayviewtype.type.fields if issubclass(vectorcls, (VectorObject2D, VectorObject3D, VectorObject4D)): if issubclass(sig.return_type.azimuthaltype.instance_class, AzimuthalXY): diff --git a/src/vector/backends/awkward_constructors.py b/src/vector/backends/awkward_constructors.py index 7a8f8721..9ba07b89 100644 --- a/src/vector/backends/awkward_constructors.py +++ b/src/vector/backends/awkward_constructors.py @@ -218,37 +218,20 @@ def _is_type_safe(array_type: typing.Any) -> bool: awkward.types.OptionType, ), ): - # .content is Awkward v2 - array_type = ( - array_type.content if hasattr(array_type, "content") else array_type.type - ) + array_type = array_type.content if not isinstance(array_type, awkward.types.RecordType): return False - # .contents is Awkward v2 - contents = ( - array_type.contents if hasattr(array_type, "contents") else array_type.fields() - ) + contents = array_type.contents for field_type in contents: if isinstance(field_type, awkward.types.OptionType): field_type = ( # noqa: PLW2901 field_type.content - if hasattr(array_type, "content") - else field_type.type ) - if not isinstance( - field_type, - awkward.types.NumpyType - if hasattr(awkward.types, "NumpyType") - else awkward.types.PrimitiveType, - ): + if not isinstance(field_type, awkward.types.NumpyType): return False - dt = ( - field_type.primitive - if hasattr(field_type, "primitive") - else field_type.dtype - ) + dt = field_type.primitive if ( not dt.startswith("int") and not dt.startswith("uint") diff --git a/tests/backends/test_awkward.py b/tests/backends/test_awkward.py index 0ad09c48..d677a256 100644 --- a/tests/backends/test_awkward.py +++ b/tests/backends/test_awkward.py @@ -14,11 +14,6 @@ import vector from vector import VectorObject2D -from vector.backends.awkward import ( - MomentumAwkward2D, - MomentumAwkward3D, - MomentumAwkward4D, -) ak = pytest.importorskip("awkward") @@ -310,7 +305,7 @@ def test_zip(): @pytest.mark.skipif( awkward_without_record_reducers, - reason="record reducers not implemented before awkward v2", + reason="record reducers were added before awkward==2.2.3, but had some bugs", ) def test_sum_2d(): v = vector.Array( @@ -380,7 +375,7 @@ def test_sum_2d(): @pytest.mark.skipif( awkward_without_record_reducers, - reason="record reducers not implemented before awkward v2", + reason="record reducers were added before awkward==2.2.3, but had some bugs", ) def test_sum_3d(): v = vector.Array( @@ -420,7 +415,7 @@ def test_sum_3d(): @pytest.mark.skipif( awkward_without_record_reducers, - reason="record reducers not implemented before awkward v2", + reason="record reducers were added before awkward==2.2.3, but had some bugs", ) def test_sum_4d(): v = vector.Array( @@ -465,7 +460,7 @@ def test_sum_4d(): @pytest.mark.skipif( awkward_without_record_reducers, - reason="record reducers not implemented before awkward v2", + reason="record reducers were added before awkward==2.2.3, but had some bugs", ) def test_count_nonzero_2d(): v = vector.Array( @@ -490,7 +485,7 @@ def test_count_nonzero_2d(): @pytest.mark.skipif( awkward_without_record_reducers, - reason="record reducers not implemented before awkward v2", + reason="record reducers were added before awkward==2.2.3, but had some bugs", ) def test_count_nonzero_3d(): v = vector.Array( @@ -515,7 +510,7 @@ def test_count_nonzero_3d(): @pytest.mark.skipif( awkward_without_record_reducers, - reason="record reducers not implemented before awkward v2", + reason="record reducers were added before awkward==2.2.3, but had some bugs", ) def test_count_nonzero_4d(): v = vector.Array( @@ -559,7 +554,7 @@ def test_count_nonzero_4d(): @pytest.mark.skipif( awkward_without_record_reducers, - reason="record reducers not implemented before awkward v2", + reason="record reducers were added before awkward==2.2.3, but had some bugs", ) def test_count_2d(): v = vector.Array( @@ -588,7 +583,7 @@ def test_count_2d(): @pytest.mark.skipif( awkward_without_record_reducers, - reason="record reducers not implemented before awkward v2", + reason="record reducers were added before awkward==2.2.3, but had some bugs", ) def test_count_3d(): v = vector.Array( @@ -617,7 +612,7 @@ def test_count_3d(): @pytest.mark.skipif( awkward_without_record_reducers, - reason="record reducers not implemented before awkward v2", + reason="record reducers were added before awkward==2.2.3, but had some bugs", ) def test_count_4d(): v = vector.Array( @@ -880,36 +875,36 @@ def test_momentum_preservation(): # momentum + generic = momentum # 2D + 3D.like(2D) = 2D - assert isinstance(v1 + v2.like(v1), MomentumAwkward2D) - assert isinstance(v2.like(v1) + v1, MomentumAwkward2D) + assert isinstance(v1 + v2.like(v1), vector.backends.awkward.MomentumAwkward2D) + assert isinstance(v2.like(v1) + v1, vector.backends.awkward.MomentumAwkward2D) # 2D + 4D.like(2D) = 2D - assert isinstance(v1 + v3.like(v1), MomentumAwkward2D) - assert isinstance(v3.like(v1) + v1, MomentumAwkward2D) + assert isinstance(v1 + v3.like(v1), vector.backends.awkward.MomentumAwkward2D) + assert isinstance(v3.like(v1) + v1, vector.backends.awkward.MomentumAwkward2D) # 3D + 2D.like(3D) = 3D - assert isinstance(v2 + v1.like(v2), MomentumAwkward3D) - assert isinstance(v1.like(v2) + v2, MomentumAwkward3D) + assert isinstance(v2 + v1.like(v2), vector.backends.awkward.MomentumAwkward3D) + assert isinstance(v1.like(v2) + v2, vector.backends.awkward.MomentumAwkward3D) # 3D + 4D.like(3D) = 3D - assert isinstance(v2 + v3.like(v2), MomentumAwkward3D) - assert isinstance(v3.like(v2) + v2, MomentumAwkward3D) + assert isinstance(v2 + v3.like(v2), vector.backends.awkward.MomentumAwkward3D) + assert isinstance(v3.like(v2) + v2, vector.backends.awkward.MomentumAwkward3D) # 4D + 2D.like(4D) = 4D - assert isinstance(v3 + v1.like(v3), MomentumAwkward4D) - assert isinstance(v1.like(v3) + v3, MomentumAwkward4D) + assert isinstance(v3 + v1.like(v3), vector.backends.awkward.MomentumAwkward4D) + assert isinstance(v1.like(v3) + v3, vector.backends.awkward.MomentumAwkward4D) # 4D + 3D.like(4D) = 4D - assert isinstance(v3 + v2.like(v3), MomentumAwkward4D) - assert isinstance(v2.like(v3) + v3, MomentumAwkward4D) + assert isinstance(v3 + v2.like(v3), vector.backends.awkward.MomentumAwkward4D) + assert isinstance(v2.like(v3) + v3, vector.backends.awkward.MomentumAwkward4D) def test_subclass_fields(): @ak.mixin_class(vector.backends.awkward.behavior) - class TwoVector(MomentumAwkward2D): + class TwoVector(vector.backends.awkward.MomentumAwkward2D): pass @ak.mixin_class(vector.backends.awkward.behavior) - class ThreeVector(MomentumAwkward3D): + class ThreeVector(vector.backends.awkward.MomentumAwkward3D): pass @ak.mixin_class(vector.backends.awkward.behavior) - class LorentzVector(MomentumAwkward4D): + class LorentzVector(vector.backends.awkward.MomentumAwkward4D): @ak.mixin_class_method(np.divide, {numbers.Number}) def divide(self, factor): return self.scale(1 / factor) diff --git a/tests/samples/issue-161.pkl b/tests/samples/issue-161.pkl deleted file mode 100644 index 7cc5ea6a75f8e2bb8065d93238c843accc0721a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 231208 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ī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 diff --git a/tests/test_issues.py b/tests/test_issues.py index 3f5663cb..57e84a57 100644 --- a/tests/test_issues.py +++ b/tests/test_issues.py @@ -39,11 +39,7 @@ def repro(generator_like_jet_constituents): for generator_like_constituent in sublist: s += generator_like_constituent.pt - file_path = ( - os.path.join("tests", "samples", "issue-161.pkl") - if not vector._is_awkward_v2 - else os.path.join("tests", "samples", "issue-161-v2.pkl") - ) + file_path = os.path.join("tests", "samples", "issue-161-v2.pkl") with open(file_path, "rb") as f: a = ak.from_buffers(*pickle.load(f))