setup: introduce ruff

* remove unused .tx. the translation is done without transifex

* remove unused files

* remove unused checks because ruff took over
This commit is contained in:
Christoph Ladurner
2024-07-19 00:31:08 +02:00
parent 760363b4a5
commit 583a67d0cf
13 changed files with 108 additions and 306 deletions
+9 -139
View File
@@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
#
# Copyright (C) 2020 Mojib Wali.
# Copyright (C) 2020-2024 Graz University of Technology.
#
# invenio-config-tugraz is free software; you can redistribute it and/or
# modify it under the terms of the MIT License; see LICENSE file for more
@@ -12,152 +13,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 invenio_db import InvenioDB, db
from invenio_i18n import InvenioI18N
from sqlalchemy_utils.functions import create_database, database_exists, drop_database
from invenio_config_tugraz import InvenioConfigTugraz
@pytest.fixture(scope="module")
def celery_config():
"""Override pytest-invenio fixture.
def create_app(instance_path: str) -> Flask:
"""Application factory fixture."""
TODO: Remove this fixture if you add Celery support.
"""
return {}
def factory(**config: str) -> Flask:
app = Flask("testapp", instance_path=instance_path)
app.config.update(**config)
InvenioConfigTugraz(app)
return app
@pytest.fixture()
def create_app(request):
"""Basic Flask application."""
instance_path = tempfile.mkdtemp()
app = Flask("testapp")
DB = os.getenv("SQLALCHEMY_DATABASE_URI", "sqlite://")
app.config.update(
INVENIO_CONFIG_TUGRAZ_SINGLE_IP=["127.0.0.1", "127.0.0.2"],
INVENIO_CONFIG_TUGRAZ_IP_RANGES=[
["127.0.0.2", "127.0.0.99"],
["127.0.1.3", "127.0.1.5"],
],
SQLALCHEMY_DATABASE_URI=DB,
SQLALCHEMY_TRACK_MODIFICATIONS=False,
)
InvenioI18N(app)
InvenioConfigTugraz(app)
InvenioDB(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
@pytest.fixture(scope="function")
def open_record():
"""Open record data as dict coming from the external world."""
return {
"access": {
"metadata": False,
"files": False,
"owned_by": [1],
"access_right": "open",
},
"metadata": {
"publication_date": "2020-06-01",
"resource_type": {"type": "image", "subtype": "image-photo"},
# Technically not required
"creators": [
{"name": "Troy Brown", "type": "personal"},
{
"name": "Phillip Lester",
"type": "personal",
"identifiers": {"orcid": "0000-0002-1825-0097"},
"affiliations": [
{"name": "Carter-Morris", "identifiers": {"ror": "03yrm5c26"}}
],
},
{
"name": "Steven Williamson",
"type": "personal",
"identifiers": {"orcid": "0000-0002-1825-0097"},
"affiliations": [
{
"name": "Ritter and Sons",
"identifiers": {"ror": "03yrm5c26"},
},
{
"name": "Montgomery, Bush and Madden",
"identifiers": {"ror": "03yrm5c26"},
},
],
},
],
"title": "A Romans story",
},
}
@pytest.fixture(scope="function")
def singleip_record():
"""Single Ip record data as dict coming from the external world."""
return {
"access": {
"metadata": False,
"files": False,
"owned_by": [1],
"access_right": "singleip",
},
"metadata": {
"publication_date": "2020-06-01",
"resource_type": {"type": "image", "subtype": "image-photo"},
# Technically not required
"creators": [
{"name": "Troy Brown", "type": "personal"},
{
"name": "Phillip Lester",
"type": "personal",
"identifiers": {"orcid": "0000-0002-1825-0097"},
"affiliations": [
{"name": "Carter-Morris", "identifiers": {"ror": "03yrm5c26"}}
],
},
{
"name": "Steven Williamson",
"type": "personal",
"identifiers": {"orcid": "0000-0002-1825-0097"},
"affiliations": [
{
"name": "Ritter and Sons",
"identifiers": {"ror": "03yrm5c26"},
},
{
"name": "Montgomery, Bush and Madden",
"identifiers": {"ror": "03yrm5c26"},
},
],
},
],
"title": "A Romans story",
},
}
return factory
-31
View File
@@ -1,31 +0,0 @@
# -*- coding: utf-8 -*-
#
# Copyright (C) 2020-2022 Graz University of Technology.
#
# invenio-config-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 Generators."""
from invenio_access.permissions import any_user
from invenio_config_tugraz.permissions.generators import RecordIp
def test_recordip(create_app, open_record, singleip_record):
"""Test Generator RecordIp."""
generator = RecordIp()
open_record = open_record
singleiprec = singleip_record
assert generator.needs(record=None) == []
assert generator.needs(record=open_record) == [any_user]
assert generator.needs(record=singleiprec) == []
assert generator.excludes(record=open_record) == []
assert generator.excludes(record=open_record) == []
assert generator.query_filter().to_dict() == {
"bool": {"must_not": [{"match": {"access.access_right": "singleip"}}]}
}
+3 -3
View File
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
#
# Copyright (C) 2020-2022 Graz University of Technology.
# Copyright (C) 2020-2024 Graz University of Technology.
#
# invenio-config-tugraz is free software; you can redistribute it and/or
# modify it under the terms of the MIT License; see LICENSE file for more
@@ -13,14 +13,14 @@ from flask import Flask
from invenio_config_tugraz import InvenioConfigTugraz
def test_version():
def test_version() -> None:
"""Test version import."""
from invenio_config_tugraz import __version__
assert __version__
def test_init():
def test_init() -> None:
"""Test extension initialization."""
app = Flask("testapp")
ext = InvenioConfigTugraz(app)
+28 -21
View File
@@ -23,7 +23,7 @@ ALLOWED_DIFFERENCES = {
}
def test_policies_synced():
def test_policies_synced() -> None:
"""Make sure our permission-policy stays synced with invenio's."""
tugraz_cans = {
name: getattr(TUGrazRDMRecordPermissionPolicy, name)
@@ -38,17 +38,20 @@ def test_policies_synced():
# check whether same set of `can_<action>`s`
if extras := set(tugraz_cans) - set(rdm_cans) - ALLOWED_DIFFERENCES:
raise KeyError(
f"TU Graz's permission-policy has additional fields over invenio-rdm's:{extras}\n"
"if this is intentional, add to ALLOWED_DIFFERENCES in test-file\n"
"otherwise remove extraneous fields from TUGrazRDMRecordPermissionPolicy"
)
msg = f"""
TU Graz's permission-policy has additional fields over invenio-rdm's:{extras}
if this is intentional, add to ALLOWED_DIFFERENCES in test-file
otherwise remove extraneous fields from TUGrazRDMRecordPermissionPolicy
"""
raise KeyError(msg)
if missing := set(rdm_cans) - set(tugraz_cans):
raise KeyError(
f"invenio-rdm's permission-policy has fields unhandled by TU Graz's: {missing}\n"
"if this is intentional, add to ALLOWED_DIFFERENCES\n"
"otherwise set the corresponding fields in TUGrazRDMRecordPermissionPolicy"
)
msg = f"""
invenio-rdm's permission-policy has fields unhandled by TU Graz's: {missing}
if this is intentional, add to ALLOWED_DIFFERENCES
otherwise set the corresponding fields in TUGrazRDMRecordPermissionPolicy
"""
raise KeyError(msg)
# check whether same permission-generators used for same `can_<action>`
for can_name in rdm_cans.keys() & tugraz_cans.keys():
@@ -61,21 +64,25 @@ def test_policies_synced():
# permission-Generators don't implement equality checks for their instances
# we can however compare which types (classes) of Generators are used...
if {type(gen) for gen in tugraz_can} != {type(gen) for gen in rdm_can}:
raise ValueError(
f"permission-policy for `{can_name}` differs between TU-Graz and invenio-rdm\n"
"if this is intentional, add to ALLOWED_DIFFERENCES in test-file\n"
"otherwise fix TUGrazRDMRecordPermissionPolicy"
)
msg = f"""
permission-policy for `{can_name}` differs between TU-Graz and invenio-rdm
if this is intentional, add to ALLOWED_DIFFERENCES in test-file
otherwise fix TUGrazRDMRecordPermissionPolicy
"""
raise ValueError(msg)
# check whether same `NEED_LABEL_TO_ACTION`
tugraz_label_to_action = TUGrazRDMRecordPermissionPolicy.NEED_LABEL_TO_ACTION
rdm_label_to_action = RDMRecordPermissionPolicy.NEED_LABEL_TO_ACTION
for label in tugraz_label_to_action.keys() & rdm_label_to_action.keys():
if label in ALLOWED_DIFFERENCES:
continue
if tugraz_label_to_action.get(label) != rdm_label_to_action.get(label):
raise ValueError(
f"invenio-rdm's NEED_LABEL_TO_ACTION differs from TU Graz's in {label}\n"
"if this is intentional, add to ALLOWED_DIFFERENCES in test-file\n"
"otherwise fix TUGrazRDMRecordPermissionPolicy.NEED_LABEL_TO_ACTION"
)
msg = f"""
invenio-rdm's NEED_LABEL_TO_ACTION differs from TU Graz's in {label}
if this is intentional, add to ALLOWED_DIFFERENCES in test-file
otherwise fix TUGrazRDMRecordPermissionPolicy.NEED_LABEL_TO_ACTION
"""
raise ValueError(msg)