diff --git a/.github/workflows/pypi-publish.yml b/.github/workflows/pypi-publish.yml index 441d04b..11ca439 100644 --- a/.github/workflows/pypi-publish.yml +++ b/.github/workflows/pypi-publish.yml @@ -2,6 +2,7 @@ # # This file is part of Invenio. # Copyright (C) 2020 CERN. +# Copyright (C) 2024 Graz University of Technology. # # Invenio is free software; you can redistribute it and/or modify it # under the terms of the MIT License; see LICENSE file for more details. @@ -15,27 +16,7 @@ on: jobs: Publish: - runs-on: ubuntu-20.04 - steps: - - name: Checkout - uses: actions/checkout@v2 - - - name: Set up Python - uses: actions/setup-python@v2 - with: - python-version: 3.7 - - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install setuptools wheel babel - - - name: Build package - run: | - python setup.py compile_catalog sdist bdist_wheel - - - name: Publish on PyPI - uses: pypa/gh-action-pypi-publish@v1.3.1 - with: - user: __token__ - password: ${{ secrets.pypi_token }} + uses: inveniosoftware/workflows/.github/workflows/pypi-publish.yml@master + secrets: inherit + with: + babel-compile-catalog: true diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 8ef8bfd..c2ec5ba 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -2,7 +2,7 @@ # # This file is part of Invenio. # Copyright (C) 2020 CERN. -# Copyright (C) 2022 Graz University of Technology. +# Copyright (C) 2022-2024 Graz University of Technology. # # Invenio is free software; you can redistribute it and/or modify it # under the terms of the MIT License; see LICENSE file for more details. @@ -26,57 +26,4 @@ on: jobs: Tests: - runs-on: ubuntu-20.04 - timeout-minutes: 20 - strategy: - matrix: - python-version: [3.8, 3.9] - requirements-level: [pypi] - db-service: [postgresql14,postgresql13,mysql8] - mq-service: [rabbitmq] - search-service: [opensearch2,elasticsearch7] - include: - - db-service: postgresql14 - DB_EXTRAS: "postgresql" - - - db-service: postgresql13 - DB_EXTRAS: "postgresql" - - - db-service: mysql8 - DB_EXTRAS: "mysql" - env: - DB: ${{ matrix.db-service }} - MQ: ${{ matrix.mq-service }} - SEARCH: ${{ matrix.search-service }} - EXTRAS: tests,${{ matrix.search-service }} - steps: - - name: Checkout - uses: actions/checkout@v2 - - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 - with: - python-version: ${{ matrix.python-version }} - - - name: Generate dependencies - run: | - pip install wheel requirements-builder - requirements-builder -e "$EXTRAS" --level=${{ matrix.requirements-level }} setup.py > .${{ matrix.requirements-level }}-${{ matrix.python-version }}-requirements.txt - - - name: Cache pip - uses: actions/cache@v2 - with: - path: ~/.cache/pip - key: ${{ runner.os }}-pip-${{ hashFiles('.${{ matrix.requirements-level }}-${{ matrix.python-version }}-requirements.txt') }} - - - name: Install dependencies - run: | - pip install -r .${{ matrix.requirements-level }}-${{ matrix.python-version }}-requirements.txt - pip install ".[$EXTRAS]" - pip freeze - docker --version - docker compose --version - - - name: Run tests - run: | - ./run-tests.sh + uses: inveniosoftware/workflows/.github/workflows/tests-python.yml@master diff --git a/CHANGES.rst b/CHANGES.rst index d9eda5d..bd32a9f 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -1,6 +1,7 @@ .. This file is part of Invenio. Copyright (C) 2016-2022 CERN. + Copyright (C) 2024 Graz University of Technology. Invenio is free software; you can redistribute it and/or modify it under the terms of the MIT License; see LICENSE file for more details. @@ -8,6 +9,15 @@ Changes ======= +Version 3.0.0 (release 2024-12-06) + +- fix: tests, apply invenio-indexer change +- fix: docs reference target not found +- tests: apply changes for sqlalchemy>=2.0 +- setup: change to reusable workflows +- setup: bump major dependencies +- ci: fix docker compose call + Version v2.2.3 (released 2024-09-25) - percolator: allow lazy strings from config for deletions diff --git a/docs/conf.py b/docs/conf.py index 6cffe2a..326d476 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -2,7 +2,7 @@ # # This file is part of Invenio. # Copyright (C) 2015-2018 CERN. -# Copyright (C) 2022-2023 Graz University of Technology. +# Copyright (C) 2022-2024 Graz University of Technology. # # Invenio is free software; you can redistribute it and/or modify it # under the terms of the MIT License; see LICENSE file for more details. @@ -35,6 +35,9 @@ nitpick_ignore = [ ("py:class", "types.StrSequenceOrSet"), ("py:class", "flask_admin.contrib.sqla.filters.BaseSQLAFilter"), + ("py:class", "t.ClassVar"), + ("py:class", "Query"), + ("py:attr", "query_class"), ] # Add any paths that contain templates here, relative to this directory. diff --git a/invenio_oaiserver/__init__.py b/invenio_oaiserver/__init__.py index 4d3865e..50a9532 100644 --- a/invenio_oaiserver/__init__.py +++ b/invenio_oaiserver/__init__.py @@ -2,6 +2,7 @@ # # This file is part of Invenio. # Copyright (C) 2015-2024 CERN. +# Copyright (C) 2024 Graz University of Technology. # # Invenio is free software; you can redistribute it and/or modify it # under the terms of the MIT License; see LICENSE file for more details. @@ -185,6 +186,6 @@ from .ext import InvenioOAIServer from .proxies import current_oaiserver -__version__ = "2.2.3" +__version__ = "3.0.0" __all__ = ("__version__", "InvenioOAIServer", "current_oaiserver") diff --git a/setup.cfg b/setup.cfg index 534bdc6..bbd8f8d 100644 --- a/setup.cfg +++ b/setup.cfg @@ -2,7 +2,7 @@ # # This file is part of Invenio. # Copyright (C) 2015-2018 CERN. -# Copyright (C) 2022 Graz University of Technology. +# Copyright (C) 2022-2024 Graz University of Technology. # # Invenio is free software; you can redistribute it and/or modify it # under the terms of the MIT License; see LICENSE file for more details. @@ -29,30 +29,30 @@ zip_safe = False install_requires = arrow>=0.17.0 dojson>=1.3.0,<2.0.0 - invenio-base>=1.2.11,<2.0.0 - invenio-i18n>=2.0.0,<3.0.0 - invenio-pidstore>=1.2.2,<2.0.0 - invenio-records>=2.0.0,<3.0.0 - invenio-rest>=1.2.4,<2.0.0 + invenio-base>=2.0.0,<3.0.0 + invenio-i18n>=3.0.0,<4.0.0 + invenio-pidstore>=2.0.0,<3.0.0 + invenio-records>=3.0.0,<4.0.0 + invenio-rest>=2.0.0,<3.0.0 lxml>=4.3.0 [options.extras_require] tests = - pytest-black>=0.3.0 - invenio-indexer>=2.1.0,<3.0.0 - invenio-jsonschemas>=1.1.3,<2.0.0 + pytest-black-ng>=0.4.0 + invenio-indexer>=3.0.0,<4.0.0 + invenio-jsonschemas>=2.0.0,<3.0.0 mock>=1.3.0 - pytest-invenio>=2.1.0,<3.0.0 + pytest-invenio>=3.0.0,<4.0.0 invenio-admin>=1.3.0,<2.0.0 - invenio-celery>=1.2.5,<2.0.0 + invenio-celery>=2.0.0,<3.0.0 Sphinx>=4.5.0 - invenio-db[mysql,postgresql,versioning]>=1.0.9,<2.0.0 + invenio-db[mysql,postgresql,versioning]>=2.0.0,<3.0.0 elasticsearch7 = - invenio-search[elasticsearch7]>=2.1.0,<3.0.0 + invenio-search[elasticsearch7]>=3.0.0,<4.0.0 opensearch1 = - invenio-search[opensearch1]>=2.1.0,<3.0.0 + invenio-search[opensearch1]>=3.0.0,<4.0.0 opensearch2 = - invenio-search[opensearch2]>=2.1.0,<3.0.0 + invenio-search[opensearch2]>=3.0.0,<4.0.0 [options.entry_points] invenio_base.apps = diff --git a/tests/conftest.py b/tests/conftest.py index d6593ff..2dc45df 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -2,6 +2,7 @@ # # This file is part of Invenio. # Copyright (C) 2015-2018 CERN. +# Copyright (C) 2024 Graz University of Technology. # # Invenio is free software; you can redistribute it and/or modify it # under the terms of the MIT License; see LICENSE file for more details. @@ -54,6 +55,7 @@ def app(): OAISERVER_QUERY_PARSER_FIELDS=["title_statement"], OAISERVER_RECORD_INDEX="_all", OAISERVER_REGISTER_SET_SIGNALS=True, + INDEXER_DEFAULT_INDEX="records-record-v1.0.0", ) if not hasattr(app, "cli"): from flask_cli import FlaskCLI @@ -75,10 +77,12 @@ def app(): app.register_blueprint(blueprint) with app.app_context(): - if str(db.engine.url) != "sqlite://" and not database_exists( - str(db.engine.url) + if str( + db.engine.url.render_as_string(hide_password=False) + ) != "sqlite://" and not database_exists( + str(db.engine.url.render_as_string(hide_password=False)) ): - create_database(str(db.engine.url)) + create_database(str(db.engine.url.render_as_string(hide_password=False))) db.create_all() list(search.delete(ignore=[404])) list(search.create()) @@ -89,8 +93,8 @@ def app(): with app.app_context(): db.session.close() - if str(db.engine.url) != "sqlite://": - drop_database(str(db.engine.url)) + if str(db.engine.url.render_as_string(hide_password=False)) != "sqlite://": + drop_database(str(db.engine.url.render_as_string(hide_password=False))) list(search.delete(ignore=[404])) search.client.indices.delete("*-percolators") shutil.rmtree(instance_path)