diff --git a/.github/workflows/pypi-publish.yml b/.github/workflows/pypi-publish.yml index 266a98b..683b4be 100644 --- a/.github/workflows/pypi-publish.yml +++ b/.github/workflows/pypi-publish.yml @@ -15,7 +15,7 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - pip install setuptools wheel + pip install setuptools wheel babel - name: Build package run: | python setup.py compile_catalog sdist bdist_wheel @@ -23,4 +23,4 @@ jobs: uses: pypa/gh-action-pypi-publish@v1.3.1 with: user: __token__ - password: ${{ secrets.pypi_password }} \ No newline at end of file + password: ${{ secrets.pypi_password }} diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 16586e9..1bfce6b 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -1,3 +1,11 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2020-2022 Graz University of Technology. +# +# invenio-theme-tugraz is free software; you can redistribute it and/or +# modify it under the terms of the MIT License; see LICENSE file for more +# details. + name: CI on: @@ -20,42 +28,18 @@ jobs: runs-on: ubuntu-20.04 strategy: matrix: - python-version: [3.6, 3.7, 3.8, 3.9] - requirements-level: [min, pypi] - db-service: [postgresql12] + python-version: [3.8, 3.9] + requirements-level: [pypi] + db-service: [postgresql13] search-service: [elasticsearch7] - exclude: - - python-version: 3.6 - requirements-level: pypi - - - python-version: 3.7 - requirements-level: min - - - python-version: 3.8 - requirements-level: min - - - python-version: 3.9 - requirements-level: min - - - db-service: postgresql12 - requirements-level: min - - - search-service: elasticsearch7 - requirements-level: min - include: - - - db-service: postgresql12 - DB_EXTRAS: "postgresql" - - - search-service: elasticsearch7 SEARCH_EXTRAS: "elasticsearch7" env: DB: ${{ matrix.db-service }} SEARCH: ${{ matrix.search-service }} - EXTRAS: all,${{ matrix.DB_EXTRAS }},${{ matrix.SEARCH_EXTRAS }} + EXTRAS: tests,${{ matrix.SEARCH_EXTRAS }} steps: - name: Checkout uses: actions/checkout@v2 @@ -67,7 +51,7 @@ jobs: - name: Generate dependencies run: | - python -m pip install --upgrade pip setuptools py wheel requirements-builder + 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 diff --git a/docs/conf.py b/docs/conf.py index a675ede..78d92d3 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -8,7 +8,7 @@ """Sphinx configuration.""" -import os +from invenio_theme_tugraz import __version__ # -- General configuration ------------------------------------------------ @@ -54,17 +54,8 @@ author = u"Graz University of Technology" # # The short X.Y version. -# Get the version string. Cannot be done with import! -g = {} -with open( - os.path.join(os.path.dirname(__file__), "..", "invenio_theme_tugraz", "version.py"), - "rt", -) as fp: - exec(fp.read(), g) - version = g["__version__"] - # The full version, including alpha/beta/rc tags. -release = version +release = __version__ # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/invenio_theme_tugraz/__init__.py b/invenio_theme_tugraz/__init__.py index b7f32a0..b76b99e 100644 --- a/invenio_theme_tugraz/__init__.py +++ b/invenio_theme_tugraz/__init__.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2020-2021 Graz University of Technology. +# Copyright (C) 2020-2022 Graz University of Technology. # # invenio-theme-tugraz is free software; you can redistribute it and/or # modify it under the terms of the MIT License; see LICENSE file for more @@ -9,6 +9,7 @@ """invenio module for TUGRAZ theme.""" from .ext import InvenioThemeTugraz -from .version import __version__ + +__version__ = "3.8.0" __all__ = ("__version__", "InvenioThemeTugraz") diff --git a/invenio_theme_tugraz/search.py b/invenio_theme_tugraz/search.py index 6a9d375..bf170db 100644 --- a/invenio_theme_tugraz/search.py +++ b/invenio_theme_tugraz/search.py @@ -8,8 +8,6 @@ """Frontpage records.""" -from __future__ import absolute_import, print_function - from elasticsearch_dsl.query import Q from invenio_search.api import RecordsSearch diff --git a/invenio_theme_tugraz/version.py b/invenio_theme_tugraz/version.py deleted file mode 100644 index 6e081e6..0000000 --- a/invenio_theme_tugraz/version.py +++ /dev/null @@ -1,15 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright (C) 2020-2022 Graz University of Technology. -# -# invenio-theme-tugraz is free software; you can redistribute it and/or -# modify it under the terms of the MIT License; see LICENSE file for more -# details. - -"""Version information for invenio-theme-tugraz. - -This file is imported by ``invenio_theme_tugraz.__init__``, -and parsed by ``setup.py``. -""" - -__version__ = "3.8.0" diff --git a/invenio_theme_tugraz/views.py b/invenio_theme_tugraz/views.py index 41d64c3..a0f3db0 100644 --- a/invenio_theme_tugraz/views.py +++ b/invenio_theme_tugraz/views.py @@ -8,8 +8,6 @@ """invenio module for TUGRAZ theme.""" -import binascii -from os import environ from typing import Dict from elasticsearch_dsl.utils import AttrDict diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..ec4e1ea --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["setuptools", "wheel", "babel>2.8"] +build-backend = "setuptools.build_meta" diff --git a/run-tests.sh b/run-tests.sh index f0ee23a..a91e1d8 100755 --- a/run-tests.sh +++ b/run-tests.sh @@ -16,17 +16,8 @@ set -o errexit # Quit on unbound symbols set -o nounset -# Always bring down docker services - -function cleanup() { - eval "$(docker-services-cli down --env)" -} -trap cleanup EXIT - - python -m check_manifest --ignore ".*-requirements.txt" python -m sphinx.cmd.build -qnN docs docs/_build/html -eval "$(docker-services-cli up --db ${DB:-postgresql} --search ${SEARCH:-elasticsearch} --cache ${CACHE:-redis} --env)" python -m pytest tests_exit_code=$? python -m sphinx.cmd.build -qnN -b doctest docs docs/_build/doctest diff --git a/setup.cfg b/setup.cfg index 909f8c5..6be352f 100644 --- a/setup.cfg +++ b/setup.cfg @@ -6,6 +6,62 @@ # modify it under the terms of the MIT License; see LICENSE file for more # details. +[metadata] +name = invenio-theme-tugraz +version = attr: invenio_theme_tugraz.__version__ +description = "Invenio module for TUGRAZ theme." +long_description = file: README.rst, CHANGES.rst +keywords = invenio theme invenioRDM TU-Graz +license = MIT +author = "Graz University of Technology" +author_email = mojib.wali@tugraz.at +url = https://github.com/tu-graz-library/invenio-theme-tugraz +platforms = any +classifiers = + Environment :: Web Environment + Intended Audience :: Developers + License :: OSI Approved :: MIT License + Operating System :: OS Independent + Programming Language :: Python + Topic :: Internet :: WWW/HTTP :: Dynamic Content + Topic :: Software Development :: Libraries :: Python Modules + Programming Language :: Python :: 3.7 + Programming Language :: Python :: 3.8 + Programming Language :: Python :: 3.9 + Development Status :: 3 - Alpha + +[options] +include_package_data = True +packages = find: +python_requires = >=3.8 +zip_safe = False +install_requires = + Flask-BabelEx>=0.9.4 + Flask-WebpackExt>=1.0.0 + invenio-assets>=1.2.0 + invenio-i18n>=1.2.0 + invenio_config_tugraz>=0.8.2,<0.9.0 + +[options.extras_require] +tests = + sphinx>=4.2.0,<5 + pytest-invenio>=1.4.7 + invenio-app>=1.3.0,<2.0.0 +elasticsearch7 = + invenio-search[elasticsearch7]>=1.4.2,<2.0 + +[options.entry_points] +invenio_base.apps = + invenio_theme_tugraz = invenio_theme_tugraz:InvenioThemeTugraz +invenio_base.blueprints = + invenio_theme_tugraz = invenio_theme_tugraz.views:ui_blueprint +invenio_i18n.translations = + messages = invenio_theme_tugraz +invenio_assets.webpack = + invenio_theme_tugraz_theme = invenio_theme_tugraz.webpack:theme +invenio_config.module = + invenio_theme_tugraz = invenio_theme_tugraz.config + [aliases] test = pytest diff --git a/setup.py b/setup.py index fc623dd..f446ad3 100644 --- a/setup.py +++ b/setup.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2020-2021 Graz University of Technology. +# Copyright (C) 2020-2022 Graz University of Technology. # # invenio-theme-tugraz is free software; you can redistribute it and/or # modify it under the terms of the MIT License; see LICENSE file for more @@ -8,113 +8,6 @@ """invenio module for TUGRAZ theme.""" -import os +from setuptools import setup -from setuptools import find_packages, setup - -readme = open("README.rst").read() -history = open("CHANGES.rst").read() - -tests_require = [ - "pytest-invenio>=1.4.0", - "invenio-app>=1.3.0,<2.0.0", -] - -# Should follow invenio-app-rdm -invenio_search_version = ">=1.4.0,<1.5.0" -invenio_db_version = ">=1.0.9,<1.1.0" - -extras_require = { - "elasticsearch7": [f"invenio-search[elasticsearch7]{invenio_search_version}"], - "mysql": [f"invenio-db[mysql,versioning]{invenio_db_version}"], - "postgresql": [f"invenio-db[postgresql,versioning]{invenio_db_version}"], - "sqlite": [f"invenio-db[versioning]{invenio_db_version}"], - "docs": [ - "Sphinx==4.2.0", - ], - "tests": tests_require, -} - -extras_require["all"] = [] -for name, reqs in extras_require.items(): - if name[0] == ":" or name in ( - "elasticsearch7", - "mysql", - "postgresql", - "sqlite", - ): - continue - extras_require["all"].extend(reqs) - -setup_requires = [ - "Babel>=1.3", - "pytest-runner>=3.0.0,<5", -] - -install_requires = [ - "Flask-BabelEx>=0.9.4", - "Flask-WebpackExt>=1.0.0", - "invenio-assets>=1.2.0", - "invenio-i18n>=1.2.0", - "invenio_config_tugraz>=0.8.2,<0.9.0", -] - -packages = find_packages() - - -# Get the version string. Cannot be done with import! -g = {} -with open(os.path.join("invenio_theme_tugraz", "version.py"), "rt") as fp: - exec(fp.read(), g) - version = g["__version__"] - -setup( - name="invenio-theme-tugraz", - version=version, - description=__doc__, - long_description=readme + "\n\n" + history, - keywords="invenio, theme, invenioRDM, TU-Graz, Graz University of Technology, statistics", - license="MIT", - author="Graz University of Technology", - author_email="mojib.wali@tugraz.at", - url="https://github.com/tu-graz-library/invenio-theme-tugraz", - packages=packages, - zip_safe=False, - include_package_data=True, - platforms="any", - entry_points={ - "invenio_base.apps": [ - "invenio_theme_tugraz = invenio_theme_tugraz:InvenioThemeTugraz", - ], - "invenio_base.blueprints": [ - "invenio_theme_tugraz = invenio_theme_tugraz.views:ui_blueprint", - ], - "invenio_i18n.translations": [ - "messages = invenio_theme_tugraz", - ], - "invenio_assets.webpack": [ - "invenio_theme_tugraz_theme = invenio_theme_tugraz.webpack:theme", - ], - "invenio_config.module": [ - "invenio_theme_tugraz = invenio_theme_tugraz.config", - ], - }, - extras_require=extras_require, - install_requires=install_requires, - setup_requires=setup_requires, - tests_require=tests_require, - classifiers=[ - "Environment :: Web Environment", - "Intended Audience :: Developers", - "License :: OSI Approved :: MIT License", - "Operating System :: OS Independent", - "Programming Language :: Python", - "Topic :: Internet :: WWW/HTTP :: Dynamic Content", - "Topic :: Software Development :: Libraries :: Python Modules", - "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.6", - "Programming Language :: Python :: 3.7", - "Programming Language :: Python :: 3.8", - "Development Status :: 3 - Alpha", - ], -) +setup() diff --git a/tests/conftest.py b/tests/conftest.py index 534a9a1..419172e 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -12,62 +12,21 @@ See https://pytest-invenio.readthedocs.io/ for documentation on which test fixtures are available. """ -import os -import shutil -import tempfile - import pytest from flask import Flask -from flask_babelex import Babel -from invenio_db import InvenioDB, db from invenio_i18n import InvenioI18N -from invenio_search import InvenioSearch -from sqlalchemy_utils.functions import create_database, database_exists, drop_database from invenio_theme_tugraz import InvenioThemeTugraz -@pytest.fixture(scope="module") -def celery_config(): - """Override pytest-invenio fixture. - - TODO: Remove this fixture if you add Celery support. - """ - return {} - - @pytest.fixture() def app(request): """Basic Flask application.""" - instance_path = tempfile.mkdtemp() app = Flask("testapp") - DB = os.getenv("SQLALCHEMY_DATABASE_URI", "sqlite://") app.config.update( I18N_LANGUAGES=[("en", "English"), ("de", "German")], - SQLALCHEMY_DATABASE_URI=DB, - SQLALCHEMY_TRACK_MODIFICATIONS=False, ) - Babel(app) - InvenioDB(app) - InvenioSearch(app) InvenioThemeTugraz(app) InvenioI18N(app) - with app.app_context(): - db_url = str(db.engine.url) - if db_url != "sqlite://" and not database_exists(db_url): - create_database(db_url) - db.create_all() - - def teardown(): - with app.app_context(): - db_url = str(db.engine.url) - db.session.close() - if db_url != "sqlite://": - drop_database(db_url) - shutil.rmtree(instance_path) - - request.addfinalizer(teardown) - app.test_request_context().push() - return app diff --git a/tests/test_invenio_theme_tugraz.py b/tests/test_invenio_theme_tugraz.py index 772b2a4..9d2153b 100644 --- a/tests/test_invenio_theme_tugraz.py +++ b/tests/test_invenio_theme_tugraz.py @@ -35,4 +35,4 @@ def test_init(): def test_app(app): """Test extension initialization.""" - theme = InvenioThemeTugraz(app) + _ = InvenioThemeTugraz(app) diff --git a/tests/ui/conftest.py b/tests/ui/conftest.py deleted file mode 100644 index 8b66b13..0000000 --- a/tests/ui/conftest.py +++ /dev/null @@ -1,22 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright (C) 2020-2021 Graz University of Technology. -# -# invenio-theme-tugraz is free software; you can redistribute it and/or -# modify it under the terms of the MIT License; see LICENSE file for more -# details. - -"""Pytest configuration. - -See https://pytest-invenio.readthedocs.io/ for documentation on which test -fixtures are available. -""" - -import pytest -from invenio_app.factory import create_ui - - -@pytest.fixture(scope='module') -def create_app(instance_path): - """Application factory fixture.""" - return create_ui diff --git a/tests/ui/test_views.py b/tests/ui/test_views.py deleted file mode 100644 index 40f8e45..0000000 --- a/tests/ui/test_views.py +++ /dev/null @@ -1,33 +0,0 @@ -# # -*- coding: utf-8 -*- -# # -# # Copyright (C) 2020-2021 Graz University of Technology. -# # -# # invenio-theme-tugraz is free software; you can redistribute it and/or -# # modify it under the terms of the MIT License; see LICENSE file for more -# # details. - -# """Test views.""" - -# from elasticsearch_dsl.utils import AttrDict - -# from invenio_theme_tugraz.views import cast_to_dict, make_dict_like - - -# def test_make_dict_like(): -# """Test make_dict_like.""" -# access = { -# "access_right" : "open" -# } -# dicts = make_dict_like("open", "access_right") -# assert access == dicts - - -# def test_cast_to_dict(): -# """Test cast_to_dict.""" -# resource_type = { -# "subtype" : "publication-datamanagementplan", -# "type" : "publication" -# } -# expected = {'subtype': 'publication-datamanagementplan', 'type': 'publication'} -# attr = cast_to_dict(AttrDict(resource_type)) -# assert expected == attr