diff --git a/docker-services.yml b/docker-services.yml
index d2c6a74ca9..690f8356df 100644
--- a/docker-services.yml
+++ b/docker-services.yml
@@ -58,7 +58,7 @@ services:
ports:
- "6379:6379"
db:
- image: postgres:9.6
+ image: postgres:12
restart: "always"
environment:
- "POSTGRES_USER=rero-ils"
@@ -74,7 +74,7 @@ services:
- "5672:5672"
es:
build: ./docker/elasticsearch/
- image: elasticsearch-icu-7.9.1
+ image: elasticsearch-icu-7.10.1
restart: "always"
environment:
- bootstrap.memory_lock=true
@@ -90,7 +90,7 @@ services:
- "9200:9200"
- "9300:9300"
kibana:
- image: docker.elastic.co/kibana/kibana-oss:7.9.1
+ image: docker.elastic.co/kibana/kibana-oss:7.10.1
environment:
- "ELASTICSEARCH_URL=http://es:9200"
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
diff --git a/docker/elasticsearch/Dockerfile b/docker/elasticsearch/Dockerfile
index 9dc71f4f47..2adf1de9d2 100644
--- a/docker/elasticsearch/Dockerfile
+++ b/docker/elasticsearch/Dockerfile
@@ -1,2 +1,2 @@
-FROM docker.elastic.co/elasticsearch/elasticsearch-oss:7.9.1
+FROM docker.elastic.co/elasticsearch/elasticsearch-oss:7.10.1
RUN bin/elasticsearch-plugin install analysis-icu
diff --git a/docker/postgres/Dockerfile b/docker/postgres/Dockerfile
index d5b7bfea60..071050612d 100644
--- a/docker/postgres/Dockerfile
+++ b/docker/postgres/Dockerfile
@@ -15,5 +15,5 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see .
-FROM postgres:9.6
+FROM postgres:12
COPY ./init-app-db.sh /docker-entrypoint-initdb.d/10-init-app-db.sh
diff --git a/poetry.lock b/poetry.lock
index 4980cd20c0..7ee32c3027 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -1,5 +1,5 @@
[[package]]
-category = "dev"
+category = "main"
description = "A configurable sidebar-enabled Sphinx theme"
name = "alabaster"
optional = false
@@ -31,14 +31,6 @@ version = "5.0.2"
[package.dependencies]
vine = "5.0.0"
-[[package]]
-category = "dev"
-description = "apipkg: namespace control and lazy-import mechanism"
-name = "apipkg"
-optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
-version = "1.5"
-
[[package]]
category = "main"
description = "Disable App Nap on macOS >= 10.9"
@@ -59,24 +51,7 @@ version = "0.17.0"
python-dateutil = ">=2.7.0"
[[package]]
-category = "dev"
-description = "An abstract syntax tree for Python with inference support."
-name = "astroid"
-optional = false
-python-versions = ">=3.5"
-version = "2.4.2"
-
-[package.dependencies]
-lazy-object-proxy = ">=1.4.0,<1.5.0"
-six = ">=1.12,<2.0"
-wrapt = ">=1.11,<2.0"
-
-[package.dependencies.typed-ast]
-python = "<3.8"
-version = ">=1.4.0,<1.5"
-
-[[package]]
-category = "dev"
+category = "main"
description = "Atomic file writes."
marker = "sys_platform == \"win32\""
name = "atomicwrites"
@@ -189,7 +164,7 @@ dev = ["coverage", "tox", "sphinx", "pallets-sphinx-themes", "sphinxcontrib-log-
docs = ["sphinx", "pallets-sphinx-themes", "sphinxcontrib-log-cabinet"]
[[package]]
-category = "dev"
+category = "main"
description = "A simple, correct PEP517 package builder"
name = "build"
optional = false
@@ -298,7 +273,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
version = "4.0.0"
[[package]]
-category = "dev"
+category = "main"
description = "Check MANIFEST.in in a Python source package for completeness"
name = "check-manifest"
optional = false
@@ -377,7 +352,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
version = "0.4.4"
[[package]]
-category = "dev"
+category = "main"
description = "Code coverage measurement for Python"
name = "coverage"
optional = false
@@ -447,7 +422,23 @@ idna = ["idna (>=2.1)"]
trio = ["trio (>=0.14.0)", "sniffio (>=1.1)"]
[[package]]
-category = "dev"
+category = "main"
+description = "Python module to ease the creation and management of external services."
+name = "docker-services-cli"
+optional = false
+python-versions = "*"
+version = "0.3.0"
+
+[package.dependencies]
+click = ">=7.0,<8.0"
+
+[package.extras]
+all = ["Sphinx (>=2.4)", "pytest-cov (>=2.10.1)", "check-manifest (>=0.42)", "pytest-isort (>=1.2.0)", "pytest-pycodestyle (>=2.2.0)", "pytest-pydocstyle (>=2.2.0)", "pytest (>=6,<7)"]
+docs = ["Sphinx (>=2.4)"]
+tests = ["pytest-cov (>=2.10.1)", "check-manifest (>=0.42)", "pytest-isort (>=1.2.0)", "pytest-pycodestyle (>=2.2.0)", "pytest-pydocstyle (>=2.2.0)", "pytest (>=6,<7)"]
+
+[[package]]
+category = "main"
description = "Docutils -- Python Documentation Utilities"
name = "docutils"
optional = false
@@ -535,31 +526,17 @@ version = "1.1.2"
dnspython = ">=1.15.0"
idna = ">=2.0.0"
-[[package]]
-category = "dev"
-description = "execnet: rapid multi-Python deployment"
-name = "execnet"
-optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
-version = "1.7.1"
-
-[package.dependencies]
-apipkg = ">=1.4"
-
-[package.extras]
-testing = ["pre-commit"]
-
[[package]]
category = "main"
description = "A simple framework for building complex web applications."
name = "flask"
optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
-version = "1.0.4"
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+version = "1.1.2"
[package.dependencies]
-Jinja2 = ">=2.10"
-Werkzeug = ">=0.14"
+Jinja2 = ">=2.10.1"
+Werkzeug = ">=0.15"
click = ">=5.1"
itsdangerous = ">=0.24"
@@ -598,18 +575,6 @@ Flask-SQLAlchemy = "*"
SQLAlchemy = "*"
alembic = ">=0.8"
-[[package]]
-category = "main"
-description = "Asset management for Flask, to compress and merge CSS and Javascript files."
-name = "flask-assets"
-optional = false
-python-versions = "*"
-version = "2.0"
-
-[package.dependencies]
-Flask = ">=0.8"
-webassets = ">=2.0"
-
[[package]]
category = "main"
description = "Adds i18n/l10n support to Flask applications"
@@ -711,7 +676,7 @@ description = "A Flask extension adding a decorator for CORS support"
name = "flask-cors"
optional = false
python-versions = "*"
-version = "3.0.9"
+version = "3.0.10"
[package.dependencies]
Flask = ">=0.9"
@@ -923,7 +888,6 @@ WTForms = "*"
reference = "647dd97880e2105948071b041286f318bf2628f7"
type = "git"
url = "https://github.com/rero/flask-wiki.git"
-
[[package]]
category = "main"
description = "Simple integration of Flask and WTForms."
@@ -942,11 +906,10 @@ category = "main"
description = "Fixes some problems with Unicode text after the fact"
name = "ftfy"
optional = false
-python-versions = "*"
-version = "4.4.3"
+python-versions = ">=3.5"
+version = "5.8"
[package.dependencies]
-html5lib = "*"
wcwidth = "*"
[[package]]
@@ -957,24 +920,6 @@ optional = false
python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
version = "0.18.2"
-[[package]]
-category = "main"
-description = "HTML parser based on the WHATWG HTML specification"
-name = "html5lib"
-optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
-version = "1.1"
-
-[package.dependencies]
-six = ">=1.9"
-webencodings = "*"
-
-[package.extras]
-all = ["genshi", "chardet (>=2.2)", "lxml"]
-chardet = ["chardet (>=2.2)"]
-genshi = ["genshi"]
-lxml = ["lxml"]
-
[[package]]
category = "main"
description = "Internationalized Domain Names in Applications (IDNA)"
@@ -984,7 +929,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
version = "2.10"
[[package]]
-category = "dev"
+category = "main"
description = "Getting image size from png/jpeg/jpeg2000/gif file"
name = "imagesize"
optional = false
@@ -1022,6 +967,14 @@ version = "1.5"
[package.extras]
test = ["pytest (>=2.2.3)", "Pygments (>=1.2)", "six (>=1.4.1)", "flake8 (>=2.4.0)", "isort (>=4.2.2)"]
+[[package]]
+category = "main"
+description = "iniconfig: brain-dead simple config-ini parsing"
+name = "iniconfig"
+optional = false
+python-versions = "*"
+version = "1.1.1"
+
[[package]]
category = "main"
description = "Python tools for handling intervals (ranges of comparable objects)."
@@ -1042,15 +995,19 @@ description = "Invenio Digital Library Framework."
name = "invenio"
optional = false
python-versions = "*"
-version = "3.3.0"
+version = "3.4.0"
[package.dependencies]
-invenio-app = ">=1.2.6,<1.3.0"
+invenio-app = ">=1.3.1,<1.4.0"
invenio-base = ">=1.2.3,<1.3.0"
invenio-cache = ">=1.1.0,<1.2.0"
-invenio-celery = ">=1.2.0,<1.3.0"
+invenio-celery = ">=1.2.2,<1.3.0"
invenio-config = ">=1.0.3,<1.1.0"
-invenio-i18n = ">=1.2.0,<1.3.0"
+invenio-i18n = ">=1.3.0,<1.4.0"
+
+[package.dependencies.Sphinx]
+optional = true
+version = ">=3,<4"
[package.dependencies.invenio-access]
optional = true
@@ -1058,24 +1015,24 @@ version = ">=1.4.1,<1.5.0"
[package.dependencies.invenio-accounts]
optional = true
-version = ">=1.3.0,<1.4.0"
+version = ">=1.4.3,<1.5.0"
[package.dependencies.invenio-admin]
optional = true
-version = ">=1.2.1,<1.3.0"
+version = ">=1.3.0,<1.4.0"
[package.dependencies.invenio-assets]
optional = true
-version = ">=1.1.3,<1.2.0"
+version = ">=1.2.5,<1.3.0"
[package.dependencies.invenio-db]
-extras = ["postgresql", "versioning"]
+extras = ["versioning", "postgresql"]
optional = true
-version = ">=1.0.5,<1.1.0"
+version = ">=1.0.8,<1.1.0"
[package.dependencies.invenio-formatter]
optional = true
-version = ">=1.0.3,<1.1.0"
+version = ">=1.1.0,<1.2.0"
[package.dependencies.invenio-logging]
optional = true
@@ -1087,43 +1044,47 @@ version = ">=1.0.2,<1.1.0"
[package.dependencies.invenio-oauth2server]
optional = true
-version = ">=1.2.0,<1.3.0"
+version = ">=1.3.2,<1.4.0"
[package.dependencies.invenio-oauthclient]
optional = true
-version = ">=1.3.0,<1.4.0"
+version = ">=1.4.0,<1.5.0"
[package.dependencies.invenio-rest]
optional = true
-version = ">=1.2.1,<1.3.0"
+version = ">=1.2.3,<1.3.0"
[package.dependencies.invenio-search]
extras = ["elasticsearch7"]
optional = true
-version = ">=1.3.1,<1.4.0"
+version = ">=1.4.1,<1.5.0"
[package.dependencies.invenio-theme]
optional = true
-version = ">=1.1.4,<1.2.0"
+version = ">=1.3.5,<1.4.0"
[package.dependencies.invenio-userprofiles]
optional = true
-version = ">=1.1.1,<1.2.0"
+version = ">=1.2.1,<1.3.0"
+
+[package.dependencies.pytest-invenio]
+optional = true
+version = ">=1.4.0,<1.5.0"
[package.extras]
-all = ["invenio-admin (>=1.2.1,<1.3.0)", "invenio-assets (>=1.1.3,<1.2.0)", "invenio-formatter (>=1.0.3,<1.1.0)", "invenio-logging (>=1.3.0,<1.4.0)", "invenio-mail (>=1.0.2,<1.1.0)", "invenio-rest (>=1.2.1,<1.3.0)", "invenio-theme (>=1.1.4,<1.2.0)", "invenio-access (>=1.4.1,<1.5.0)", "invenio-accounts (>=1.3.0,<1.4.0)", "invenio-oauth2server (>=1.2.0,<1.3.0)", "invenio-oauthclient (>=1.3.0,<1.4.0)", "invenio-userprofiles (>=1.1.1,<1.2.0)", "invenio-indexer (>=1.1.1,<1.2.0)", "invenio-jsonschemas (>=1.1.0,<1.2.0)", "invenio-oaiserver (>=1.2.0,<1.3.0)", "invenio-pidstore (>=1.2.0,<1.3.0)", "invenio-records-rest (>=1.7.1,<1.8.0)", "invenio-records-ui (>=1.1.0,<1.2.0)", "invenio-records (>=1.3.1,<1.4.0)", "invenio-search-ui (>=1.2.0,<1.3.0)", "invenio-files-rest (>=1.2.0,<1.3.0)", "invenio-iiif (>=1.1.0,<1.2.0)", "invenio-previewer (>=1.2.1,<1.3.0)", "invenio-records-files (>=1.2.1,<1.3.0)", "Sphinx (>=1.5.1)", "check-manifest (>=0.35)", "coverage (>=4.5.3)", "isort (>=4.3)", "pydocstyle (>=3.0.0)", "pytest-cov (>=2.7.1)", "pytest-invenio (>=1.3.1,<1.4.0)", "pytest-pep8 (>=1.0.6)", "pytest (>=4.6.4,<5.0.0)"]
-auth = ["invenio-access (>=1.4.1,<1.5.0)", "invenio-accounts (>=1.3.0,<1.4.0)", "invenio-oauth2server (>=1.2.0,<1.3.0)", "invenio-oauthclient (>=1.3.0,<1.4.0)", "invenio-userprofiles (>=1.1.1,<1.2.0)"]
-base = ["invenio-admin (>=1.2.1,<1.3.0)", "invenio-assets (>=1.1.3,<1.2.0)", "invenio-formatter (>=1.0.3,<1.1.0)", "invenio-logging (>=1.3.0,<1.4.0)", "invenio-mail (>=1.0.2,<1.1.0)", "invenio-rest (>=1.2.1,<1.3.0)", "invenio-theme (>=1.1.4,<1.2.0)"]
-docs = ["Sphinx (>=1.5.1)"]
-elasticsearch5 = ["invenio-search (>=1.3.1,<1.4.0)"]
-elasticsearch6 = ["invenio-search (>=1.3.1,<1.4.0)"]
-elasticsearch7 = ["invenio-search (>=1.3.1,<1.4.0)"]
-files = ["invenio-files-rest (>=1.2.0,<1.3.0)", "invenio-iiif (>=1.1.0,<1.2.0)", "invenio-previewer (>=1.2.1,<1.3.0)", "invenio-records-files (>=1.2.1,<1.3.0)"]
-metadata = ["invenio-indexer (>=1.1.1,<1.2.0)", "invenio-jsonschemas (>=1.1.0,<1.2.0)", "invenio-oaiserver (>=1.2.0,<1.3.0)", "invenio-pidstore (>=1.2.0,<1.3.0)", "invenio-records-rest (>=1.7.1,<1.8.0)", "invenio-records-ui (>=1.1.0,<1.2.0)", "invenio-records (>=1.3.1,<1.4.0)", "invenio-search-ui (>=1.2.0,<1.3.0)"]
-mysql = ["invenio-db (>=1.0.5,<1.1.0)"]
-postgresql = ["invenio-db (>=1.0.5,<1.1.0)"]
-sqlite = ["invenio-db (>=1.0.5,<1.1.0)"]
-tests = ["check-manifest (>=0.35)", "coverage (>=4.5.3)", "isort (>=4.3)", "pydocstyle (>=3.0.0)", "pytest-cov (>=2.7.1)", "pytest-invenio (>=1.3.1,<1.4.0)", "pytest-pep8 (>=1.0.6)", "pytest (>=4.6.4,<5.0.0)"]
+all = ["invenio-admin (>=1.3.0,<1.4.0)", "invenio-assets (>=1.2.5,<1.3.0)", "invenio-formatter (>=1.1.0,<1.2.0)", "invenio-logging (>=1.3.0,<1.4.0)", "invenio-mail (>=1.0.2,<1.1.0)", "invenio-rest (>=1.2.3,<1.3.0)", "invenio-theme (>=1.3.5,<1.4.0)", "invenio-access (>=1.4.1,<1.5.0)", "invenio-accounts (>=1.4.3,<1.5.0)", "invenio-oauth2server (>=1.3.2,<1.4.0)", "invenio-oauthclient (>=1.4.0,<1.5.0)", "invenio-userprofiles (>=1.2.1,<1.3.0)", "invenio-indexer (>=1.2.0,<1.3.0)", "invenio-jsonschemas (>=1.1.1,<1.2.0)", "invenio-oaiserver (>=1.2.0,<1.3.0)", "invenio-pidstore (>=1.2.1,<1.3.0)", "invenio-records-rest (>=1.8.0,<1.9.0)", "invenio-records-ui (>=1.2.0,<1.3.0)", "invenio-records (>=1.4.0,<1.6.0)", "invenio-search-ui (>=2.0.0,<2.1.0)", "invenio-files-rest (>=1.2.0,<1.3.0)", "invenio-iiif (>=1.1.0,<1.2.0)", "invenio-previewer (>=1.3.2,<1.4.0)", "invenio-records-files (>=1.2.1,<1.3.0)", "Sphinx (>=3,<4)", "pytest-invenio (>=1.4.0,<1.5.0)"]
+auth = ["invenio-access (>=1.4.1,<1.5.0)", "invenio-accounts (>=1.4.3,<1.5.0)", "invenio-oauth2server (>=1.3.2,<1.4.0)", "invenio-oauthclient (>=1.4.0,<1.5.0)", "invenio-userprofiles (>=1.2.1,<1.3.0)"]
+base = ["invenio-admin (>=1.3.0,<1.4.0)", "invenio-assets (>=1.2.5,<1.3.0)", "invenio-formatter (>=1.1.0,<1.2.0)", "invenio-logging (>=1.3.0,<1.4.0)", "invenio-mail (>=1.0.2,<1.1.0)", "invenio-rest (>=1.2.3,<1.3.0)", "invenio-theme (>=1.3.5,<1.4.0)"]
+docs = ["Sphinx (>=3,<4)"]
+elasticsearch5 = ["invenio-search (>=1.4.1,<1.5.0)"]
+elasticsearch6 = ["invenio-search (>=1.4.1,<1.5.0)"]
+elasticsearch7 = ["invenio-search (>=1.4.1,<1.5.0)"]
+files = ["invenio-files-rest (>=1.2.0,<1.3.0)", "invenio-iiif (>=1.1.0,<1.2.0)", "invenio-previewer (>=1.3.2,<1.4.0)", "invenio-records-files (>=1.2.1,<1.3.0)"]
+metadata = ["invenio-indexer (>=1.2.0,<1.3.0)", "invenio-jsonschemas (>=1.1.1,<1.2.0)", "invenio-oaiserver (>=1.2.0,<1.3.0)", "invenio-pidstore (>=1.2.1,<1.3.0)", "invenio-records-rest (>=1.8.0,<1.9.0)", "invenio-records-ui (>=1.2.0,<1.3.0)", "invenio-records (>=1.4.0,<1.6.0)", "invenio-search-ui (>=2.0.0,<2.1.0)"]
+mysql = ["invenio-db (>=1.0.8,<1.1.0)"]
+postgresql = ["invenio-db (>=1.0.8,<1.1.0)"]
+sqlite = ["invenio-db (>=1.0.8,<1.1.0)"]
+tests = ["pytest-invenio (>=1.4.0,<1.5.0)"]
[[package]]
category = "main"
@@ -1153,7 +1114,7 @@ description = "Invenio user management and authentication."
name = "invenio-accounts"
optional = false
python-versions = "*"
-version = "1.3.1"
+version = "1.4.3"
[package.dependencies]
Flask-Breadcrumbs = ">=0.4.0"
@@ -1163,13 +1124,14 @@ Flask-Mail = ">=0.9.1"
Flask-Menu = ">=0.5.0"
Flask-Security = ">=3.0.0"
Flask-WTF = ">=0.14.3"
-cryptography = ">=2.1.4"
+cryptography = ">=3.0.0"
email-validator = ">=1.0.5"
future = ">=0.16.0"
-invenio-base = ">=1.2.2"
+invenio-base = ">=1.2.3"
invenio-celery = ">=1.1.2"
invenio-i18n = ">=1.2.0"
invenio-rest = ">=1.2.1"
+invenio-theme = ">=1.3.4"
maxminddb-geolite2 = ">=2017.404"
passlib = ">=1.7.1"
pyjwt = ">=1.5.0"
@@ -1178,13 +1140,13 @@ simplekv = ">=0.11.2"
ua-parser = ">=0.7.3"
[package.extras]
-admin = ["Flask-Admin (>=1.3.0)"]
-all = ["Flask-Admin (>=1.3.0)", "Sphinx (>=3)", "check-manifest (>=0.25)", "coverage (>=4.0)", "isort (>=4.3.0)", "mock (>=2.0.0)", "pydocstyle (>=1.0.0)", "pytest-invenio (>=1.4.0)", "selenium (>=3.0.1)"]
+admin = ["invenio-admin (>=1.2.1)"]
+all = ["invenio-admin (>=1.2.1)", "Sphinx (>=3)", "pytest-invenio (>=1.4.0)"]
docs = ["Sphinx (>=3)"]
-mysql = ["invenio-db (>=1.0.0)"]
-postgresql = ["invenio-db (>=1.0.0)"]
-sqlite = ["invenio-db (>=1.0.0)"]
-tests = ["check-manifest (>=0.25)", "coverage (>=4.0)", "isort (>=4.3.0)", "mock (>=2.0.0)", "pydocstyle (>=1.0.0)", "pytest-invenio (>=1.4.0)", "selenium (>=3.0.1)"]
+mysql = ["invenio-db (>=1.0.8)"]
+postgresql = ["invenio-db (>=1.0.8)"]
+sqlite = ["invenio-db (>=1.0.8)"]
+tests = ["pytest-invenio (>=1.4.0)"]
[[package]]
category = "main"
@@ -1192,7 +1154,7 @@ description = "Invenio module that adds administration panel to the system."
name = "invenio-admin"
optional = false
python-versions = "*"
-version = "1.2.1"
+version = "1.3.0"
[package.dependencies]
Flask-Admin = ">=1.5.6"
@@ -1204,9 +1166,9 @@ invenio-db = ">=1.0.0"
[package.extras]
access = ["invenio-access (>=1.0.0)"]
-all = ["Sphinx (>=1.4.2)", "invenio-access (>=1.0.0)", "check-manifest (>=0.25)", "coverage (>=4.0)", "invenio-theme (>=1.1.1)", "isort (>=4.2.2)", "mock (>=1.3.0)", "pydocstyle (>=1.0.0)", "pytest-cov (>=1.8.0)", "pytest-pep8 (>=1.0.6)", "pytest (>=3.8.1)"]
+all = ["Sphinx (>=1.4.2)", "invenio-access (>=1.0.0)", "invenio-theme (>=1.3.4)", "pytest-invenio (>=1.4.0)"]
docs = ["Sphinx (>=1.4.2)"]
-tests = ["check-manifest (>=0.25)", "coverage (>=4.0)", "invenio-theme (>=1.1.1)", "isort (>=4.2.2)", "mock (>=1.3.0)", "pydocstyle (>=1.0.0)", "pytest-cov (>=1.8.0)", "pytest-pep8 (>=1.0.6)", "pytest (>=3.8.1)"]
+tests = ["invenio-theme (>=1.3.4)", "pytest-invenio (>=1.4.0)"]
[[package]]
category = "main"
@@ -1214,23 +1176,23 @@ description = "WSGI, Celery and CLI applications for Invenio flavours."
name = "invenio-app"
optional = false
python-versions = "*"
-version = "1.2.7"
+version = "1.3.1"
[package.dependencies]
flask-celeryext = ">=0.2.2"
flask-limiter = ">=1.0.1,<1.2.0"
flask-shell-ipython = ">=0.3.1"
flask-talisman = ">=0.3.2,<0.5.1"
-invenio-base = ">=1.1.0"
+invenio-base = ">=1.2.3"
invenio-cache = ">=1.0.0"
invenio-config = ">=1.0.0"
six = ">=1.12.0"
uritools = ">=1.0.1"
[package.extras]
-all = ["Sphinx (>=1.8.0)", "check-manifest (>=0.25)", "coverage (>=4.5.3)", "isort (>=4.3.21)", "pydocstyle (>=3.0.0)", "pytest-cov (>=2.7.1)", "pytest-pep8 (>=1.0.6)", "pytest (>=4.6.4,<5.0.0)", "redis (>=2.10.5)", "mock (>=2.0.0)"]
+all = ["Sphinx (>=1.8.0)", "pytest-invenio (>=1.4.0)", "redis (>=2.10.5)", "mock (>=2.0.0)"]
docs = ["Sphinx (>=1.8.0)"]
-tests = ["check-manifest (>=0.25)", "coverage (>=4.5.3)", "isort (>=4.3.21)", "pydocstyle (>=3.0.0)", "pytest-cov (>=2.7.1)", "pytest-pep8 (>=1.0.6)", "pytest (>=4.6.4,<5.0.0)", "redis (>=2.10.5)", "mock (>=2.0.0)"]
+tests = ["pytest-invenio (>=1.4.0)", "redis (>=2.10.5)", "mock (>=2.0.0)"]
[[package]]
category = "main"
@@ -1238,17 +1200,13 @@ description = "Media assets management for Invenio."
name = "invenio-assets"
optional = false
python-versions = "*"
-version = "1.1.5"
+version = "1.2.5"
[package.dependencies]
-Babel = ">=1.3"
-Flask = ">=0.11.1"
-Flask-Assets = ">=0.12"
Flask-Collect = "1.2.2"
Flask-WebpackExt = ">=1.0.0"
+invenio-base = ">=1.2.3"
node-semver = ">=0.1.1,<0.2.0"
-speaklater = ">=1.3"
-webassets = ">=0.12"
[package.extras]
all = ["Sphinx (>=1.5.1)", "check-manifest (>=0.25)", "coverage (>=4.0)", "isort (>=4.2.2)", "mock (>=1.3.0)", "pydocstyle (>=1.0.0)", "pytest-cov (>=1.8.0)", "pytest-pep8 (>=1.0.6)", "pytest (>=4.0.0,<5.0.0)"]
@@ -1297,20 +1255,19 @@ description = "Celery module for Invenio."
name = "invenio-celery"
optional = false
python-versions = "*"
-version = "1.2.1"
+version = "1.2.2"
[package.dependencies]
Flask-CeleryExt = ">=0.3.4"
celery = ">=4.4.0,<5.1"
invenio-base = ">=1.2.3"
msgpack = ">=0.6.2"
-pytest-celery = ">=0.0.0a1"
redis = ">=2.10.0"
[package.extras]
-all = ["Sphinx (>=3)", "mock (>=1.3.0)", "pytest-invenio (>=1.3.4)", "pytest-cov (>=2.10.1)", "pytest-isort (>=1.2.0)", "pytest-pycodestyle (>=2.2.0)", "pytest-pydocstyle (>=2.2.0)", "pytest (>=6,<7)"]
+all = ["Sphinx (>=3)", "pytest-invenio (>=1.4.0)"]
docs = ["Sphinx (>=3)"]
-tests = ["mock (>=1.3.0)", "pytest-invenio (>=1.3.4)", "pytest-cov (>=2.10.1)", "pytest-isort (>=1.2.0)", "pytest-pycodestyle (>=2.2.0)", "pytest-pydocstyle (>=2.2.0)", "pytest (>=6,<7)"]
+tests = ["pytest-invenio (>=1.4.0)"]
[[package]]
category = "main"
@@ -1343,7 +1300,6 @@ tests = ["invenio-app (>=1.2.3)", "invenio-jsonschemas (>=1.0.1)", "mock (>=1.3.
reference = "d8c96352d55f8a5a72303c66bd06b46fc022c579"
type = "git"
url = "https://github.com/inveniosoftware/invenio-circulation.git"
-
[[package]]
category = "main"
description = "Invenio configuration loader."
@@ -1397,7 +1353,7 @@ description = "Jinja utilities for Invenio."
name = "invenio-formatter"
optional = false
python-versions = "*"
-version = "1.0.3"
+version = "1.1.0"
[package.dependencies]
Flask = ">=0.11.1"
@@ -1407,10 +1363,10 @@ arrow = ">=0.7.0"
bleach = ">=3.1.0"
[package.extras]
-all = ["Sphinx (>=1.8.0)", "CairoSVG (>=1.0.20,<2.0.0)", "CairoSVG (>=1.0.20)", "Pillow (>=3.2.0)", "check-manifest (>=0.25)", "coverage (>=4.0)", "isort (>=4.2.2)", "mock (>=1.3.0)", "pydocstyle (>=1.0.0)", "pytest-cov (>=1.8.0)", "pytest-pep8 (>=1.0.6)", "pytest (>=4.0.0,<5.0.0)"]
+all = ["Sphinx (>=1.8.0)", "CairoSVG (>=1.0.20,<2.0.0)", "CairoSVG (>=1.0.20)", "Pillow (>=3.2.0)", "pytest-invenio (>=1.4.0)"]
badges = ["Pillow (>=3.2.0)", "CairoSVG (>=1.0.20,<2.0.0)", "CairoSVG (>=1.0.20)"]
docs = ["Sphinx (>=1.8.0)"]
-tests = ["check-manifest (>=0.25)", "coverage (>=4.0)", "isort (>=4.2.2)", "mock (>=1.3.0)", "pydocstyle (>=1.0.0)", "pytest-cov (>=1.8.0)", "pytest-pep8 (>=1.0.6)", "pytest (>=4.0.0,<5.0.0)"]
+tests = ["pytest-invenio (>=1.4.0)"]
[[package]]
category = "main"
@@ -1418,16 +1374,16 @@ description = "Invenio internationalization module."
name = "invenio-i18n"
optional = false
python-versions = "*"
-version = "1.2.0"
+version = "1.3.0"
[package.dependencies]
Flask-BabelEx = ">=0.9.4"
-invenio-base = ">=1.2.2"
+invenio-base = ">=1.2.3"
[package.extras]
-all = ["Sphinx (>=1.5.1)", "check-manifest (>=0.25)", "coverage (>=4.0)", "invenio-accounts (>=1.1.3)", "invenio-assets (>=1.0.0)", "isort (>=4.3.0)", "pydocstyle (>=1.0.0)", "pytest-cov (>=1.8.0)", "pytest-pep8 (>=1.0.6)", "pytest (>=3.8.0,<5.0.0)"]
-docs = ["Sphinx (>=1.5.1)"]
-tests = ["check-manifest (>=0.25)", "coverage (>=4.0)", "invenio-accounts (>=1.1.3)", "invenio-assets (>=1.0.0)", "isort (>=4.3.0)", "pydocstyle (>=1.0.0)", "pytest-cov (>=1.8.0)", "pytest-pep8 (>=1.0.6)", "pytest (>=3.8.0,<5.0.0)"]
+all = ["Sphinx (>=3)", "invenio-accounts (>=1.3.0)", "invenio-assets (>=1.2.0)", "invenio-db (>=1.0.8)", "pytest-invenio (>=1.4.0)"]
+docs = ["Sphinx (>=3)"]
+tests = ["invenio-accounts (>=1.3.0)", "invenio-assets (>=1.2.0)", "invenio-db (>=1.0.8)", "pytest-invenio (>=1.4.0)"]
[[package]]
category = "main"
@@ -1435,7 +1391,7 @@ description = "Record indexer for Invenio."
name = "invenio-indexer"
optional = false
python-versions = "*"
-version = "1.1.2"
+version = "1.2.0"
[package.dependencies]
Flask = ">=0.11.1"
@@ -1445,13 +1401,13 @@ invenio-records = ">=1.0.0"
pytz = ">=2016.4"
[package.extras]
-all = ["Sphinx (>=1.5.1,<1.6)", "attrs (>=17.4.0)", "check-manifest (>=0.25)", "coverage (>=4.0)", "invenio-db (>=1.0.0)", "isort (>=4.3.21)", "mock (>=1.3.0)", "pydocstyle (>=1.0.0)", "pytest-cov (>=1.8.0)", "pytest-pep8 (>=1.0.6)", "pytest (>=2.8.0)", "redis (>=2.10.0)", "Sphinx (>=1.5.1,<1.6)", "attrs (>=17.4.0)", "check-manifest (>=0.25)", "coverage (>=4.0)", "invenio-db (>=1.0.0)", "isort (>=4.3.21)", "mock (>=1.3.0)", "pydocstyle (>=1.0.0)", "pytest-cov (>=1.8.0)", "pytest-pep8 (>=1.0.6)", "pytest (>=2.8.0)", "redis (>=2.10.0)"]
-docs = ["Sphinx (>=1.5.1,<1.6)"]
+all = ["Sphinx (>=2.4,<3)", "attrs (>=17.4.0)", "invenio-db (>=1.0.0)", "mock (>=1.3.0)", "pytest-invenio (>=1.3.2)", "redis (>=2.10.0)", "Sphinx (>=2.4,<3)", "attrs (>=17.4.0)", "invenio-db (>=1.0.0)", "mock (>=1.3.0)", "pytest-invenio (>=1.3.2)", "redis (>=2.10.0)"]
+docs = ["Sphinx (>=2.4,<3)"]
elasticsearch2 = ["invenio-search (>=1.2.0)"]
elasticsearch5 = ["invenio-search (>=1.2.0)"]
elasticsearch6 = ["invenio-search (>=1.2.0)"]
elasticsearch7 = ["invenio-search (>=1.2.0)"]
-tests = ["attrs (>=17.4.0)", "check-manifest (>=0.25)", "coverage (>=4.0)", "invenio-db (>=1.0.0)", "isort (>=4.3.21)", "mock (>=1.3.0)", "pydocstyle (>=1.0.0)", "pytest-cov (>=1.8.0)", "pytest-pep8 (>=1.0.6)", "pytest (>=2.8.0)", "redis (>=2.10.0)"]
+tests = ["attrs (>=17.4.0)", "invenio-db (>=1.0.0)", "mock (>=1.3.0)", "pytest-invenio (>=1.3.2)", "redis (>=2.10.0)"]
[[package]]
category = "main"
@@ -1546,7 +1502,6 @@ tests = ["check-manifest (>=0.35)", "coverage (>=4.3.4)", "isort (4.2.2)", "mock
reference = "fe55e095a8e78b36cfad875f752f2facc2908bae"
type = "git"
url = "https://github.com/inveniosoftware/invenio-oaiharvester.git"
-
[[package]]
category = "main"
description = "Invenio module that implements OAI-PMH server."
@@ -1585,7 +1540,7 @@ description = "Invenio module that implements OAuth 2 server."
name = "invenio-oauth2server"
optional = false
python-versions = "*"
-version = "1.2.0"
+version = "1.3.2"
[package.dependencies]
Flask-Breadcrumbs = ">=0.4.0"
@@ -1594,26 +1549,22 @@ Flask-WTF = ">=0.14.3"
WTForms-Alchemy = ">=0.15.0"
cachelib = ">=0.1"
future = ">=0.16.0"
-invenio-accounts = ">=1.2.2"
-invenio-base = ">=1.2.2"
+invenio-accounts = ">=1.3.1"
+invenio-base = ">=1.2.3"
invenio-i18n = ">=1.2.0"
-oauthlib = ">=1.1.2,<3.0.0"
+invenio-theme = ">=1.3.4"
pyjwt = ">=1.5.0"
requests-oauthlib = ">=1.1.0,<1.2.0"
-[package.dependencies.SQLAlchemy-Utils]
-extras = ["encrypted"]
-version = ">=0.33.0,<0.36.0"
-
[package.extras]
-admin = ["invenio-admin (>=1.0.0)"]
-all = ["invenio-admin (>=1.0.0)", "Sphinx (>=1.5.1,<3)", "redis (>=2.10.5)", "SQLAlchemy-Continuum (>=1.2.1)", "check-manifest (>=0.25)", "coverage (>=4.0)", "invenio-assets (>=1.0.0)", "invenio-i18n (>=1.0.0)", "invenio-theme (>=1.0.0)", "isort (>=4.2.2)", "mock (>=1.3.0)", "pydocstyle (>=1.0.0)", "pytest-cov (>=1.8.0)", "pytest-pep8 (>=1.0.6)", "pytest (>=3.8.0,<5.0.0)"]
-docs = ["Sphinx (>=1.5.1,<3)"]
-mysql = ["invenio-db (>=1.0.0)"]
-postgresql = ["invenio-db (>=1.0.0)"]
+admin = ["invenio-admin (>=1.2.1)"]
+all = ["invenio-admin (>=1.2.1)", "Sphinx (>=2,<3)", "redis (>=2.10.5)", "pytest-invenio (>=1.4.0)"]
+docs = ["Sphinx (>=2,<3)"]
+mysql = ["invenio-db (>=1.0.8)"]
+postgresql = ["invenio-db (>=1.0.8)"]
redis = ["redis (>=2.10.5)"]
-sqlite = ["invenio-db (>=1.0.0)"]
-tests = ["SQLAlchemy-Continuum (>=1.2.1)", "check-manifest (>=0.25)", "coverage (>=4.0)", "invenio-assets (>=1.0.0)", "invenio-i18n (>=1.0.0)", "invenio-theme (>=1.0.0)", "isort (>=4.2.2)", "mock (>=1.3.0)", "pydocstyle (>=1.0.0)", "pytest-cov (>=1.8.0)", "pytest-pep8 (>=1.0.6)", "pytest (>=3.8.0,<5.0.0)"]
+sqlite = ["invenio-db (>=1.0.8)"]
+tests = ["pytest-invenio (>=1.4.0)"]
[[package]]
category = "main"
@@ -1621,7 +1572,7 @@ description = "Invenio module that provides OAuth web authorization support."
name = "invenio-oauthclient"
optional = false
python-versions = "*"
-version = "1.3.5"
+version = "1.4.1"
[package.dependencies]
Flask-Breadcrumbs = ">=0.5.0"
@@ -1631,14 +1582,15 @@ invenio-accounts = ">=1.3.0"
invenio-base = ">=1.2.3"
invenio-i18n = ">=1.2.0"
invenio-mail = ">=1.0.0"
+invenio-theme = ">=1.3.4"
oauthlib = ">=1.1.2,<3.0.0"
requests-oauthlib = ">=0.6.2,<1.2.0"
uritools = ">=1.0.1"
[package.extras]
admin = ["invenio-admin (>=1.0.0)"]
-all = ["invenio-admin (>=1.0.0)", "Sphinx (>=3.0.0)", "github3.py (>=1.0.0a4)", "uritemplate.py (>=0.2.0,<2.0)", "pytest-invenio (>=1.4.0)", "SQLAlchemy-Continuum (>=1.2.1)", "httpretty (>=0.8.14)", "invenio-userprofiles (>=1.0.0)", "requests-oauthlib (>=0.6.2,<1.2.0)", "oauthlib (>=1.1.2,<3.0.0)", "mock (>=1.3.0)", "simplejson (>=3.8)"]
-docs = ["Sphinx (>=3.0.0)"]
+all = ["invenio-admin (>=1.0.0)", "Sphinx (>=3.0.0,<3.4.2)", "github3.py (>=1.0.0a4)", "uritemplate.py (>=0.2.0,<2.0)", "pytest-invenio (>=1.4.0)", "SQLAlchemy-Continuum (>=1.2.1)", "httpretty (>=0.8.14)", "invenio-userprofiles (>=1.0.0)", "requests-oauthlib (>=0.6.2,<1.2.0)", "oauthlib (>=1.1.2,<3.0.0)", "mock (>=1.3.0)", "simplejson (>=3.8)"]
+docs = ["Sphinx (>=3.0.0,<3.4.2)"]
github = ["github3.py (>=1.0.0a4)", "uritemplate.py (>=0.2.0,<2.0)"]
mysql = ["invenio-db (>=1.0.5)"]
postgresql = ["invenio-db (>=1.0.5)"]
@@ -1674,27 +1626,26 @@ description = "Invenio-Records is a metadata storage module."
name = "invenio-records"
optional = false
python-versions = "*"
-version = "1.3.2"
+version = "1.4.0"
[package.dependencies]
-Flask-BabelEx = ">=0.9.3"
-blinker = ">=1.4"
-flask = ">=0.11.1"
-flask-celeryext = ">=0.2.2"
-jsonpatch = ">=1.15"
-jsonref = ">=0.1"
-jsonresolver = ">=0.1.0"
-jsonschema = ">=2.5.1"
-werkzeug = ">=0.14.1"
+arrow = ">=0.16.0"
+invenio-base = ">=1.2.3"
+invenio-celery = ">=1.2.1"
+invenio-i18n = ">=1.2.0"
+jsonpatch = ">=1.26"
+jsonref = ">=0.2"
+jsonresolver = ">=0.3.1"
+jsonschema = ">=3.0.0"
[package.extras]
-admin = ["Flask-Admin (>=1.3.0)"]
-all = ["Sphinx (>=1.7.2)", "Flask-Admin (>=1.3.0)", "check-manifest (>=0.25)", "coverage (>=4.5.3)", "Flask-Menu (>=0.5.0)", "invenio-admin (>=1.0.0)", "isort (>=4.3.0)", "mock (>=1.3.0)", "pydocstyle (>=3.0.0)", "pytest-cov (>=2.7.1)", "pytest-pep8 (>=1.0.6)", "pytest (>=4.6.4,<5.0.0)"]
-docs = ["Sphinx (>=1.7.2)"]
-mysql = ["invenio-db (>=1.0.0)"]
-postgresql = ["invenio-db (>=1.0.0)"]
-sqlite = ["invenio-db (>=1.0.0)"]
-tests = ["check-manifest (>=0.25)", "coverage (>=4.5.3)", "Flask-Menu (>=0.5.0)", "invenio-admin (>=1.0.0)", "isort (>=4.3.0)", "mock (>=1.3.0)", "pydocstyle (>=3.0.0)", "pytest-cov (>=2.7.1)", "pytest-pep8 (>=1.0.6)", "pytest (>=4.6.4,<5.0.0)"]
+admin = ["invenio-admin (>=1.2.1)"]
+all = ["Sphinx (>=2.4)", "invenio-admin (>=1.2.1)", "mock (>=3.0.5)", "pytest-invenio (>=1.4.0)"]
+docs = ["Sphinx (>=2.4)"]
+mysql = ["invenio-db (>=1.0.5)"]
+postgresql = ["invenio-db (>=1.0.5)"]
+sqlite = ["invenio-db (>=1.0.5)"]
+tests = ["mock (>=3.0.5)", "pytest-invenio (>=1.4.0)"]
[[package]]
category = "main"
@@ -1702,33 +1653,29 @@ description = "REST API for invenio-records."
name = "invenio-records-rest"
optional = false
python-versions = "*"
-version = "1.7.2"
+version = "1.8.0"
[package.dependencies]
-arrow = ">=0.12.1"
-attrs = ">=17.4.0"
bleach = ">=2.1.3"
-ftfy = ">=4.4.3,<5.0"
-invenio-base = ">=1.2.2"
-invenio-i18n = ">=1.2.0"
-invenio-indexer = ">=1.1.0"
-invenio-pidstore = ">=1.2.0"
-invenio-records = ">=1.0.0"
-invenio-rest = ">=1.2.0"
-python-dateutil = ">=2.4.2"
+ftfy = ">=4.4.3"
+invenio-base = ">=1.2.3"
+invenio-i18n = ">=1.3.0"
+invenio-indexer = ">=1.2.0"
+invenio-pidstore = ">=1.2.1"
+invenio-records = ">=1.4.0"
+invenio-rest = ">=1.2.3"
[package.extras]
-all = ["citeproc-py (>=0.3.0)", "citeproc-py-styles (>=0.1.0)", "datacite (>=1.0.1)", "Sphinx (>=1.6.7,<3)", "dcxml (>=0.1.0)", "pyld (>=0.7.1,<2)", "check-manifest (>=0.25)", "coverage (>=4.0)", "Flask-Login (>=0.3.2)", "invenio-db (>=1.0.2)", "invenio-indexer (>=1.0.0)", "isort (>=4.3.1)", "pydocstyle (>=1.0.0)", "pytest-cov (>=1.8.0)", "pytest-pep8 (>=1.0.6)", "pytest (>=4.0.0,<5.0.0)", "invenio-config (>=1.0.2)"]
-citeproc = ["citeproc-py (>=0.3.0)", "citeproc-py-styles (>=0.1.0)"]
+all = ["citeproc-py (>=0.5.1)", "citeproc-py-styles (>=0.1.2)", "datacite (>=1.0.1)", "Sphinx (>=3.3.1)", "dcxml (>=0.1.2)", "pyld (>=1.0.5,<2)", "Flask-Login (>=0.3.2)", "invenio-config (>=1.0.2)", "invenio-db (>=1.0.8)", "pytest-invenio (>=1.4.0)"]
+citeproc = ["citeproc-py (>=0.5.1)", "citeproc-py-styles (>=0.1.2)"]
datacite = ["datacite (>=1.0.1)"]
-docs = ["Sphinx (>=1.6.7,<3)"]
-dublincore = ["dcxml (>=0.1.0)"]
-elasticsearch2 = ["invenio-search (>=1.2.0)"]
+docs = ["Sphinx (>=3.3.1)"]
+dublincore = ["dcxml (>=0.1.2)"]
elasticsearch5 = ["invenio-search (>=1.2.0)"]
elasticsearch6 = ["invenio-search (>=1.2.0)"]
elasticsearch7 = ["invenio-search (>=1.2.0)"]
-jsonld = ["pyld (>=0.7.1,<2)"]
-tests = ["check-manifest (>=0.25)", "coverage (>=4.0)", "Flask-Login (>=0.3.2)", "invenio-db (>=1.0.2)", "invenio-indexer (>=1.0.0)", "isort (>=4.3.1)", "pydocstyle (>=1.0.0)", "pytest-cov (>=1.8.0)", "pytest-pep8 (>=1.0.6)", "pytest (>=4.0.0,<5.0.0)", "invenio-config (>=1.0.2)"]
+jsonld = ["pyld (>=1.0.5,<2)"]
+tests = ["Flask-Login (>=0.3.2)", "invenio-config (>=1.0.2)", "invenio-db (>=1.0.8)", "pytest-invenio (>=1.4.0)"]
[[package]]
category = "main"
@@ -1777,7 +1724,7 @@ description = "Invenio module for information retrieval."
name = "invenio-search"
optional = false
python-versions = "*"
-version = "1.3.1"
+version = "1.4.1"
[package.dependencies]
invenio-base = ">=1.2.2"
@@ -1791,13 +1738,13 @@ optional = true
version = ">=7.0.0,<8.0.0"
[package.extras]
-all = ["Sphinx (>=1.8.4,<3)", "invenio-accounts (>=1.0.0)", "check-manifest (>=0.35)", "coverage (>=4.0)", "invenio-db (>=1.0.0)", "isort (>=4.2.15)", "mock (>=1.3.0)", "pydocstyle (>=1.0.0)", "pytest-cov (>=1.8.0)", "pytest-random-order (>=0.5.4)", "pytest-pep8 (>=1.0.6)", "pytest (>=3.8.1,<4)"]
+all = ["Sphinx (>=1.8.4,<3)", "invenio-accounts (>=1.0.0)", "invenio-db (>=1.0.0)", "mock (>=1.3.0)", "pytest-invenio (>=1.4.0,<2.0.0)"]
docs = ["Sphinx (>=1.8.4,<3)", "invenio-accounts (>=1.0.0)"]
elasticsearch2 = ["elasticsearch (>=2.0.0,<3.0.0)", "elasticsearch-dsl (>=2.0.0,<3.0.0)"]
elasticsearch5 = ["elasticsearch (>=5.0.0,<6.0.0)", "elasticsearch-dsl (>=5.1.0,<6.0.0)"]
elasticsearch6 = ["elasticsearch (>=6.0.0,<7.0.0)", "elasticsearch-dsl (>=6.0.0,<6.2.0)"]
elasticsearch7 = ["elasticsearch (>=7.0.0,<8.0.0)", "elasticsearch-dsl (>=7.0.0,<8.0.0)"]
-tests = ["check-manifest (>=0.35)", "coverage (>=4.0)", "invenio-db (>=1.0.0)", "isort (>=4.2.15)", "mock (>=1.3.0)", "pydocstyle (>=1.0.0)", "pytest-cov (>=1.8.0)", "pytest-random-order (>=0.5.4)", "pytest-pep8 (>=1.0.6)", "pytest (>=3.8.1,<4)"]
+tests = ["invenio-db (>=1.0.0)", "mock (>=1.3.0)", "pytest-invenio (>=1.4.0,<2.0.0)"]
[[package]]
category = "main"
@@ -1834,28 +1781,26 @@ tests = ["check-manifest (>=0.35)", "coverage (>=4.5.3)", "invenio-app (>=1.2.3)
reference = "88f4db624d8c6da3b1f7debb38a06ec88031e40c"
type = "git"
url = "https://github.com/inveniosoftware-contrib/invenio-sip2.git"
-
[[package]]
category = "main"
description = "Invenio standard theme."
name = "invenio-theme"
optional = false
python-versions = "*"
-version = "1.1.4"
+version = "1.3.6"
[package.dependencies]
-Flask = ">=0.11.1"
-Flask-BabelEx = ">=0.9.2"
Flask-Breadcrumbs = ">=0.4.0"
Flask-Menu = ">=0.5.0"
-invenio-assets = ">=1.1.0"
-invenio-i18n = ">=1.1.0"
+invenio-assets = ">=1.2.2"
+invenio-base = ">=1.2.3"
+invenio-i18n = ">=1.2.0"
jsmin = ">=2.1.6"
[package.extras]
-all = ["Sphinx (>=1.5.1)", "check-manifest (>=0.25)", "coverage (>=4.0)", "isort (>=4.2.2)", "pydocstyle (>=1.0.0)", "pytest-cov (>=2.7.1)", "pytest-pep8 (>=1.0.6)", "pytest (>=4.6.4)"]
+all = ["Sphinx (>=1.5.1)", "pytest-invenio (>=1.4.0)"]
docs = ["Sphinx (>=1.5.1)"]
-tests = ["check-manifest (>=0.25)", "coverage (>=4.0)", "isort (>=4.2.2)", "pydocstyle (>=1.0.0)", "pytest-cov (>=2.7.1)", "pytest-pep8 (>=1.0.6)", "pytest (>=4.6.4)"]
+tests = ["pytest-invenio (>=1.4.0)"]
[[package]]
category = "main"
@@ -1863,31 +1808,31 @@ description = "User profiles module for Invenio."
name = "invenio-userprofiles"
optional = false
python-versions = "*"
-version = "1.1.1"
+version = "1.2.1"
[package.dependencies]
Flask-Breadcrumbs = ">=0.5.0"
Flask-Mail = ">=0.9.1"
-Flask-Menu = ">=0.4.0"
+Flask-Menu = ">=0.5.0"
Flask-WTF = ">=0.14.3"
invenio-accounts = ">=1.2.1"
invenio-base = ">=1.2.2"
invenio-i18n = ">=1.2.0"
+invenio-theme = ">=1.3.4"
[package.extras]
admin = ["invenio-admin (>=1.2.0)"]
-all = ["invenio-admin (>=1.2.0)", "Sphinx (>=1.4.2)", "invenio-mail (>=1.0.0)", "SQLAlchemy-Continuum (>=1.2.1)", "check-manifest (>=0.25)", "coverage (>=4.0)", "isort (>=4.2.2)", "pydocstyle (>=1.0.0)", "pytest-cov (>=1.8.0)", "pytest-pep8 (>=1.0.6)", "pytest (>=3.8.0,<5.0.0)", "invenio-admin (>=1.2.0)", "Sphinx (>=1.4.2)", "invenio-mail (>=1.0.0)", "SQLAlchemy-Continuum (>=1.2.1)", "check-manifest (>=0.25)", "coverage (>=4.0)", "isort (>=4.2.2)", "pydocstyle (>=1.0.0)", "pytest-cov (>=1.8.0)", "pytest-pep8 (>=1.0.6)", "pytest (>=3.8.0,<5.0.0)"]
-docs = ["Sphinx (>=1.4.2)", "invenio-mail (>=1.0.0)"]
-mysql = ["invenio-db (>=1.0.0)"]
-postgresql = ["invenio-db (>=1.0.0)"]
-sqlite = ["invenio-db (>=1.0.0)"]
-tests = ["SQLAlchemy-Continuum (>=1.2.1)", "check-manifest (>=0.25)", "coverage (>=4.0)", "isort (>=4.2.2)", "pydocstyle (>=1.0.0)", "pytest-cov (>=1.8.0)", "pytest-pep8 (>=1.0.6)", "pytest (>=3.8.0,<5.0.0)"]
+all = ["invenio-admin (>=1.2.0)", "Sphinx (>=1.4.2,<3.0.0)", "invenio-mail (>=1.0.0)", "pytest-invenio (>=1.4.0)", "invenio-admin (>=1.2.0)", "Sphinx (>=1.4.2,<3.0.0)", "invenio-mail (>=1.0.0)", "pytest-invenio (>=1.4.0)"]
+docs = ["Sphinx (>=1.4.2,<3.0.0)", "invenio-mail (>=1.0.0)"]
+mysql = ["invenio-db (>=1.0.5)"]
+postgresql = ["invenio-db (>=1.0.5)"]
+sqlite = ["invenio-db (>=1.0.5)"]
+tests = ["pytest-invenio (>=1.4.0)"]
[package.source]
-reference = "f9db7ade122b16d37a8923a2785aa10c5aac1648"
+reference = "d7fafc33068df24a7a9ef34836587f15c45ca96d"
type = "git"
url = "https://github.com/rero/invenio-userprofiles.git"
-
[[package]]
category = "main"
description = "IPython: Productive Interactive Computing"
@@ -1969,7 +1914,7 @@ python-versions = "*"
version = "3.10.5"
[[package]]
-category = "dev"
+category = "main"
description = "A Python utility / library to sort Python imports."
name = "isort"
optional = false
@@ -1994,15 +1939,15 @@ category = "main"
description = "An autocompletion tool for Python that can be used for text editors."
name = "jedi"
optional = false
-python-versions = ">=3.6"
-version = "0.18.0"
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+version = "0.17.2"
[package.dependencies]
-parso = ">=0.8.0,<0.9.0"
+parso = ">=0.7.0,<0.8.0"
[package.extras]
-qa = ["flake8 (3.8.3)", "mypy (0.782)"]
-testing = ["Django (<3.1)", "colorama", "docopt", "pytest (<6.0.0)"]
+qa = ["flake8 (3.7.9)"]
+testing = ["Django (<3.1)", "colorama", "docopt", "pytest (>=3.9.0,<5.0.0)"]
[[package]]
category = "main"
@@ -2077,19 +2022,19 @@ description = "JSON data resolver with support for plugins."
name = "jsonresolver"
optional = false
python-versions = "*"
-version = "0.2.1"
+version = "0.3.1"
[package.dependencies]
-pluggy = ">=0.3.0,<1.0"
-six = ">=1.8.0"
-werkzeug = ">=0.10.4"
+pluggy = ">=0.10.0,<1.0"
+six = ">=1.12.0"
+werkzeug = ">=1.0.0"
[package.extras]
-all = ["Sphinx (>=1.3)", "check-manifest (>=0.25)", "coverage (>=4.0)", "isort (>=4.2.2)", "mock (>=1.3.0)", "pydocstyle (>=1.0.0)", "pytest-cache (>=1.0)", "pytest-cov (>=1.8.0)", "pytest-pep8 (>=1.0.6)", "pytest (>=2.8.0)", "requests (>=2.7.0)", "jsonschema (>=2.5.1)", "jsonref (>=0.1)", "Sphinx (>=1.3)", "check-manifest (>=0.25)", "coverage (>=4.0)", "isort (>=4.2.2)", "mock (>=1.3.0)", "pydocstyle (>=1.0.0)", "pytest-cache (>=1.0)", "pytest-cov (>=1.8.0)", "pytest-pep8 (>=1.0.6)", "pytest (>=2.8.0)", "requests (>=2.7.0)", "jsonschema (>=2.5.1)", "jsonref (>=0.1)"]
-docs = ["Sphinx (>=1.3)"]
+all = ["Sphinx (>=1.5.1)", "jsonref (>=0.1)", "jsonschema (>=2.5.1)", "check-manifest (>=0.25)", "coverage (>=4.0)", "isort (>=4.2.2)", "mock (>=1.3.0)", "pydocstyle (>=1.0.0)", "pytest-cache (>=1.0)", "pytest-cov (>=2.8.1)", "pytest-pep8 (>=1.0.6)", "pytest (>=3.6.0)", "requests (>=2.7.0)"]
+docs = ["Sphinx (>=1.5.1)"]
jsonref = ["jsonref (>=0.1)"]
jsonschema = ["jsonschema (>=2.5.1)"]
-tests = ["check-manifest (>=0.25)", "coverage (>=4.0)", "isort (>=4.2.2)", "mock (>=1.3.0)", "pydocstyle (>=1.0.0)", "pytest-cache (>=1.0)", "pytest-cov (>=1.8.0)", "pytest-pep8 (>=1.0.6)", "pytest (>=2.8.0)", "requests (>=2.7.0)"]
+tests = ["check-manifest (>=0.25)", "coverage (>=4.0)", "isort (>=4.2.2)", "mock (>=1.3.0)", "pydocstyle (>=1.0.0)", "pytest-cache (>=1.0)", "pytest-cov (>=2.8.1)", "pytest-pep8 (>=1.0.6)", "pytest (>=3.6.0)", "requests (>=2.7.0)"]
[[package]]
category = "main"
@@ -2144,14 +2089,6 @@ sqs = ["boto3 (>=1.4.4)", "pycurl (7.43.0.2)"]
yaml = ["PyYAML (>=3.10)"]
zookeeper = ["kazoo (>=1.3.1)"]
-[[package]]
-category = "dev"
-description = "A fast and thorough lazy object proxy."
-name = "lazy-object-proxy"
-optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
-version = "1.4.3"
-
[[package]]
category = "main"
description = "Rate limiting utilities"
@@ -2260,14 +2197,6 @@ version = "2018.703"
[package.dependencies]
maxminddb = "*"
-[[package]]
-category = "dev"
-description = "McCabe checker, plugin for flake8"
-name = "mccabe"
-optional = false
-python-versions = "*"
-version = "0.6.1"
-
[[package]]
category = "dev"
description = "Rolling backport of unittest.mock for all Pythons"
@@ -2281,14 +2210,6 @@ build = ["twine", "wheel", "blurb"]
docs = ["sphinx"]
test = ["pytest (<5.4)", "pytest-cov"]
-[[package]]
-category = "dev"
-description = "More routines for operating on iterables, beyond itertools"
-name = "more-itertools"
-optional = false
-python-versions = ">=3.5"
-version = "8.6.0"
-
[[package]]
category = "main"
description = "MessagePack (de)serializer."
@@ -2341,12 +2262,11 @@ category = "main"
description = "A Python Parser"
name = "parso"
optional = false
-python-versions = ">=3.6"
-version = "0.8.1"
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+version = "0.7.1"
[package.extras]
-qa = ["flake8 (3.8.3)", "mypy (0.782)"]
-testing = ["docopt", "pytest (<6.0.0)"]
+testing = ["docopt", "pytest (>=3.0.7)"]
[[package]]
category = "main"
@@ -2363,7 +2283,7 @@ build_docs = ["sphinx (>=1.6)", "sphinxcontrib-fulltoc (>=1.2.0)", "cloud-spthem
totp = ["cryptography"]
[[package]]
-category = "dev"
+category = "main"
description = "Wrappers to build Python packages using PEP 517 hooks"
name = "pep517"
optional = false
@@ -2381,14 +2301,6 @@ version = "*"
python = "<3.8"
version = "*"
-[[package]]
-category = "dev"
-description = "Python style guide checker"
-name = "pep8"
-optional = false
-python-versions = "*"
-version = "1.7.1"
-
[[package]]
category = "main"
description = "Pexpect allows easy control of interactive console applications."
@@ -2480,6 +2392,14 @@ optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
version = "1.10.0"
+[[package]]
+category = "main"
+description = "Python style guide checker"
+name = "pycodestyle"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+version = "2.6.0"
+
[[package]]
category = "main"
description = "ISO country, subdivision, language, currency and script definitions and their translations"
@@ -2497,7 +2417,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
version = "2.20"
[[package]]
-category = "dev"
+category = "main"
description = "Python docstring style checker"
name = "pydocstyle"
optional = false
@@ -2537,21 +2457,6 @@ dev = ["sphinx", "sphinx-rtd-theme", "zope.interface", "cryptography (>=3.3.1,<4
docs = ["sphinx", "sphinx-rtd-theme", "zope.interface"]
tests = ["pytest (>=6.0.0,<7.0.0)", "coverage (5.0.4)"]
-[[package]]
-category = "dev"
-description = "python code static checker"
-name = "pylint"
-optional = false
-python-versions = ">=3.5.*"
-version = "2.6.0"
-
-[package.dependencies]
-astroid = ">=2.4.0,<=2.5"
-colorama = "*"
-isort = ">=4.2.5,<6"
-mccabe = ">=0.6,<0.7"
-toml = ">=0.7.1"
-
[[package]]
category = "main"
description = "Python interface to your NPM and package.json."
@@ -2582,56 +2487,32 @@ python-versions = ">=3.5"
version = "0.17.3"
[[package]]
-category = "dev"
+category = "main"
description = "pytest: simple powerful testing with Python"
name = "pytest"
optional = false
-python-versions = ">=3.5"
-version = "5.3.5"
+python-versions = ">=3.6"
+version = "6.2.1"
[package.dependencies]
atomicwrites = ">=1.0"
-attrs = ">=17.4.0"
+attrs = ">=19.2.0"
colorama = "*"
-more-itertools = ">=4.0.0"
+iniconfig = "*"
packaging = "*"
-pluggy = ">=0.12,<1.0"
-py = ">=1.5.0"
-wcwidth = "*"
+pluggy = ">=0.12,<1.0.0a1"
+py = ">=1.8.2"
+toml = "*"
[package.dependencies.importlib-metadata]
python = "<3.8"
version = ">=0.12"
[package.extras]
-checkqa-mypy = ["mypy (v0.761)"]
testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"]
-[[package]]
-category = "dev"
-description = "pytest plugin with mechanisms for caching across test runs"
-name = "pytest-cache"
-optional = false
-python-versions = "*"
-version = "1.0"
-
-[package.dependencies]
-execnet = ">=1.1.dev1"
-pytest = ">=2.2"
-
[[package]]
category = "main"
-description = "pytest-celery a shim pytest plugin to enable celery.contrib.pytest"
-name = "pytest-celery"
-optional = false
-python-versions = "*"
-version = "0.0.0a1"
-
-[package.dependencies]
-celery = ">=4.4.0"
-
-[[package]]
-category = "dev"
description = "Pytest plugin for measuring coverage."
name = "pytest-cov"
optional = false
@@ -2646,91 +2527,89 @@ pytest = ">=4.6"
testing = ["fields", "hunter", "process-tests (2.0.2)", "six", "pytest-xdist", "virtualenv"]
[[package]]
-category = "dev"
+category = "main"
description = "A set of py.test fixtures to test Flask applications."
name = "pytest-flask"
optional = false
-python-versions = "*"
-version = "0.15.1"
+python-versions = ">=3.5"
+version = "1.1.0"
[package.dependencies]
Flask = "*"
Werkzeug = ">=0.7"
-pytest = [">=3.6", "*"]
+pytest = ">=5.2"
[package.extras]
docs = ["sphinx", "sphinx-rtd-theme"]
[[package]]
-category = "dev"
+category = "main"
description = "Pytest fixtures for Invenio."
name = "pytest-invenio"
optional = false
python-versions = "*"
-version = "1.2.2"
+version = "1.4.1"
[package.dependencies]
-Flask = ">=1.0.4,<1.1.0"
-pytest = ">=3.8.1"
-pytest-cov = ">=2.5.1"
-pytest-flask = ">=0.10.0,<1.0.0"
+check-manifest = ">=0.42"
+coverage = ">=5.3,<6"
+docker-services-cli = ">=0.3.0"
+pytest = ">=6,<7"
+pytest-cov = ">=2.10.1"
+pytest-flask = ">=1.0.0"
+pytest-isort = ">=1.2.0"
+pytest-pycodestyle = ">=2.2.0"
+pytest-pydocstyle = ">=2.2.0"
selenium = ">=3.7.0"
-werkzeug = ">=0.14.1,<1.0.0"
[package.extras]
-all = ["Sphinx (>=1.8.0)", "check-manifest (>=0.25)", "coverage (>=4.1)", "elasticsearch-dsl (>=5.0.0,<6.0.0)", "elasticsearch (>=5.0.0,<6.0.0)", "flask-celeryext (>=0.3.1)", "invenio-db (>=1.0.0,<1.1.0)", "invenio-files-rest (>=1.0.0)", "invenio-mail (>=1.0.0,<1.1.0)", "invenio-search (>=1.2.3,<1.3.0)", "invenio-rest (>=1.1.2,<1.2.0)", "isort (>=4.3)", "pydocstyle (>=2.0.0)", "pytest-pep8 (>=1.0.6)", "six (>=1.12.0)", "urllib3 (>=1.23)"]
-docs = ["Sphinx (>=1.8.0)"]
-tests = ["check-manifest (>=0.25)", "coverage (>=4.1)", "elasticsearch-dsl (>=5.0.0,<6.0.0)", "elasticsearch (>=5.0.0,<6.0.0)", "flask-celeryext (>=0.3.1)", "invenio-db (>=1.0.0,<1.1.0)", "invenio-files-rest (>=1.0.0)", "invenio-mail (>=1.0.0,<1.1.0)", "invenio-search (>=1.2.3,<1.3.0)", "invenio-rest (>=1.1.2,<1.2.0)", "isort (>=4.3)", "pydocstyle (>=2.0.0)", "pytest-pep8 (>=1.0.6)", "six (>=1.12.0)", "urllib3 (>=1.23)"]
+all = ["Sphinx (>=3)", "elasticsearch-dsl (>=6.0.0,<7.0.0)", "elasticsearch (>=6.0.0,<7.0.0)", "invenio-celery (>=1.2.0)", "invenio-db (>=1.0.4,<1.1.0)", "invenio-files-rest (>=1.1.1)", "invenio-mail (>=1.0.0,<1.1.0)", "invenio-search (>=1.2.3,<1.3.0)", "six (>=1.12.0)", "urllib3 (>=1.21.1,<1.23)"]
+docs = ["Sphinx (>=3)"]
+tests = ["elasticsearch-dsl (>=6.0.0,<7.0.0)", "elasticsearch (>=6.0.0,<7.0.0)", "invenio-celery (>=1.2.0)", "invenio-db (>=1.0.4,<1.1.0)", "invenio-files-rest (>=1.1.1)", "invenio-mail (>=1.0.0,<1.1.0)", "invenio-search (>=1.2.3,<1.3.0)", "six (>=1.12.0)", "urllib3 (>=1.21.1,<1.23)"]
[[package]]
-category = "dev"
-description = "Thin-wrapper around the mock package for easier use with pytest"
-name = "pytest-mock"
+category = "main"
+description = "py.test plugin to check import ordering using isort"
+name = "pytest-isort"
optional = false
-python-versions = ">=3.5"
-version = "3.5.0"
+python-versions = "*"
+version = "1.2.0"
[package.dependencies]
-pytest = ">=5.0"
+isort = ">=4.0"
[package.extras]
-dev = ["pre-commit", "tox", "pytest-asyncio"]
+tests = ["mock"]
[[package]]
-category = "dev"
-description = "pytest plugin to check PEP8 requirements"
-name = "pytest-pep8"
+category = "main"
+description = "pytest plugin to run pycodestyle"
+name = "pytest-pycodestyle"
optional = false
-python-versions = "*"
-version = "1.0.6"
+python-versions = "~=3.6"
+version = "2.2.0"
[package.dependencies]
-pep8 = ">=1.3"
-pytest = ">=2.4.2"
-pytest-cache = "*"
+pycodestyle = "*"
+pytest = ">=5.4"
+
+[package.extras]
+tests = ["pytest-isort"]
[[package]]
-category = "dev"
-description = "Randomise the order in which pytest tests are run with some control over the randomness"
-name = "pytest-random-order"
+category = "main"
+description = "pytest plugin to run pydocstyle"
+name = "pytest-pydocstyle"
optional = false
-python-versions = ">=3.5.0"
-version = "1.0.4"
+python-versions = "~=3.6"
+version = "2.2.0"
[package.dependencies]
-pytest = ">=3.0.0"
-
-[[package]]
-category = "dev"
-description = "Invoke py.test as distutils command with dependency resolution"
-name = "pytest-runner"
-optional = false
-python-versions = ">=2.7,!=3.0,!=3.1"
-version = "4.5.1"
+pydocstyle = "*"
+pytest = ">=5.4"
[package.extras]
-docs = ["sphinx", "jaraco.packaging (>=3.2)", "rst.linker (>=1.9)"]
-testing = ["pytest (>=2.8)", "pytest-sugar (>=0.9.1)", "collective.checkdocs", "pytest-flake8", "pytest-virtualenv"]
+tests = ["pytest-pycodestyle (>=2.1,<3.0)", "pytest-isort"]
[[package]]
category = "main"
@@ -2892,7 +2771,7 @@ requests = "*"
setuptools = "*"
[[package]]
-category = "dev"
+category = "main"
description = "Python bindings for Selenium"
name = "selenium"
optional = false
@@ -2975,7 +2854,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
version = "1.15.0"
[[package]]
-category = "dev"
+category = "main"
description = "This package provides 26 stemmers for 25 languages generated from Snowball algorithms."
name = "snowballstemmer"
optional = false
@@ -2991,12 +2870,12 @@ python-versions = "*"
version = "1.3"
[[package]]
-category = "dev"
+category = "main"
description = "Python documentation generator"
name = "sphinx"
optional = false
python-versions = ">=3.5"
-version = "3.3.1"
+version = "3.4.1"
[package.dependencies]
Jinja2 = ">=2.3"
@@ -3019,11 +2898,11 @@ sphinxcontrib-serializinghtml = "*"
[package.extras]
docs = ["sphinxcontrib-websupport"]
-lint = ["flake8 (>=3.5.0)", "flake8-import-order", "mypy (>=0.790)", "docutils-stubs"]
-test = ["pytest", "pytest-cov", "html5lib", "typed-ast", "cython"]
+lint = ["flake8 (>=3.5.0)", "isort", "mypy (>=0.790)", "docutils-stubs"]
+test = ["pytest", "pytest-cov", "html5lib", "cython", "typed-ast"]
[[package]]
-category = "dev"
+category = "main"
description = "sphinxcontrib-applehelp is a sphinx extension which outputs Apple help books"
name = "sphinxcontrib-applehelp"
optional = false
@@ -3035,7 +2914,7 @@ lint = ["flake8", "mypy", "docutils-stubs"]
test = ["pytest"]
[[package]]
-category = "dev"
+category = "main"
description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp document."
name = "sphinxcontrib-devhelp"
optional = false
@@ -3047,7 +2926,7 @@ lint = ["flake8", "mypy", "docutils-stubs"]
test = ["pytest"]
[[package]]
-category = "dev"
+category = "main"
description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files"
name = "sphinxcontrib-htmlhelp"
optional = false
@@ -3059,7 +2938,7 @@ lint = ["flake8", "mypy", "docutils-stubs"]
test = ["pytest", "html5lib"]
[[package]]
-category = "dev"
+category = "main"
description = "A sphinx extension which renders display math in HTML via JavaScript"
name = "sphinxcontrib-jsmath"
optional = false
@@ -3070,7 +2949,7 @@ version = "1.0.1"
test = ["pytest", "flake8", "mypy"]
[[package]]
-category = "dev"
+category = "main"
description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp document."
name = "sphinxcontrib-qthelp"
optional = false
@@ -3082,7 +2961,7 @@ lint = ["flake8", "mypy", "docutils-stubs"]
test = ["pytest"]
[[package]]
-category = "dev"
+category = "main"
description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)."
name = "sphinxcontrib-serializinghtml"
optional = false
@@ -3163,7 +3042,7 @@ timezone = ["python-dateutil"]
url = ["furl (>=0.4.1)"]
[[package]]
-category = "dev"
+category = "main"
description = "Python Library for Tom's Obvious, Minimal Language"
name = "toml"
optional = false
@@ -3200,19 +3079,10 @@ ipython-genutils = "*"
[package.extras]
test = ["pytest"]
-[[package]]
-category = "dev"
-description = "a fork of Python 2 and 3 ast modules with type comment support"
-marker = "implementation_name == \"cpython\" and python_version < \"3.8\""
-name = "typed-ast"
-optional = false
-python-versions = "*"
-version = "1.4.2"
-
[[package]]
category = "main"
description = "Backported and Experimental Type Hints for Python 3.5+"
-marker = "python_version < \"3.8\" or python_version >= \"3.7\" and python_version < \"3.8\" or python_version >= \"3.7\" and python_version < \"3.8\" and (python_version < \"3.8\" or python_version >= \"3.7\" and python_version < \"3.8\")"
+marker = "python_version < \"3.8\" or python_version >= \"3.7\" and python_version < \"3.8\""
name = "typing-extensions"
optional = false
python-versions = "*"
@@ -3332,14 +3202,6 @@ frameworks = ["Flask (>=0.12.2)", "Django (>=1.11.16)", "bottle (>=0.12.13)", "t
lint = ["flake8 (3.7.8)", "pre-commit (>=1.17,<2.0)", "mypy (0.730)", "flake8-bugbear (19.8.0)"]
tests = ["pytest", "mock", "webtest (2.0.33)", "Flask (>=0.12.2)", "Django (>=1.11.16)", "bottle (>=0.12.13)", "tornado (>=4.5.2)", "pyramid (>=1.9.1)", "webapp2 (>=3.0.0b1)", "falcon (>=1.4.0,<2.0)", "webtest-aiohttp (2.0.0)", "pytest-aiohttp (>=0.3.0)", "aiohttp (>=3.0.0)"]
-[[package]]
-category = "main"
-description = "Media asset management for Python, with glue code for various web frameworks"
-name = "webassets"
-optional = false
-python-versions = "*"
-version = "2.0"
-
[[package]]
category = "main"
description = "Character encoding aliases for legacy web content"
@@ -3353,22 +3215,13 @@ category = "main"
description = "The comprehensive WSGI web application library."
name = "werkzeug"
optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
-version = "0.16.1"
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+version = "1.0.1"
[package.extras]
-dev = ["pytest", "coverage", "tox", "sphinx", "pallets-sphinx-themes", "sphinx-issues"]
-termcolor = ["termcolor"]
+dev = ["pytest", "pytest-timeout", "coverage", "tox", "sphinx", "pallets-sphinx-themes", "sphinx-issues"]
watchdog = ["watchdog"]
-[[package]]
-category = "dev"
-description = "Module for decorators, wrappers and monkey patching."
-name = "wrapt"
-optional = false
-python-versions = "*"
-version = "1.12.1"
-
[[package]]
category = "main"
description = "A flexible forms validation and rendering library for Python web development."
@@ -3442,7 +3295,7 @@ version = "0.12.0"
[[package]]
category = "main"
description = "Backport of pathlib-compatible object wrapper for zip files"
-marker = "python_version < \"3.8\" or python_version >= \"3.7\" and python_version < \"3.8\" or python_version >= \"3.7\" and python_version < \"3.8\" and (python_version < \"3.8\" or python_version >= \"3.7\" and python_version < \"3.8\")"
+marker = "python_version < \"3.8\" or python_version >= \"3.7\" and python_version < \"3.8\""
name = "zipp"
optional = false
python-versions = ">=3.6"
@@ -3456,8 +3309,8 @@ testing = ["pytest (>=3.5,<3.7.3 || >3.7.3)", "pytest-checkdocs (>=1.2.3)", "pyt
sip2 = ["invenio-sip2"]
[metadata]
-content-hash = "bdcec6d3e82ba56e79dffb0c8fd8c93449882c0a60a44765cbc0e58b0525d422"
-python-versions = ">= 3.6, < 3.8"
+content-hash = "245aa5031cd30fb016ce38898fad6b8f845607bb7ac43af26236bcddf2dcc2a4"
+python-versions = ">= 3.6, <3.8"
[metadata.files]
alabaster = [
@@ -3472,10 +3325,6 @@ amqp = [
{file = "amqp-5.0.2-py3-none-any.whl", hash = "sha256:5b9062d5c0812335c75434bf17ce33d7a20ecfedaa0733faec7379868eb4068a"},
{file = "amqp-5.0.2.tar.gz", hash = "sha256:fcd5b3baeeb7fc19b3486ff6d10543099d40ae1f5c9196eae695d1cde1b2f784"},
]
-apipkg = [
- {file = "apipkg-1.5-py2.py3-none-any.whl", hash = "sha256:58587dd4dc3daefad0487f6d9ae32b4542b185e1c36db6993290e7c41ca2b47c"},
- {file = "apipkg-1.5.tar.gz", hash = "sha256:37228cda29411948b422fae072f57e31d3396d2ee1c9783775980ee9c9990af6"},
-]
appnope = [
{file = "appnope-0.1.2-py2.py3-none-any.whl", hash = "sha256:93aa393e9d6c54c5cd570ccadd8edad61ea0c4b9ea7a01409020c9aa019eb442"},
{file = "appnope-0.1.2.tar.gz", hash = "sha256:dd83cd4b5b460958838f6eb3000c660b1f9caf2a5b1de4264e941512f603258a"},
@@ -3484,10 +3333,6 @@ arrow = [
{file = "arrow-0.17.0-py2.py3-none-any.whl", hash = "sha256:e098abbd9af3665aea81bdd6c869e93af4feb078e98468dd351c383af187aac5"},
{file = "arrow-0.17.0.tar.gz", hash = "sha256:ff08d10cda1d36c68657d6ad20d74fbea493d980f8b2d45344e00d6ed2bf6ed4"},
]
-astroid = [
- {file = "astroid-2.4.2-py3-none-any.whl", hash = "sha256:bc58d83eb610252fd8de6363e39d4f1d0619c894b0ed24603b881c02e64c7386"},
- {file = "astroid-2.4.2.tar.gz", hash = "sha256:2f4078c2a41bf377eea06d71c9d2ba4eb8f6b1af2135bec27bbbb7d8f12bb703"},
-]
atomicwrites = [
{file = "atomicwrites-1.4.0-py2.py3-none-any.whl", hash = "sha256:6d1784dea7c0c8d4a5172b6c620f40b6e4cbfdf96d783691f2e1302a7b88e197"},
{file = "atomicwrites-1.4.0.tar.gz", hash = "sha256:ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"},
@@ -3564,13 +3409,11 @@ cffi = [
{file = "cffi-1.14.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a7711edca4dcef1a75257b50a2fbfe92a65187c47dab5a0f1b9b332c5919a3fb"},
{file = "cffi-1.14.4-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:00e28066507bfc3fe865a31f325c8391a1ac2916219340f87dfad602c3e48e5d"},
{file = "cffi-1.14.4-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:798caa2a2384b1cbe8a2a139d80734c9db54f9cc155c99d7cc92441a23871c03"},
- {file = "cffi-1.14.4-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:a5ed8c05548b54b998b9498753fb9cadbfd92ee88e884641377d8a8b291bcc01"},
{file = "cffi-1.14.4-cp37-cp37m-win32.whl", hash = "sha256:00a1ba5e2e95684448de9b89888ccd02c98d512064b4cb987d48f4b40aa0421e"},
{file = "cffi-1.14.4-cp37-cp37m-win_amd64.whl", hash = "sha256:9cc46bc107224ff5b6d04369e7c595acb700c3613ad7bcf2e2012f62ece80c35"},
{file = "cffi-1.14.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:df5169c4396adc04f9b0a05f13c074df878b6052430e03f50e68adf3a57aa28d"},
{file = "cffi-1.14.4-cp38-cp38-manylinux1_i686.whl", hash = "sha256:9ffb888f19d54a4d4dfd4b3f29bc2c16aa4972f1c2ab9c4ab09b8ab8685b9c2b"},
{file = "cffi-1.14.4-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:8d6603078baf4e11edc4168a514c5ce5b3ba6e3e9c374298cb88437957960a53"},
- {file = "cffi-1.14.4-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:d5ff0621c88ce83a28a10d2ce719b2ee85635e85c515f12bac99a95306da4b2e"},
{file = "cffi-1.14.4-cp38-cp38-win32.whl", hash = "sha256:b4e248d1087abf9f4c10f3c398896c87ce82a9856494a7155823eb45a892395d"},
{file = "cffi-1.14.4-cp38-cp38-win_amd64.whl", hash = "sha256:ec80dc47f54e6e9a78181ce05feb71a0353854cc26999db963695f950b5fb375"},
{file = "cffi-1.14.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:840793c68105fe031f34d6a086eaea153a0cd5c491cde82a74b420edd0a2b909"},
@@ -3608,7 +3451,6 @@ click-repl = [
]
colorama = [
{file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"},
- {file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"},
]
coverage = [
{file = "coverage-5.3.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:fabeeb121735d47d8eab8671b6b031ce08514c86b7ad8f7d5490a7b6dcd6267d"},
@@ -3689,6 +3531,10 @@ dnspython = [
{file = "dnspython-2.0.0-py3-none-any.whl", hash = "sha256:40bb3c24b9d4ec12500f0124288a65df232a3aa749bb0c39734b782873a2544d"},
{file = "dnspython-2.0.0.zip", hash = "sha256:044af09374469c3a39eeea1a146e8cac27daec951f1f1f157b1962fc7cb9d1b7"},
]
+docker-services-cli = [
+ {file = "Docker-Services-CLI-0.3.0.tar.gz", hash = "sha256:61e7ee909854c182290ec6806138044f09e39babc60cd9f3573b5ce6fb0d93f2"},
+ {file = "Docker_Services_CLI-0.3.0-py2.py3-none-any.whl", hash = "sha256:3f11e0b9f9734829ca448399c5a4820fe8ff765e851bab5f0957116440b898fe"},
+]
docutils = [
{file = "docutils-0.16-py2.py3-none-any.whl", hash = "sha256:0c5b78adfbf7762415433f5515cd5c9e762339e23369dbe8000d84a4bf4ab3af"},
{file = "docutils-0.16.tar.gz", hash = "sha256:c2de3a60e9e7d07be26b7f2b00ca0309c207e06c100f9cc2a94931fc75a478fc"},
@@ -3713,13 +3559,9 @@ email-validator = [
{file = "email-validator-1.1.2.tar.gz", hash = "sha256:1a13bd6050d1db4475f13e444e169b6fe872434922d38968c67cea9568cce2f0"},
{file = "email_validator-1.1.2-py2.py3-none-any.whl", hash = "sha256:094b1d1c60d790649989d38d34f69e1ef07792366277a2cf88684d03495d018f"},
]
-execnet = [
- {file = "execnet-1.7.1-py2.py3-none-any.whl", hash = "sha256:d4efd397930c46415f62f8a31388d6be4f27a91d7550eb79bc64a756e0056547"},
- {file = "execnet-1.7.1.tar.gz", hash = "sha256:cacb9df31c9680ec5f95553976c4da484d407e85e41c83cb812aa014f0eddc50"},
-]
flask = [
- {file = "Flask-1.0.4-py2.py3-none-any.whl", hash = "sha256:1a21ccca71cee5e55b6a367cc48c6eb47e3c447f76e64d41f3f3f931c17e7c96"},
- {file = "Flask-1.0.4.tar.gz", hash = "sha256:ed1330220a321138de53ec7c534c3d90cf2f7af938c7880fc3da13aa46bf870f"},
+ {file = "Flask-1.1.2-py2.py3-none-any.whl", hash = "sha256:8a4fdd8936eba2512e9c85df320a37e694c93945b33ef33c89946a340a238557"},
+ {file = "Flask-1.1.2.tar.gz", hash = "sha256:4efa1ae2d7c9865af48986de8aeb8504bf32c7f3d6fdc9353d34b21f4b127060"},
]
flask-admin = [
{file = "Flask-Admin-1.5.7.tar.gz", hash = "sha256:145f59407d78319925e20f7c3021f60c71f0cacc98e916e52000845dc4c63621"},
@@ -3728,10 +3570,6 @@ flask-alembic = [
{file = "Flask-Alembic-2.0.1.tar.gz", hash = "sha256:05a1e6f4148dbfcc9280a393373bfbd250af6f9f4f0ca9f744ef8f7376a3deec"},
{file = "Flask_Alembic-2.0.1-py2.py3-none-any.whl", hash = "sha256:7e67740b0b08d58dcae0c701d56b56e60f5fa4af907bb82b4cb0469229ba94ff"},
]
-flask-assets = [
- {file = "Flask-Assets-2.0.tar.gz", hash = "sha256:1dfdea35e40744d46aada72831f7613d67bf38e8b20ccaaa9e91fdc37aa3b8c2"},
- {file = "Flask_Assets-2.0-py3-none-any.whl", hash = "sha256:2845bd3b479be9db8556801e7ebc2746ce2d9edb4e7b64a1c786ecbfc1e5867b"},
-]
flask-babel = [
{file = "Flask-Babel-2.0.0.tar.gz", hash = "sha256:f9faf45cdb2e1a32ea2ec14403587d4295108f35017a7821a2b1acb8cfd9257d"},
{file = "Flask_Babel-2.0.0-py3-none-any.whl", hash = "sha256:e6820a052a8d344e178cdd36dd4bb8aea09b4bda3d5f9fa9f008df2c7f2f5468"},
@@ -3757,8 +3595,8 @@ flask-collect = [
{file = "Flask_Collect-1.2.2-py2.py3-none-any.whl", hash = "sha256:3274f651b532e93549d37c21c5630fa98e4b9eccf49573f8d920b1225716a12b"},
]
flask-cors = [
- {file = "Flask-Cors-3.0.9.tar.gz", hash = "sha256:6bcfc100288c5d1bcb1dbb854babd59beee622ffd321e444b05f24d6d58466b8"},
- {file = "Flask_Cors-3.0.9-py2.py3-none-any.whl", hash = "sha256:cee4480aaee421ed029eaa788f4049e3e26d15b5affb6a880dade6bafad38324"},
+ {file = "Flask-Cors-3.0.10.tar.gz", hash = "sha256:b60839393f3b84a0f3746f6cdca56c1ad7426aa738b70d6c61375857823181de"},
+ {file = "Flask_Cors-3.0.10-py2.py3-none-any.whl", hash = "sha256:74efc975af1194fc7891ff5cd85b0f7478be4f7f59fe158102e91abb72bb4438"},
]
flask-debugtoolbar = [
{file = "Flask-DebugToolbar-0.11.0.tar.gz", hash = "sha256:3c4e79d354ede014e6657c545a536d4fb273cc89e3fd6b4835b02e346dd3aab4"},
@@ -3815,15 +3653,11 @@ flask-wtf = [
{file = "Flask_WTF-0.14.3-py2.py3-none-any.whl", hash = "sha256:57b3faf6fe5d6168bda0c36b0df1d05770f8e205e18332d0376ddb954d17aef2"},
]
ftfy = [
- {file = "ftfy-4.4.3.tar.gz", hash = "sha256:3c0066db64a98436e751e56414f03f1cdea54f29364c0632c141c36cca6a5d94"},
+ {file = "ftfy-5.8.tar.gz", hash = "sha256:51c7767f8c4b47d291fcef30b9625fb5341c06a31e6a3b627039c706c42f3720"},
]
future = [
{file = "future-0.18.2.tar.gz", hash = "sha256:b1bead90b70cf6ec3f0710ae53a525360fa360d306a86583adc6bf83a4db537d"},
]
-html5lib = [
- {file = "html5lib-1.1-py2.py3-none-any.whl", hash = "sha256:0d78f8fde1c230e99fe37986a60526d7049ed4bf8a9fadbad5f00e22e58e041d"},
- {file = "html5lib-1.1.tar.gz", hash = "sha256:b2e5b40261e20f354d198eae92afc10d750afb487ed5e50f9c4eaf07c184146f"},
-]
idna = [
{file = "idna-2.10-py2.py3-none-any.whl", hash = "sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0"},
{file = "idna-2.10.tar.gz", hash = "sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6"},
@@ -3839,33 +3673,37 @@ importlib-metadata = [
infinity = [
{file = "infinity-1.5.tar.gz", hash = "sha256:8daa7c15ce2100fdccfde212337e0cd5cf085869f54dc2634b6c30d61461ecda"},
]
+iniconfig = [
+ {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"},
+ {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"},
+]
intervals = [
{file = "intervals-0.9.1-py3-none-any.whl", hash = "sha256:c700909be7280b2d780294319a51b296c9557931f7eeb32141cf720ede2db177"},
{file = "intervals-0.9.1.tar.gz", hash = "sha256:055bd20378e2728e2e1752dfc4c05d1647814c22cab390a3aaa3cd29bcd61138"},
]
invenio = [
- {file = "invenio-3.3.0-py2.py3-none-any.whl", hash = "sha256:b1c9d00f4b8bc182ea320563a41ed3069c5a15e427df642c7775ddd5ad082d6f"},
- {file = "invenio-3.3.0.tar.gz", hash = "sha256:155d5f05ea01f6dd063028ac8577568a7001f06d400360c9cc3725d5ff6b6d46"},
+ {file = "invenio-3.4.0-py2.py3-none-any.whl", hash = "sha256:6e2dd22f126ffd1971d81e51ae91f02b65b954d64c15e37155bb4ba69e2d6582"},
+ {file = "invenio-3.4.0.tar.gz", hash = "sha256:8071d32ead29fb11eef28aef9ea84685359d3616389521955ab95ec9b0c6d1ff"},
]
invenio-access = [
{file = "invenio-access-1.4.1.tar.gz", hash = "sha256:ff0f88a59e245bdf3c3b1f9afd8a5f46a0aa7fcc3dcc0fbcccd8f57d43129ea0"},
{file = "invenio_access-1.4.1-py2.py3-none-any.whl", hash = "sha256:d56e87dda66d461e922130640010597b1d42c4357b9a652f358a6cc895cbd7c5"},
]
invenio-accounts = [
- {file = "invenio-accounts-1.3.1.tar.gz", hash = "sha256:2ed58e666cba8bf49e8626e4be17e33ed8f4036ee1759bb95fd0fd085e9c060a"},
- {file = "invenio_accounts-1.3.1-py2.py3-none-any.whl", hash = "sha256:6c1a032b9406758c2a3e2c40bb3c46e19f0e217121ad00d3c237269f9d44d5b2"},
+ {file = "invenio-accounts-1.4.3.tar.gz", hash = "sha256:2e9ab28e42778ee35053a19069e271a3dd6eec79563d32ea8411844b32d83016"},
+ {file = "invenio_accounts-1.4.3-py2.py3-none-any.whl", hash = "sha256:206bf071eb8a84db0105332a097ab05b226d2ba453240be349852a455a7c2a10"},
]
invenio-admin = [
- {file = "invenio-admin-1.2.1.tar.gz", hash = "sha256:2bbe810fcdcf0bb180fa75a2a95ffc74681f8d697767b1f2169c413f5bf04999"},
- {file = "invenio_admin-1.2.1-py2.py3-none-any.whl", hash = "sha256:c30e6f81d0f3f264f6d14036cdaf24eef12c3b85f160c957e67c8f53051f56fa"},
+ {file = "invenio-admin-1.3.0.tar.gz", hash = "sha256:59aa4cc7e41744eb5c55d37f24e7f8cc5cd4ab368f21b2a6fe4cb90a6a016f05"},
+ {file = "invenio_admin-1.3.0-py2.py3-none-any.whl", hash = "sha256:554f6acaec3a544f97a074a2a591b5ee28b45961e0434d7cca3c521c1f244e4c"},
]
invenio-app = [
- {file = "invenio-app-1.2.7.tar.gz", hash = "sha256:553f5c0c15641826c04b0b00c24013ca5a2492efb346bc1d738c76a48a8c9e28"},
- {file = "invenio_app-1.2.7-py2.py3-none-any.whl", hash = "sha256:c3eda6572cb6189d289d32e45c1a1cbdec27ee348cbf26817b4972f8ee087aaf"},
+ {file = "invenio-app-1.3.1.tar.gz", hash = "sha256:fe8da9f8a5868d3076f65c1f1524c3238236d4af9755eb4be1dd24dc14490c8a"},
+ {file = "invenio_app-1.3.1-py2.py3-none-any.whl", hash = "sha256:854c0627428a0cd53c96e120e9386eab8e41f24d05c5738ae3761388c486cca0"},
]
invenio-assets = [
- {file = "invenio-assets-1.1.5.tar.gz", hash = "sha256:972ef7680a4760b2fbfb1c779724cd90a59c9f934a4b02c23fc7315b89c8e5b4"},
- {file = "invenio_assets-1.1.5-py2.py3-none-any.whl", hash = "sha256:38b228b871d073c71f9b6c7c98dbf89178a2fe2903119cd20267ab1ab4f1cb4e"},
+ {file = "invenio-assets-1.2.5.tar.gz", hash = "sha256:a8deaea5c3528c403d1a5f597d9da3c2abbc7155315e84d5ae3fffb67004c129"},
+ {file = "invenio_assets-1.2.5-py2.py3-none-any.whl", hash = "sha256:a990b0d904edf871dce80678bb0bad681fe68cdc10ce199740c533f65d9072f3"},
]
invenio-base = [
{file = "invenio-base-1.2.3.tar.gz", hash = "sha256:cfbdd569a07ef8e3bdcbbd7aa7a1d0234c2cbc487b11391a954659409a2e05ad"},
@@ -3876,8 +3714,8 @@ invenio-cache = [
{file = "invenio_cache-1.1.0-py2.py3-none-any.whl", hash = "sha256:a4562639f2f63cbc9de1302e159ecd9363f17d53d912a8d0773ffe76e2f153fc"},
]
invenio-celery = [
- {file = "invenio-celery-1.2.1.tar.gz", hash = "sha256:c524cb3a6b93c571cbfe35095cbafcf7f33417334cfec8057d662f2f58a6cb5b"},
- {file = "invenio_celery-1.2.1-py2.py3-none-any.whl", hash = "sha256:1aecf48091358fa201c158e861bc7a95153ef437e5c48b9aef9d1f673e490590"},
+ {file = "invenio-celery-1.2.2.tar.gz", hash = "sha256:ac74076f0656a299ad741d6ec2752f7b06bf3b45d742179952267058c868d93d"},
+ {file = "invenio_celery-1.2.2-py2.py3-none-any.whl", hash = "sha256:f03d9d0bb0d5c3b2e1d53ded0dc8839e83d738d00913854de33cefbfa95c4d8d"},
]
invenio-circulation = []
invenio-config = [
@@ -3889,15 +3727,15 @@ invenio-db = [
{file = "invenio_db-1.0.8-py2.py3-none-any.whl", hash = "sha256:7103d2c0db03a9628356fa0d037c567c45104d27b7df20c566486c891738976d"},
]
invenio-formatter = [
- {file = "invenio-formatter-1.0.3.tar.gz", hash = "sha256:e0bde8cd4c99915bc358ea2450e98267a743620126cf8d28cebf547255db4fd7"},
- {file = "invenio_formatter-1.0.3-py2.py3-none-any.whl", hash = "sha256:730aa10f0d298805e3dd2d2f4b342a559cf736091a37ccd9b030f00f7cffec0a"},
+ {file = "invenio-formatter-1.1.0.tar.gz", hash = "sha256:fe127ae9549b579ac53aba38af48e721be0fb1d8f0a6708505af502aeb007f3b"},
+ {file = "invenio_formatter-1.1.0-py2.py3-none-any.whl", hash = "sha256:2967a9db4e83543908a5792294cf4cd44d4eff6bf60ab9fc389a107e5f835781"},
]
invenio-i18n = [
- {file = "invenio-i18n-1.2.0.tar.gz", hash = "sha256:a37a79600982f03804f30a87a5110595420bbe8e864f13dcdd6e4868d4ddd039"},
- {file = "invenio_i18n-1.2.0-py2.py3-none-any.whl", hash = "sha256:9bf5b1a47c4a4253f45176f0a4e74612645c63c72e233d779ae0e13da47f882f"},
+ {file = "invenio-i18n-1.3.0.tar.gz", hash = "sha256:631ad500aa49df91815dbe3f38a8bc27a7d25ce3fad821aa159c82f60b02738f"},
+ {file = "invenio_i18n-1.3.0-py2.py3-none-any.whl", hash = "sha256:22b40b9205ac531eb031bf82cb6c64f7b4b51c4cb2513b2a2cdd7b14b590eef9"},
]
invenio-indexer = [
- {file = "invenio-indexer-1.1.2.tar.gz", hash = "sha256:9f96a55c99761d8d9abea105fe66edd6e0ddac872444d7c9f596e5b153448e41"},
+ {file = "invenio-indexer-1.2.0.tar.gz", hash = "sha256:272cbd410ecaba3352026deede4d1c97eea6d885104030d7d399351abaa2f3be"},
]
invenio-jsonschemas = [
{file = "invenio-jsonschemas-1.1.1.tar.gz", hash = "sha256:6279917292ff9b1ec1686d770502571aee86d4fa109ff7daa54939ef4f494c2e"},
@@ -3917,24 +3755,24 @@ invenio-oaiserver = [
{file = "invenio_oaiserver-1.2.0-py2.py3-none-any.whl", hash = "sha256:4e219e61340a541ec4568ba8993532d37837a6356a8c9dbf20ee8c60bd3de297"},
]
invenio-oauth2server = [
- {file = "invenio-oauth2server-1.2.0.tar.gz", hash = "sha256:d18c0ad3dbbef214c4a52cab8b053bb4a6a33fd39abb348c8ecd4cf0dd683fc4"},
- {file = "invenio_oauth2server-1.2.0-py2.py3-none-any.whl", hash = "sha256:07b00c6018bdcf4749f30c56da9232289605f5edac0c3dab6b73ecb984bcbb6d"},
+ {file = "invenio-oauth2server-1.3.2.tar.gz", hash = "sha256:b15332cf2d0e32e5295f96db601d9786105e425bf00ce76e4923d29e04442a08"},
+ {file = "invenio_oauth2server-1.3.2-py2.py3-none-any.whl", hash = "sha256:a5e5f06daae57ee549f359476e96ff16375b3db0b1c911d4aa7bfd2bb62e3e0e"},
]
invenio-oauthclient = [
- {file = "invenio-oauthclient-1.3.5.tar.gz", hash = "sha256:196a7bae072a6a919d6669e1dbbf9506f3a9c70a382f404a13aef8160148a78a"},
- {file = "invenio_oauthclient-1.3.5-py2.py3-none-any.whl", hash = "sha256:d1db54ddbaf8ddd8440056957e89bff85e8d1c817e1a0c225fcededb55d8e5c7"},
+ {file = "invenio-oauthclient-1.4.1.tar.gz", hash = "sha256:edf9158abc9f37f7ece4d65e73c98bec4ac9ffea64bf908ec442c35d4bb1a5ac"},
+ {file = "invenio_oauthclient-1.4.1-py2.py3-none-any.whl", hash = "sha256:1194cecd04212dd7af38d18b4459f6d8b21cf97a7e492167fa611f37cb48bee5"},
]
invenio-pidstore = [
{file = "invenio-pidstore-1.2.1.tar.gz", hash = "sha256:2b81fd46694617f034746160c3d9c5870e7a6cf37f2e2a39ebe5008291c7d624"},
{file = "invenio_pidstore-1.2.1-py2.py3-none-any.whl", hash = "sha256:cdb912807aa92fe0885dd87444f02b44e8aa0f93134337098d03f451562acb86"},
]
invenio-records = [
- {file = "invenio-records-1.3.2.tar.gz", hash = "sha256:9cc95def65fdb46db21d935c0e29bb9296c749f17ac97c0962653ffa736b6414"},
- {file = "invenio_records-1.3.2-py2.py3-none-any.whl", hash = "sha256:8bc6a64446d23ea9e4b64fbf2069d0218d75a7313946ca1055a142ba0076b103"},
+ {file = "invenio-records-1.4.0.tar.gz", hash = "sha256:5387a398dae4271b2fe25008c30f4260aeb80c0f5cd57aa8a9fe6217d7df931d"},
+ {file = "invenio_records-1.4.0-py2.py3-none-any.whl", hash = "sha256:d068b54763cc071fec885d842365dd2c8e555a5b6f89cc0e12025d614e582279"},
]
invenio-records-rest = [
- {file = "invenio-records-rest-1.7.2.tar.gz", hash = "sha256:57f5f0ca9137bd63ecc1d9db9ebcc6b3b147ada03d17ec6e7b35d18ad0e4dfc7"},
- {file = "invenio_records_rest-1.7.2-py2.py3-none-any.whl", hash = "sha256:17e0ffc71a3468a8fcffeb0da37caa2d84e547508a7fedcf708bf9d1e5776786"},
+ {file = "invenio-records-rest-1.8.0.tar.gz", hash = "sha256:70ba741f19f8c9a1ae14a700d82c632175e881fd786ffdc4692f2718482e8dd1"},
+ {file = "invenio_records_rest-1.8.0-py2.py3-none-any.whl", hash = "sha256:67fb753131e00bd20aef9d1011d51bcb407d1a30ef2e4af8647bf3b92f2b999e"},
]
invenio-records-ui = [
{file = "invenio-records-ui-1.2.0.tar.gz", hash = "sha256:d465ed33645712f4c6144836ffca80f3773e7aec3ef596a9f95bafc14535335b"},
@@ -3945,13 +3783,13 @@ invenio-rest = [
{file = "invenio_rest-1.2.3-py2.py3-none-any.whl", hash = "sha256:bce36d4b09894942b7756855c8159854d6f1ce550fefa5d78bedc6998933678f"},
]
invenio-search = [
- {file = "invenio-search-1.3.1.tar.gz", hash = "sha256:37f222b6d6649df5fac5731225784d57f588c933843d14a8807e4e4ab3c5adc5"},
- {file = "invenio_search-1.3.1-py2.py3-none-any.whl", hash = "sha256:d2ef22975ef9b1fa3a27c152c42be1704a549f92588156e60583d700e75ad854"},
+ {file = "invenio-search-1.4.1.tar.gz", hash = "sha256:9b16593ea6d9bbcce40871c296b56e5dc8ab05ed0319a1e81ccc743291bc22d3"},
+ {file = "invenio_search-1.4.1-py2.py3-none-any.whl", hash = "sha256:2a9b1b37023ace49f1badb41a87eebbf11c6a419c51822ce3bfb6130d872c157"},
]
invenio-sip2 = []
invenio-theme = [
- {file = "invenio-theme-1.1.4.tar.gz", hash = "sha256:d642c08df6a8af099188a48043aedfe8a44971ebaf67bc8ae21cf1a96eae2916"},
- {file = "invenio_theme-1.1.4-py2.py3-none-any.whl", hash = "sha256:b98224b54fd94615d6588d3606c73b3cefa3963cafb8d859bd7c715036ba556a"},
+ {file = "invenio-theme-1.3.6.tar.gz", hash = "sha256:c149d5d58359311d75789fe4f41f47944884a93db8d2b282f73dfb3b567c8d45"},
+ {file = "invenio_theme-1.3.6-py2.py3-none-any.whl", hash = "sha256:126cf6b3611590de3fdae85595edb5a0f7a55a43c39b1b51568beabdde5114e8"},
]
invenio-userprofiles = []
ipython = [
@@ -3977,8 +3815,8 @@ itsdangerous = [
{file = "itsdangerous-1.1.0.tar.gz", hash = "sha256:321b033d07f2a4136d3ec762eac9f16a10ccd60f53c0c91af90217ace7ba1f19"},
]
jedi = [
- {file = "jedi-0.18.0-py2.py3-none-any.whl", hash = "sha256:18456d83f65f400ab0c2d3319e48520420ef43b23a086fdc05dff34132f0fb93"},
- {file = "jedi-0.18.0.tar.gz", hash = "sha256:92550a404bad8afed881a137ec9a461fed49eca661414be45059329614ed0707"},
+ {file = "jedi-0.17.2-py2.py3-none-any.whl", hash = "sha256:98cc583fa0f2f8304968199b01b6b4b94f469a1f4a74c1560506ca2a211378b5"},
+ {file = "jedi-0.17.2.tar.gz", hash = "sha256:86ed7d9b750603e4ba582ea8edc678657fb4007894a12bcf6f4bb97892f31d20"},
]
jinja2 = [
{file = "Jinja2-2.11.2-py2.py3-none-any.whl", hash = "sha256:f0a4641d3cf955324a89c04f3d94663aa4d638abe8f733ecd3582848e1c37035"},
@@ -4004,8 +3842,8 @@ jsonref = [
{file = "jsonref-0.2.tar.gz", hash = "sha256:f3c45b121cf6257eafabdc3a8008763aed1cd7da06dbabc59a9e4d2a5e4e6697"},
]
jsonresolver = [
- {file = "jsonresolver-0.2.1-py2.py3-none-any.whl", hash = "sha256:bd4268b07143cc6a5895783185266e72be1546c9332febbd09f29ad80daa0f7e"},
- {file = "jsonresolver-0.2.1.tar.gz", hash = "sha256:cf1e37f4c8db7415a53f8118cde988ba746f486d890732bd83f6f1ff6083c11b"},
+ {file = "jsonresolver-0.3.1-py2.py3-none-any.whl", hash = "sha256:f17a526988456d9895023ae3580714d6ce6af5656869d11d9860dc4a799cf6d4"},
+ {file = "jsonresolver-0.3.1.tar.gz", hash = "sha256:2d8090f6a1fe92e70f2903f05515415bde7ce46402e528279f865bce4ee689ca"},
]
jsonschema = [
{file = "jsonschema-3.2.0-py2.py3-none-any.whl", hash = "sha256:4e5b3cf8216f577bee9ce139cbe72eca3ea4f292ec60928ff24758ce626cd163"},
@@ -4015,29 +3853,6 @@ kombu = [
{file = "kombu-5.0.2-py2.py3-none-any.whl", hash = "sha256:6dc509178ac4269b0e66ab4881f70a2035c33d3a622e20585f965986a5182006"},
{file = "kombu-5.0.2.tar.gz", hash = "sha256:f4965fba0a4718d47d470beeb5d6446e3357a62402b16c510b6a2f251e05ac3c"},
]
-lazy-object-proxy = [
- {file = "lazy-object-proxy-1.4.3.tar.gz", hash = "sha256:f3900e8a5de27447acbf900b4750b0ddfd7ec1ea7fbaf11dfa911141bc522af0"},
- {file = "lazy_object_proxy-1.4.3-cp27-cp27m-macosx_10_13_x86_64.whl", hash = "sha256:a2238e9d1bb71a56cd710611a1614d1194dc10a175c1e08d75e1a7bcc250d442"},
- {file = "lazy_object_proxy-1.4.3-cp27-cp27m-win32.whl", hash = "sha256:efa1909120ce98bbb3777e8b6f92237f5d5c8ea6758efea36a473e1d38f7d3e4"},
- {file = "lazy_object_proxy-1.4.3-cp27-cp27m-win_amd64.whl", hash = "sha256:4677f594e474c91da97f489fea5b7daa17b5517190899cf213697e48d3902f5a"},
- {file = "lazy_object_proxy-1.4.3-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:0c4b206227a8097f05c4dbdd323c50edf81f15db3b8dc064d08c62d37e1a504d"},
- {file = "lazy_object_proxy-1.4.3-cp34-cp34m-manylinux1_x86_64.whl", hash = "sha256:d945239a5639b3ff35b70a88c5f2f491913eb94871780ebfabb2568bd58afc5a"},
- {file = "lazy_object_proxy-1.4.3-cp34-cp34m-win32.whl", hash = "sha256:9651375199045a358eb6741df3e02a651e0330be090b3bc79f6d0de31a80ec3e"},
- {file = "lazy_object_proxy-1.4.3-cp34-cp34m-win_amd64.whl", hash = "sha256:eba7011090323c1dadf18b3b689845fd96a61ba0a1dfbd7f24b921398affc357"},
- {file = "lazy_object_proxy-1.4.3-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:48dab84ebd4831077b150572aec802f303117c8cc5c871e182447281ebf3ac50"},
- {file = "lazy_object_proxy-1.4.3-cp35-cp35m-win32.whl", hash = "sha256:ca0a928a3ddbc5725be2dd1cf895ec0a254798915fb3a36af0964a0a4149e3db"},
- {file = "lazy_object_proxy-1.4.3-cp35-cp35m-win_amd64.whl", hash = "sha256:194d092e6f246b906e8f70884e620e459fc54db3259e60cf69a4d66c3fda3449"},
- {file = "lazy_object_proxy-1.4.3-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:97bb5884f6f1cdce0099f86b907aa41c970c3c672ac8b9c8352789e103cf3156"},
- {file = "lazy_object_proxy-1.4.3-cp36-cp36m-win32.whl", hash = "sha256:cb2c7c57005a6804ab66f106ceb8482da55f5314b7fcb06551db1edae4ad1531"},
- {file = "lazy_object_proxy-1.4.3-cp36-cp36m-win_amd64.whl", hash = "sha256:8d859b89baf8ef7f8bc6b00aa20316483d67f0b1cbf422f5b4dc56701c8f2ffb"},
- {file = "lazy_object_proxy-1.4.3-cp37-cp37m-macosx_10_13_x86_64.whl", hash = "sha256:1be7e4c9f96948003609aa6c974ae59830a6baecc5376c25c92d7d697e684c08"},
- {file = "lazy_object_proxy-1.4.3-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:d74bb8693bf9cf75ac3b47a54d716bbb1a92648d5f781fc799347cfc95952383"},
- {file = "lazy_object_proxy-1.4.3-cp37-cp37m-win32.whl", hash = "sha256:9b15f3f4c0f35727d3a0fba4b770b3c4ebbb1fa907dbcc046a1d2799f3edd142"},
- {file = "lazy_object_proxy-1.4.3-cp37-cp37m-win_amd64.whl", hash = "sha256:9254f4358b9b541e3441b007a0ea0764b9d056afdeafc1a5569eee1cc6c1b9ea"},
- {file = "lazy_object_proxy-1.4.3-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:a6ae12d08c0bf9909ce12385803a543bfe99b95fe01e752536a60af2b7797c62"},
- {file = "lazy_object_proxy-1.4.3-cp38-cp38-win32.whl", hash = "sha256:5541cada25cd173702dbd99f8e22434105456314462326f06dba3e180f203dfd"},
- {file = "lazy_object_proxy-1.4.3-cp38-cp38-win_amd64.whl", hash = "sha256:59f79fef100b09564bc2df42ea2d8d21a64fdcda64979c0fa3db7bdaabaf6239"},
-]
limits = [
{file = "limits-1.5.1-py2-none-any.whl", hash = "sha256:0e5f8b10f18dd809eb2342f5046eb9aa5e4e69a0258567b5f4aa270647d438b3"},
{file = "limits-1.5.1.tar.gz", hash = "sha256:f0c3319f032c4bfad68438ed1325c0fac86dac64582c7c25cddc87a0b658fa20"},
@@ -4138,18 +3953,10 @@ maxminddb = [
maxminddb-geolite2 = [
{file = "maxminddb-geolite2-2018.703.tar.gz", hash = "sha256:2bd118c5567f3a8323d6c5da23a6e6d52cfc09cd9987b54eb712cf6001a96e03"},
]
-mccabe = [
- {file = "mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"},
- {file = "mccabe-0.6.1.tar.gz", hash = "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"},
-]
mock = [
{file = "mock-4.0.3-py3-none-any.whl", hash = "sha256:122fcb64ee37cfad5b3f48d7a7d51875d7031aaf3d8be7c42e2bee25044eee62"},
{file = "mock-4.0.3.tar.gz", hash = "sha256:7d3fbbde18228f4ff2f1f119a45cdffa458b4c0dee32eb4d2bb2f82554bac7bc"},
]
-more-itertools = [
- {file = "more-itertools-8.6.0.tar.gz", hash = "sha256:b3a9005928e5bed54076e6e549c792b306fddfe72b2d1d22dd63d42d5d3899cf"},
- {file = "more_itertools-8.6.0-py3-none-any.whl", hash = "sha256:8e1a2a43b2f2727425f2b5839587ae37093f19153dc26c0927d1048ff6557330"},
-]
msgpack = [
{file = "msgpack-1.0.2-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:b6d9e2dae081aa35c44af9c4298de4ee72991305503442a5c74656d82b581fe9"},
{file = "msgpack-1.0.2-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:a99b144475230982aee16b3d249170f1cccebf27fb0a08e9f603b69637a62192"},
@@ -4192,8 +3999,8 @@ packaging = [
{file = "packaging-20.8.tar.gz", hash = "sha256:78598185a7008a470d64526a8059de9aaa449238f280fc9eb6b13ba6c4109093"},
]
parso = [
- {file = "parso-0.8.1-py2.py3-none-any.whl", hash = "sha256:15b00182f472319383252c18d5913b69269590616c947747bc50bf4ac768f410"},
- {file = "parso-0.8.1.tar.gz", hash = "sha256:8519430ad07087d4c997fda3a7918f7cfa27cb58972a8c89c2a0295a1c940e9e"},
+ {file = "parso-0.7.1-py2.py3-none-any.whl", hash = "sha256:97218d9159b2520ff45eb78028ba8b50d2bc61dcc062a9682666f2dc4bd331ea"},
+ {file = "parso-0.7.1.tar.gz", hash = "sha256:caba44724b994a8a5e086460bb212abc5a8bc46951bf4a9a1210745953622eb9"},
]
passlib = [
{file = "passlib-1.7.4-py2.py3-none-any.whl", hash = "sha256:aa6bca462b8d8bda89c70b382f0c298a20b5560af6cbfa2dce410c0a2fb669f1"},
@@ -4203,10 +4010,6 @@ pep517 = [
{file = "pep517-0.9.1-py2.py3-none-any.whl", hash = "sha256:3985b91ebf576883efe5fa501f42a16de2607684f3797ddba7202b71b7d0da51"},
{file = "pep517-0.9.1.tar.gz", hash = "sha256:aeb78601f2d1aa461960b43add204cc7955667687fbcf9cdb5170f00556f117f"},
]
-pep8 = [
- {file = "pep8-1.7.1-py2.py3-none-any.whl", hash = "sha256:b22cfae5db09833bb9bd7c8463b53e1a9c9b39f12e304a8d0bba729c501827ee"},
- {file = "pep8-1.7.1.tar.gz", hash = "sha256:fe249b52e20498e59e0b5c5256aa52ee99fc295b26ec9eaa85776ffdb9fe6374"},
-]
pexpect = [
{file = "pexpect-4.8.0-py2.py3-none-any.whl", hash = "sha256:0b48a55dcb3c05f3329815901ea4fc1537514d6ba867a152b581d69ae3710937"},
{file = "pexpect-4.8.0.tar.gz", hash = "sha256:fc65a43959d153d0114afe13997d439c22823a27cefceb5ff35c2178c6784c0c"},
@@ -4260,11 +4063,8 @@ psycopg2-binary = [
{file = "psycopg2_binary-2.8.6-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:2dac98e85565d5688e8ab7bdea5446674a83a3945a8f416ad0110018d1501b94"},
{file = "psycopg2_binary-2.8.6-cp38-cp38-win32.whl", hash = "sha256:bd1be66dde2b82f80afb9459fc618216753f67109b859a361cf7def5c7968729"},
{file = "psycopg2_binary-2.8.6-cp38-cp38-win_amd64.whl", hash = "sha256:8cd0fb36c7412996859cb4606a35969dd01f4ea34d9812a141cd920c3b18be77"},
- {file = "psycopg2_binary-2.8.6-cp39-cp39-macosx_10_9_x86_64.macosx_10_9_intel.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:89705f45ce07b2dfa806ee84439ec67c5d9a0ef20154e0e475e2b2ed392a5b83"},
{file = "psycopg2_binary-2.8.6-cp39-cp39-manylinux1_i686.whl", hash = "sha256:42ec1035841b389e8cc3692277a0bd81cdfe0b65d575a2c8862cec7a80e62e52"},
{file = "psycopg2_binary-2.8.6-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:7312e931b90fe14f925729cde58022f5d034241918a5c4f9797cac62f6b3a9dd"},
- {file = "psycopg2_binary-2.8.6-cp39-cp39-win32.whl", hash = "sha256:6422f2ff0919fd720195f64ffd8f924c1395d30f9a495f31e2392c2efafb5056"},
- {file = "psycopg2_binary-2.8.6-cp39-cp39-win_amd64.whl", hash = "sha256:15978a1fbd225583dd8cdaf37e67ccc278b5abecb4caf6b2d6b8e2b948e953f6"},
]
ptyprocess = [
{file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"},
@@ -4274,6 +4074,10 @@ py = [
{file = "py-1.10.0-py2.py3-none-any.whl", hash = "sha256:3b80836aa6d1feeaa108e046da6423ab8f6ceda6468545ae8d02d9d58d18818a"},
{file = "py-1.10.0.tar.gz", hash = "sha256:21b81bda15b66ef5e1a777a21c4dcd9c20ad3efd0b3f817e7a809035269e1bd3"},
]
+pycodestyle = [
+ {file = "pycodestyle-2.6.0-py2.py3-none-any.whl", hash = "sha256:2295e7b2f6b5bd100585ebcb1f616591b652db8a741695b3d8f5d28bdc934367"},
+ {file = "pycodestyle-2.6.0.tar.gz", hash = "sha256:c58a7d2815e0e8d7972bf1803331fb0152f867bd89adf8a01dfd55085434192e"},
+]
pycountry = [
{file = "pycountry-20.7.3.tar.gz", hash = "sha256:81084a53d3454344c0292deebc20fcd0a1488c136d4900312cbd465cf552cb42"},
]
@@ -4297,10 +4101,6 @@ pyjwt = [
{file = "PyJWT-2.0.0-py3-none-any.whl", hash = "sha256:5c2ff2eb27d7e342dfc3cafcc16412781f06db2690fbef81922b0172598f085b"},
{file = "PyJWT-2.0.0.tar.gz", hash = "sha256:7a2b271c6dac2fda9e0c33d176c4253faba2c6c6b3a99c7f28a32c3c97522779"},
]
-pylint = [
- {file = "pylint-2.6.0-py3-none-any.whl", hash = "sha256:bfe68f020f8a0fece830a22dd4d5dddb4ecc6137db04face4c3420a46a52239f"},
- {file = "pylint-2.6.0.tar.gz", hash = "sha256:bb4a908c9dadbc3aac18860550e870f58e1a02c9f2c204fdf5693d73be061210"},
-]
pynpm = [
{file = "pynpm-0.1.2-py2.py3-none-any.whl", hash = "sha256:3f03fbf667549f8b8b7e0419eef88d1b21833ce288f96de66fbb761b9f4c4061"},
{file = "pynpm-0.1.2.tar.gz", hash = "sha256:8a6d3f9423760cf3c142db3bf9bda5a075e8a91837e7d2e2b0a3de5be5e26da2"},
@@ -4313,42 +4113,30 @@ pyrsistent = [
{file = "pyrsistent-0.17.3.tar.gz", hash = "sha256:2e636185d9eb976a18a8a8e96efce62f2905fea90041958d8cc2a189756ebf3e"},
]
pytest = [
- {file = "pytest-5.3.5-py3-none-any.whl", hash = "sha256:ff615c761e25eb25df19edddc0b970302d2a9091fbce0e7213298d85fb61fef6"},
- {file = "pytest-5.3.5.tar.gz", hash = "sha256:0d5fe9189a148acc3c3eb2ac8e1ac0742cb7618c084f3d228baaec0c254b318d"},
-]
-pytest-cache = [
- {file = "pytest-cache-1.0.tar.gz", hash = "sha256:be7468edd4d3d83f1e844959fd6e3fd28e77a481440a7118d430130ea31b07a9"},
-]
-pytest-celery = [
- {file = "pytest-celery-0.0.0a1.tar.gz", hash = "sha256:3e0e0817c2d3f2870dafebd915bf13100fc12920b5d42dfe5fdc35844fe42e62"},
- {file = "pytest_celery-0.0.0a1-py2.py3-none-any.whl", hash = "sha256:2fa8d0ae0d573fb2ee51902bfa220e891044eafadbfb132b28b7087295c3004f"},
+ {file = "pytest-6.2.1-py3-none-any.whl", hash = "sha256:1969f797a1a0dbd8ccf0fecc80262312729afea9c17f1d70ebf85c5e76c6f7c8"},
+ {file = "pytest-6.2.1.tar.gz", hash = "sha256:66e419b1899bc27346cb2c993e12c5e5e8daba9073c1fbce33b9807abc95c306"},
]
pytest-cov = [
{file = "pytest-cov-2.10.1.tar.gz", hash = "sha256:47bd0ce14056fdd79f93e1713f88fad7bdcc583dcd7783da86ef2f085a0bb88e"},
{file = "pytest_cov-2.10.1-py2.py3-none-any.whl", hash = "sha256:45ec2d5182f89a81fc3eb29e3d1ed3113b9e9a873bcddb2a71faaab066110191"},
]
pytest-flask = [
- {file = "pytest-flask-0.15.1.tar.gz", hash = "sha256:cbd8c5b9f8f1b83e9c159ac4294964807c4934317a5fba181739ac15e1b823e6"},
- {file = "pytest_flask-0.15.1-py2.py3-none-any.whl", hash = "sha256:9001f6128c5c4a0d243ce46c117f3691052828d2faf39ac151b8388657dce447"},
+ {file = "pytest-flask-1.1.0.tar.gz", hash = "sha256:9c136afd6d0fb045b0b8fd2363421b6670bfebd21d9141f79669d9051c9d2d05"},
+ {file = "pytest_flask-1.1.0-py3-none-any.whl", hash = "sha256:28a24a5c12778f6e2b12eaf825e71944210aaba061edbd2c3e15e3664bc15407"},
]
pytest-invenio = [
- {file = "pytest-invenio-1.2.2.tar.gz", hash = "sha256:06d94d1e839e2d60e626284566ffdb2d254613a3bb91fb6803286f67b3dfdd7e"},
- {file = "pytest_invenio-1.2.2-py2.py3-none-any.whl", hash = "sha256:bb5e14605ce6ee2d699f6909707b99bd169bf075cf47424598c4092385c8ffbe"},
-]
-pytest-mock = [
- {file = "pytest-mock-3.5.0.tar.gz", hash = "sha256:4992db789175540d40a193bc60e987b1e69f1a989adad525a44e581c82149b14"},
- {file = "pytest_mock-3.5.0-py3-none-any.whl", hash = "sha256:f9d77233b3af6c71cec6a8b8b5e9e9a2effd1bb6ff56e9ace72541ff6843ac81"},
+ {file = "pytest-invenio-1.4.1.tar.gz", hash = "sha256:46ac63960a2425f5179bcf25abf84755d42e382a73b6688faa5609f78f91c217"},
+ {file = "pytest_invenio-1.4.1-py2.py3-none-any.whl", hash = "sha256:bc8eb3e276da60dcb24ec9796b85d2310122ba569ccb7d3809f222e500eebdc0"},
]
-pytest-pep8 = [
- {file = "pytest-pep8-1.0.6.tar.gz", hash = "sha256:032ef7e5fa3ac30f4458c73e05bb67b0f036a8a5cb418a534b3170f89f120318"},
+pytest-isort = [
+ {file = "pytest-isort-1.2.0.tar.gz", hash = "sha256:f0fcf9674f3a627b36e07466d335e82b0f7c4f9e0f7ec39f2a1750b0189d5371"},
+ {file = "pytest_isort-1.2.0-py3-none-any.whl", hash = "sha256:2c6a1d210e8c478e418ab25df2408c235c97b1b8958fb0b139d790d0ec246f58"},
]
-pytest-random-order = [
- {file = "pytest-random-order-1.0.4.tar.gz", hash = "sha256:6b2159342a4c8c10855bc4fc6d65ee890fc614cb2b4ff688979b008a82a0ff52"},
- {file = "pytest_random_order-1.0.4-py3-none-any.whl", hash = "sha256:72279a7f823969e18b10e438950f58330d17e0fcffb57cbd7929770cd687ecb2"},
+pytest-pycodestyle = [
+ {file = "pytest-pycodestyle-2.2.0.tar.gz", hash = "sha256:e755e4235ed399760257026b8c3c696520848cb0261277c2df1c8e64af979eb2"},
]
-pytest-runner = [
- {file = "pytest-runner-4.5.1.tar.gz", hash = "sha256:d1cb3d654b120d6124914bc33dcd25679860464545e4509bb6bf96eed5a2f1ef"},
- {file = "pytest_runner-4.5.1-py2.py3-none-any.whl", hash = "sha256:175d3d9271332b54df0190bec59c3614676f6895ad1056aa391ed034e03f95f6"},
+pytest-pydocstyle = [
+ {file = "pytest-pydocstyle-2.2.0.tar.gz", hash = "sha256:b4e7eee47252fbb7495f4a0126e547a25f5f114f3096c504e738db49a5034333"},
]
python-dateutil = [
{file = "python-dateutil-2.8.1.tar.gz", hash = "sha256:73ebfe9dbf22e832286dafa60473e4cd239f8592f699aa5adaf10050e6e1823c"},
@@ -4384,8 +4172,6 @@ pyyaml = [
{file = "PyYAML-5.3.1-cp37-cp37m-win_amd64.whl", hash = "sha256:73f099454b799e05e5ab51423c7bcf361c58d3206fa7b0d555426b1f4d9a3eaf"},
{file = "PyYAML-5.3.1-cp38-cp38-win32.whl", hash = "sha256:06a0d7ba600ce0b2d2fe2e78453a470b5a6e000a985dd4a4e54e436cc36b0e97"},
{file = "PyYAML-5.3.1-cp38-cp38-win_amd64.whl", hash = "sha256:95f71d2af0ff4227885f7a6605c37fd53d3a106fcab511b8860ecca9fcf400ee"},
- {file = "PyYAML-5.3.1-cp39-cp39-win32.whl", hash = "sha256:ad9c67312c84def58f3c04504727ca879cb0013b2517c85a9a253f0cb6380c0a"},
- {file = "PyYAML-5.3.1-cp39-cp39-win_amd64.whl", hash = "sha256:6034f55dab5fea9e53f436aa68fa3ace2634918e8b5994d82f3621c04ff5ed2e"},
{file = "PyYAML-5.3.1.tar.gz", hash = "sha256:b8eac752c5e14d3eca0e6dd9199cd627518cb5ec06add0de9d32baeee6fe645d"},
]
raven = [
@@ -4531,8 +4317,8 @@ speaklater = [
{file = "speaklater-1.3.tar.gz", hash = "sha256:59fea336d0eed38c1f0bf3181ee1222d0ef45f3a9dd34ebe65e6bfffdd6a65a9"},
]
sphinx = [
- {file = "Sphinx-3.3.1-py3-none-any.whl", hash = "sha256:d4e59ad4ea55efbb3c05cde3bfc83bfc14f0c95aa95c3d75346fcce186a47960"},
- {file = "Sphinx-3.3.1.tar.gz", hash = "sha256:1e8d592225447104d1172be415bc2972bd1357e3e12fdc76edf2261105db4300"},
+ {file = "Sphinx-3.4.1-py3-none-any.whl", hash = "sha256:aeef652b14629431c82d3fe994ce39ead65b3fe87cf41b9a3714168ff8b83376"},
+ {file = "Sphinx-3.4.1.tar.gz", hash = "sha256:e450cb205ff8924611085183bf1353da26802ae73d9251a8fcdf220a8f8712ef"},
]
sphinxcontrib-applehelp = [
{file = "sphinxcontrib-applehelp-1.0.2.tar.gz", hash = "sha256:a072735ec80e7675e3f432fcae8610ecf509c5f1869d17e2eecff44389cdbc58"},
@@ -4614,38 +4400,6 @@ traitlets = [
{file = "traitlets-5.0.5-py3-none-any.whl", hash = "sha256:69ff3f9d5351f31a7ad80443c2674b7099df13cc41fc5fa6e2f6d3b0330b0426"},
{file = "traitlets-5.0.5.tar.gz", hash = "sha256:178f4ce988f69189f7e523337a3e11d91c786ded9360174a3d9ca83e79bc5396"},
]
-typed-ast = [
- {file = "typed_ast-1.4.2-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:7703620125e4fb79b64aa52427ec192822e9f45d37d4b6625ab37ef403e1df70"},
- {file = "typed_ast-1.4.2-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:c9aadc4924d4b5799112837b226160428524a9a45f830e0d0f184b19e4090487"},
- {file = "typed_ast-1.4.2-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:9ec45db0c766f196ae629e509f059ff05fc3148f9ffd28f3cfe75d4afb485412"},
- {file = "typed_ast-1.4.2-cp35-cp35m-win32.whl", hash = "sha256:85f95aa97a35bdb2f2f7d10ec5bbdac0aeb9dafdaf88e17492da0504de2e6400"},
- {file = "typed_ast-1.4.2-cp35-cp35m-win_amd64.whl", hash = "sha256:9044ef2df88d7f33692ae3f18d3be63dec69c4fb1b5a4a9ac950f9b4ba571606"},
- {file = "typed_ast-1.4.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:c1c876fd795b36126f773db9cbb393f19808edd2637e00fd6caba0e25f2c7b64"},
- {file = "typed_ast-1.4.2-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:5dcfc2e264bd8a1db8b11a892bd1647154ce03eeba94b461effe68790d8b8e07"},
- {file = "typed_ast-1.4.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:8db0e856712f79c45956da0c9a40ca4246abc3485ae0d7ecc86a20f5e4c09abc"},
- {file = "typed_ast-1.4.2-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:d003156bb6a59cda9050e983441b7fa2487f7800d76bdc065566b7d728b4581a"},
- {file = "typed_ast-1.4.2-cp36-cp36m-win32.whl", hash = "sha256:4c790331247081ea7c632a76d5b2a265e6d325ecd3179d06e9cf8d46d90dd151"},
- {file = "typed_ast-1.4.2-cp36-cp36m-win_amd64.whl", hash = "sha256:d175297e9533d8d37437abc14e8a83cbc68af93cc9c1c59c2c292ec59a0697a3"},
- {file = "typed_ast-1.4.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:cf54cfa843f297991b7388c281cb3855d911137223c6b6d2dd82a47ae5125a41"},
- {file = "typed_ast-1.4.2-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:b4fcdcfa302538f70929eb7b392f536a237cbe2ed9cba88e3bf5027b39f5f77f"},
- {file = "typed_ast-1.4.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:987f15737aba2ab5f3928c617ccf1ce412e2e321c77ab16ca5a293e7bbffd581"},
- {file = "typed_ast-1.4.2-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:37f48d46d733d57cc70fd5f30572d11ab8ed92da6e6b28e024e4a3edfb456e37"},
- {file = "typed_ast-1.4.2-cp37-cp37m-win32.whl", hash = "sha256:36d829b31ab67d6fcb30e185ec996e1f72b892255a745d3a82138c97d21ed1cd"},
- {file = "typed_ast-1.4.2-cp37-cp37m-win_amd64.whl", hash = "sha256:8368f83e93c7156ccd40e49a783a6a6850ca25b556c0fa0240ed0f659d2fe496"},
- {file = "typed_ast-1.4.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:963c80b583b0661918718b095e02303d8078950b26cc00b5e5ea9ababe0de1fc"},
- {file = "typed_ast-1.4.2-cp38-cp38-manylinux1_i686.whl", hash = "sha256:e683e409e5c45d5c9082dc1daf13f6374300806240719f95dc783d1fc942af10"},
- {file = "typed_ast-1.4.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:84aa6223d71012c68d577c83f4e7db50d11d6b1399a9c779046d75e24bed74ea"},
- {file = "typed_ast-1.4.2-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:a38878a223bdd37c9709d07cd357bb79f4c760b29210e14ad0fb395294583787"},
- {file = "typed_ast-1.4.2-cp38-cp38-win32.whl", hash = "sha256:a2c927c49f2029291fbabd673d51a2180038f8cd5a5b2f290f78c4516be48be2"},
- {file = "typed_ast-1.4.2-cp38-cp38-win_amd64.whl", hash = "sha256:c0c74e5579af4b977c8b932f40a5464764b2f86681327410aa028a22d2f54937"},
- {file = "typed_ast-1.4.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:07d49388d5bf7e863f7fa2f124b1b1d89d8aa0e2f7812faff0a5658c01c59aa1"},
- {file = "typed_ast-1.4.2-cp39-cp39-manylinux1_i686.whl", hash = "sha256:240296b27397e4e37874abb1df2a608a92df85cf3e2a04d0d4d61055c8305ba6"},
- {file = "typed_ast-1.4.2-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:d746a437cdbca200622385305aedd9aef68e8a645e385cc483bdc5e488f07166"},
- {file = "typed_ast-1.4.2-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:14bf1522cdee369e8f5581238edac09150c765ec1cb33615855889cf33dcb92d"},
- {file = "typed_ast-1.4.2-cp39-cp39-win32.whl", hash = "sha256:cc7b98bf58167b7f2db91a4327da24fb93368838eb84a44c472283778fc2446b"},
- {file = "typed_ast-1.4.2-cp39-cp39-win_amd64.whl", hash = "sha256:7147e2a76c75f0f64c4319886e7639e490fee87c9d25cb1d4faef1d8cf83a440"},
- {file = "typed_ast-1.4.2.tar.gz", hash = "sha256:9fc0b3cb5d1720e7141d103cf4819aea239f7d136acf9ee4a69b047b7986175a"},
-]
typing-extensions = [
{file = "typing_extensions-3.7.4.3-py2-none-any.whl", hash = "sha256:dafc7639cde7f1b6e1acc0f457842a83e722ccca8eef5270af2d74792619a89f"},
{file = "typing_extensions-3.7.4.3-py3-none-any.whl", hash = "sha256:7cb407020f00f7bfc3cb3e7881628838e69d8f3fcab2f64742a5e76b2f841918"},
@@ -4694,20 +4448,13 @@ webargs = [
{file = "webargs-5.5.3-py3-none-any.whl", hash = "sha256:4f04918864c7602886335d8099f9b8960ee698b6b914f022736ed50be6b71235"},
{file = "webargs-5.5.3.tar.gz", hash = "sha256:871642a2e0c62f21d5b78f357750ac7a87e6bc734c972f633aa5fb6204fbf29a"},
]
-webassets = [
- {file = "webassets-2.0-py3-none-any.whl", hash = "sha256:a31a55147752ba1b3dc07dee0ad8c8efff274464e08bbdb88c1fd59ffd552724"},
- {file = "webassets-2.0.tar.gz", hash = "sha256:167132337677c8cedc9705090f6d48da3fb262c8e0b2773b29f3352f050181cd"},
-]
webencodings = [
{file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"},
{file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"},
]
werkzeug = [
- {file = "Werkzeug-0.16.1-py2.py3-none-any.whl", hash = "sha256:1e0dedc2acb1f46827daa2e399c1485c8fa17c0d8e70b6b875b4e7f54bf408d2"},
- {file = "Werkzeug-0.16.1.tar.gz", hash = "sha256:b353856d37dec59d6511359f97f6a4b2468442e454bd1c98298ddce53cac1f04"},
-]
-wrapt = [
- {file = "wrapt-1.12.1.tar.gz", hash = "sha256:b62ffa81fb85f4332a4f609cab4ac40709470da05643a082ec1eb88e6d9b97d7"},
+ {file = "Werkzeug-1.0.1-py2.py3-none-any.whl", hash = "sha256:2de2a5db0baeae7b2d2664949077c2ac63fbd16d98da0ff71837f7d1dea3fd43"},
+ {file = "Werkzeug-1.0.1.tar.gz", hash = "sha256:6c80b1e5ad3665290ea39320b91e1be1e0d5f60652b964a3070216de83d2e47c"},
]
wtforms = [
{file = "WTForms-2.3.3-py2.py3-none-any.whl", hash = "sha256:7b504fc724d0d1d4d5d5c114e778ec88c37ea53144683e084215eed5155ada4c"},
diff --git a/pyproject.toml b/pyproject.toml
index 8de2a189ff..1fa4c043e1 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -6,7 +6,7 @@ authors = ["RERO "]
license = "GNU Affero General Public License v3.0"
[tool.poetry.dependencies]
-python = ">= 3.6, < 3.8"
+python = ">= 3.6, <3.8"
## Python packages dependencies (order matters)
#------------------------------------------------------------------------------
## Note: poetry evaluates the package constraints from the top to the bottom
@@ -22,31 +22,30 @@ python = ">= 3.6, < 3.8"
## when the python code will be executed a conflict exception will be raised.
#------------------------------------------------------------------------------
# Default from Invenio
-Babel = ">=2.4.0"
-Flask-BabelEx = ">=0.9.3"
+lxml = ">=4.3.0,<5.0.0"
+uwsgi = ">=2.0"
+uwsgi-tools = ">=1.1.1"
+uwsgitop = ">=0.11"
## Third party invenio modules used by RERO ILS
invenio-oaiharvester = {tag = "v1.0.0a4", git = "https://github.com/inveniosoftware/invenio-oaiharvester.git"}
invenio-circulation = {tag = "v1.0.0a29", git = "https://github.com/inveniosoftware/invenio-circulation.git"}
-## Invenio 3.2.1 base modules used by RERO ILS
+## Invenio 3.4 base modules used by RERO ILS
# same as invenio metadata extras without invenio-search-ui
-invenio-indexer = ">=1.1.1,<1.2.0"
-invenio-jsonschemas = ">=1.1.0,<1.2.0"
+invenio-indexer = ">=1.2.0,<1.3.0"
+invenio-jsonschemas = ">=1.1.1,<1.2.0"
invenio-oaiserver = ">=1.2.0,<1.3.0"
-invenio-pidstore = ">=1.2.0,<1.3.0"
-invenio-records-rest = ">=1.7.1,<1.8.0"
-invenio-records-ui= ">=1.2.0a1,<1.3.0"
-invenio-records = ">=1.3.1,<1.4.0"
-
-# TODO: to be removed if we know how to configure pytest-celery comming with version 1.2.2
-invenio-celery = "<1.2.2"
+invenio-pidstore = ">=1.2.1,<1.3.0"
+invenio-records-rest = ">=1.8.0,<1.9.0"
+invenio-records-ui= ">=1.2.0,<1.3.0"
+invenio-records = ">=1.4.0,<1.6.0"
## Default from Invenio
-invenio = {version = ">=3.3.0,<3.4.0", extras = ["base", "postgresql", "auth", "elasticsearch7" ]}
-uwsgi = ">=2.0"
-uwsgitop = ">=0.11"
-uwsgi-tools = ">=1.1.1"
+invenio = {version = ">=3.4.0,<5.4.0", extras = ["base", "postgresql", "auth", "elasticsearch7", "docs", "tests" ]}
+
+# TODO: jedi > 0.17 crashs the console
+jedi = "<0.18.0"
## RERO ILS specific python modules
PyYAML = ">=5.3.1"
@@ -60,10 +59,9 @@ redisbeat = "*"
jsonpickle = ">=1.4.1"
ciso8601 = "*"
# TODO: to be removed when the thumbnail will be refactored
-invenio-userprofiles = {git = "https://github.com/rero/invenio-userprofiles.git", tag = "reroprofile"}
+invenio-userprofiles = {git = "https://github.com/rero/invenio-userprofiles.git", tag = "invenio-3.4"}
## Additionnal constraints on python modules
-# solves fixture 'celery_config' not found
flask-wiki = {git = "https://github.com/rero/flask-wiki.git"}
markdown-captions = "*"
@@ -75,39 +73,23 @@ python-dotenv = "^0.13.0"
## Third party optional modules used by RERO ILS
invenio-sip2 = {git = "https://github.com/inveniosoftware-contrib/invenio-sip2.git", optional = true}
flask-cors = ">3.0.8"
-celery = "^5.0.0"
-lxml = ">=4.6.2"
+celery = ">=5.0.0"
cryptography = ">3.2"
-# TODO: to be removed when dependency is corrected in pypi
-py = ">=1.9.0"
[tool.poetry.dev-dependencies]
## Python packages development dependencies (order matters)
#----------------------------------------------------------
## Default from Invenio
+pytest-invenio = ">=1.4.0,<1.5.0"
+# TODO: ther is a problem with sphinx 3.4.2
+# RuntimeError: Working outside of application context.
+Sphinx = ">=3,<3.4.2"
Flask-Debugtoolbar = ">=0.10.1"
-Sphinx = ">=3.0.4,<3.4"
-check-manifest = ">=0.35"
-coverage = ">=4.5.3"
-isort = ">=4.3"
-mock = ">=2.0.0"
-marshmallow = ">=3.0.0,<4.0.0"
-pydocstyle = ">=3.0.0"
-# TODO: Delete 6.0.0 limitation when pytest_pep8 will use Pep8Item.from_parent
-# Cf. https://bitbucket.org/pytest-dev/pytest-pep8/issues/25/pep8item-should-use-from_parent-method
-pytest = ">=4.6.4,<5.4"
-pytest-cov = ">=2.7.1"
-pytest-invenio = ">=1.2.1,<1.3.0"
-pytest-mock = ">=1.6.0"
-pytest-pep8 = ">=1.0.6"
-pytest-random-order = ">=0.5.4"
-pytest-runner = ">=3.0.0,<5"
-safety = ">=1.8"
-docutils = "*"
## RERO ILS specific python packages
+safety = ">=1.8"
+mock = ">=2.0.0"
autoflake = ">=1.3.1"
appnope = { version = "*", optional = true }
-pylint = "^2.6.0"
[tool.poetry.extras]
## Python extra packages dependencies
diff --git a/pytest.ini b/pytest.ini
index 4c1e8b3599..54e5958f29 100644
--- a/pytest.ini
+++ b/pytest.ini
@@ -17,10 +17,7 @@
[pytest]
live_server_scope = module
-pep8ignore =
- docs/conf.py ALL
- config.py E501
-addopts = --pep8 --doctest-glob="*.rst" --doctest-modules --cov=rero_ils --cov-report=term-missing --ignore=setup.py -m "not external"
+addopts = --pydocstyle --doctest-glob="*.rst" --doctest-modules --cov=rero_ils --cov-report=term-missing --ignore=setup.py --ignore=docs/conf.py -m "not external"
testpaths = docs tests rero_ils
# not displaying all the PendingDeprecationWarnings from invenio
diff --git a/rero_ils/config.py b/rero_ils/config.py
index 8fff60c8b2..528369c6d8 100644
--- a/rero_ils/config.py
+++ b/rero_ils/config.py
@@ -134,6 +134,7 @@ def _(x):
# this parameter using the 'default_currency' field
RERO_ILS_DEFAULT_CURRENCY = 'CHF'
+
# Base templates
# ==============
#: Global base template.
@@ -160,6 +161,8 @@ def _(x):
# Theme configuration
# ===================
+#: The Invenio theme.
+APP_THEME = ['bootstrap3']
#: Brand logo.
THEME_LOGO = 'images/logo_rero_ils.png'
#: Site name
@@ -183,7 +186,8 @@ def _(x):
#: Template for error pages.
THEME_ERROR_TEMPLATE = 'rero_ils/page_error.html'
# External CSS for each organisation customization
-RERO_ILS_THEME_ORGANISATION_CSS_ENDPOINT = 'https://resources.rero.ch/ils/test/css/'
+RERO_ILS_THEME_ORGANISATION_CSS_ENDPOINT = \
+ 'https://resources.rero.ch/ils/test/css/'
#: Template for including a tracking code for web analytics.
THEME_TRACKINGCODE_TEMPLATE = 'rero_ils/trackingcode.html'
THEME_JAVASCRIPT_TEMPLATE = 'rero_ils/javascript.html'
@@ -296,8 +300,8 @@ def _(x):
'enabled': False
},
'clear_and_renew_subscriptions': {
- 'task':
- 'rero_ils.modules.patrons.tasks.task_clear_and_renew_subscriptions',
+ 'task': ('rero_ils.modules.patrons.tasks'
+ '.task_clear_and_renew_subscriptions'),
'schedule': crontab(minute='2', hour='2'),
'enabled': False
}
@@ -418,10 +422,12 @@ def _(x):
RECORDS_REST_DEFAULT_READ_PERMISSION_FACTORY = librarian_permission_factory
"""Default read permission factory: check if the record exists."""
-RECORDS_REST_DEFAULT_UPDATE_PERMISSION_FACTORY = librarian_update_permission_factory
+RECORDS_REST_DEFAULT_UPDATE_PERMISSION_FACTORY = \
+ librarian_update_permission_factory
"""Default update permission factory: reject any request."""
-RECORDS_REST_DEFAULT_DELETE_PERMISSION_FACTORY = librarian_delete_permission_factory
+RECORDS_REST_DEFAULT_DELETE_PERMISSION_FACTORY = \
+ librarian_delete_permission_factory
"""Default delete permission factory: reject any request."""
REST_MIMETYPE_QUERY_ARG_NAME = 'format'
@@ -559,7 +565,8 @@ def _(x):
'rero_ils.modules.serializers:json_v1_search'
),
'application/rero+json': (
- 'rero_ils.modules.ill_requests.serializers:json_ill_request_search'
+ 'rero_ils.modules.ill_requests.serializers:'
+ 'json_ill_request_search'
)
},
record_loaders={
@@ -1111,7 +1118,8 @@ def _(x):
},
record_class='rero_ils.modules.contributions.api:Contribution',
item_route=('/contributions/'),
+ '"rero_ils.modules.contributions.api:Contribution"):'
+ 'pid_value>'),
default_media_type='application/json',
max_result_window=MAX_RESULT_WINDOW,
search_factory_imp='rero_ils.query:contribution_view_search_factory',
@@ -2330,8 +2338,16 @@ def _(x):
dict(dest=LoanState.ITEM_IN_TRANSIT_FOR_PICKUP,
transition=PendingToItemInTransitPickup,
trigger='validate_request'),
- dict(dest=LoanState.ITEM_ON_LOAN, transition=ToItemOnLoan, trigger='checkout'),
- dict(dest=LoanState.CANCELLED, trigger='cancel', transition=ToCancelled)
+ dict(
+ dest=LoanState.ITEM_ON_LOAN,
+ transition=ToItemOnLoan,
+ trigger='checkout'
+ ),
+ dict(
+ dest=LoanState.CANCELLED,
+ trigger='cancel',
+ transition=ToCancelled
+ )
],
'ITEM_AT_DESK': [
dict(
@@ -2339,14 +2355,22 @@ def _(x):
transition=ItemAtDeskToItemOnLoan,
trigger='checkout'
),
- dict(dest=LoanState.CANCELLED, trigger='cancel', transition=ToCancelled)
+ dict(
+ dest=LoanState.CANCELLED,
+ trigger='cancel',
+ transition=ToCancelled
+ )
],
'ITEM_IN_TRANSIT_FOR_PICKUP': [
dict(
dest=LoanState.ITEM_AT_DESK,
trigger='receive'
),
- dict(dest=LoanState.CANCELLED, trigger='cancel', transition=ToCancelled)
+ dict(
+ dest=LoanState.CANCELLED,
+ trigger='cancel',
+ transition=ToCancelled
+ )
],
'ITEM_ON_LOAN': [
dict(
@@ -2355,11 +2379,21 @@ def _(x):
trigger='checkin',
assign_item=False
),
- dict(dest=LoanState.ITEM_IN_TRANSIT_TO_HOUSE,
- transition=ItemOnLoanToItemInTransitHouse, trigger='checkin'),
- dict(dest=LoanState.ITEM_ON_LOAN, transition=ItemOnLoanToItemOnLoan,
- trigger='extend'),
- dict(dest=LoanState.CANCELLED, trigger='cancel', transition=ToCancelled)
+ dict(
+ dest=LoanState.ITEM_IN_TRANSIT_TO_HOUSE,
+ transition=ItemOnLoanToItemInTransitHouse,
+ trigger='checkin'
+ ),
+ dict(
+ dest=LoanState.ITEM_ON_LOAN,
+ transition=ItemOnLoanToItemOnLoan,
+ trigger='extend'
+ ),
+ dict(
+ dest=LoanState.CANCELLED,
+ trigger='cancel',
+ transition=ToCancelled
+ )
],
'ITEM_IN_TRANSIT_TO_HOUSE': [
dict(
@@ -2368,7 +2402,11 @@ def _(x):
trigger='receive',
assign_item=False
),
- dict(dest=LoanState.CANCELLED, trigger='cancel', transition=ToCancelled)
+ dict(
+ dest=LoanState.CANCELLED,
+ trigger='cancel',
+ transition=ToCancelled
+ )
],
'ITEM_RETURNED': [],
'CANCELLED': [],
@@ -2455,7 +2493,8 @@ def _(x):
logout_handler='rero_ils.modules.selfcheck.api:selfcheck_logout',
system_status_handler='rero_ils.modules.selfcheck.api:system_status',
patron_handlers=dict(
- validate_patron='rero_ils.modules.selfcheck.api:validate_patron_account',
+ validate_patron=
+ 'rero_ils.modules.selfcheck.api:validate_patron_account',
authorize_patron='rero_ils.modules.selfcheck.api:authorize_patron',
enable_patron='rero_ils.modules.selfcheck.api:enable_patron',
patron_status='rero_ils.modules.selfcheck.api:patron_status',
diff --git a/rero_ils/dojson/utils.py b/rero_ils/dojson/utils.py
index 81f7da8879..954a6b2493 100644
--- a/rero_ils/dojson/utils.py
+++ b/rero_ils/dojson/utils.py
@@ -421,7 +421,7 @@ class ReroIlsOverdo(Overdo):
def __init__(self, bases=None, entry_point_group=None):
"""Reroilsoverdo init."""
- super(ReroIlsOverdo, self).__init__(
+ super().__init__(
bases=bases, entry_point_group=entry_point_group)
def do(self, blob, ignore_missing=True, exception_handlers=None):
@@ -431,7 +431,7 @@ def do(self, blob, ignore_missing=True, exception_handlers=None):
if self.leader:
self.record_type = self.leader[6] # LDR 06
self.bib_level = self.leader[7] # LDR 07
- result = super(ReroIlsOverdo, self).do(
+ result = super().do(
blob,
ignore_missing=ignore_missing,
exception_handlers=exception_handlers
@@ -786,7 +786,7 @@ class ReroIlsMarc21Overdo(ReroIlsOverdo):
def __init__(self, bases=None, entry_point_group=None):
"""Reroilsmarc21overdo init."""
- super(ReroIlsMarc21Overdo, self).__init__(
+ super().__init__(
bases=bases, entry_point_group=entry_point_group)
self.count = 0
self.extract_description_subfield = {
@@ -861,7 +861,7 @@ def do(self, blob, ignore_missing=True, exception_handlers=None):
# check presence of specific fields
self.has_field_490 = len(self.get_fields(tag='490')) > 0
self.has_field_580 = len(self.get_fields(tag='580')) > 0
- result = super(ReroIlsMarc21Overdo, self).do(
+ result = super().do(
blob,
ignore_missing=ignore_missing,
exception_handlers=exception_handlers
@@ -1162,7 +1162,7 @@ class ReroIlsUnimarcOverdo(ReroIlsOverdo):
def __init__(self, bases=None, entry_point_group=None):
"""Constructor."""
- super(ReroIlsUnimarcOverdo, self).__init__(
+ super().__init__(
bases=bases, entry_point_group=entry_point_group)
self.count = 0
self.extract_description_subfield = {
@@ -1204,7 +1204,7 @@ def do(self, blob, ignore_missing=True, exception_handlers=None):
if field_110_a and len(field_110_a[0]) > 0:
self.serial_type = field_110_a[0][0]
- result = super(ReroIlsUnimarcOverdo, self).do(
+ result = super().do(
blob,
ignore_missing=ignore_missing,
exception_handlers=exception_handlers
diff --git a/rero_ils/jsonschemas/utils.py b/rero_ils/jsonschemas/utils.py
index 26f222d2dc..297293d43d 100644
--- a/rero_ils/jsonschemas/utils.py
+++ b/rero_ils/jsonschemas/utils.py
@@ -47,5 +47,5 @@ def get_remote_json(self, uri, **kwargs):
if path:
result = current_jsonschemas.get_schema(path=path)
else:
- result = super(JsonLoader, self).get_remote_json(uri, **kwargs)
+ result = super().get_remote_json(uri, **kwargs)
return result
diff --git a/rero_ils/modules/acq_accounts/api.py b/rero_ils/modules/acq_accounts/api.py
index 667e05eecc..43a7a84757 100644
--- a/rero_ils/modules/acq_accounts/api.py
+++ b/rero_ils/modules/acq_accounts/api.py
@@ -108,5 +108,4 @@ def bulk_index(self, record_id_iterator):
:param record_id_iterator: Iterator yielding record UUIDs.
"""
- super(AcqAccountsIndexer, self).bulk_index(record_id_iterator,
- doc_type='acac')
+ super().bulk_index(record_id_iterator, doc_type='acac')
diff --git a/rero_ils/modules/acq_accounts/serializers.py b/rero_ils/modules/acq_accounts/serializers.py
index 5531ddb2e1..b355f94b43 100644
--- a/rero_ils/modules/acq_accounts/serializers.py
+++ b/rero_ils/modules/acq_accounts/serializers.py
@@ -36,9 +36,7 @@ def post_process_serialize_search(self, results, pid_fetcher):
lib_term['key'] = pid
lib_term['name'] = name
- return super(
- AcqAccountJSONSerializer, self).post_process_serialize_search(
- results, pid_fetcher)
+ return super().post_process_serialize_search(results, pid_fetcher)
json_acq_account = AcqAccountJSONSerializer(RecordSchemaJSONV1)
diff --git a/rero_ils/modules/acq_invoices/api.py b/rero_ils/modules/acq_invoices/api.py
index 49c30b99b3..f1ffbe98c2 100644
--- a/rero_ils/modules/acq_invoices/api.py
+++ b/rero_ils/modules/acq_invoices/api.py
@@ -78,14 +78,14 @@ def create(cls, data, id_=None, delete_pid=False,
"""Create acquisition invoice record."""
cls._acquisition_invoice_build_org_ref(data)
cls._build_total_amount_of_invoice(data)
- record = super(AcquisitionInvoice, cls).create(
+ record = super().create(
data, id_, delete_pid, dbcommit, reindex, **kwargs)
return record
def update(self, data, dbcommit=True, reindex=True):
"""Update Acquisition Invoice record."""
self._build_total_amount_of_invoice(data)
- super(AcquisitionInvoice, self).update(data, dbcommit, reindex)
+ super().update(data, dbcommit, reindex)
return self
@classmethod
@@ -156,8 +156,7 @@ def bulk_index(self, record_id_iterator):
:param record_id_iterator: Iterator yielding record UUIDs.
"""
- super(AcquisitionInvoicesIndexer, self).bulk_index(record_id_iterator,
- doc_type='acin')
+ super().bulk_index(record_id_iterator, doc_type='acin')
class InvoiceLine(object):
diff --git a/rero_ils/modules/acq_invoices/serializers.py b/rero_ils/modules/acq_invoices/serializers.py
index fd51c3fb00..edd075dd82 100644
--- a/rero_ils/modules/acq_invoices/serializers.py
+++ b/rero_ils/modules/acq_invoices/serializers.py
@@ -36,9 +36,7 @@ def post_process_serialize_search(self, results, pid_fetcher):
lib_term['key'] = pid
lib_term['name'] = name
- return super(
- AcquisitionInvoiceJSONSerializer,
- self).post_process_serialize_search(results, pid_fetcher)
+ return super().post_process_serialize_search(results, pid_fetcher)
json_acquisition_invoice = AcquisitionInvoiceJSONSerializer(RecordSchemaJSONV1)
diff --git a/rero_ils/modules/acq_order_lines/api.py b/rero_ils/modules/acq_order_lines/api.py
index 2245b6edf2..c6951a2edd 100644
--- a/rero_ils/modules/acq_order_lines/api.py
+++ b/rero_ils/modules/acq_order_lines/api.py
@@ -78,7 +78,7 @@ def create(cls, data, id_=None, delete_pid=False,
"""Create Acquisition Order Line record."""
cls._acq_order_line_build_org_ref(data)
cls._build_total_amount_for_order_line(data)
- record = super(AcqOrderLine, cls).create(
+ record = super().create(
data, id_, delete_pid, dbcommit, reindex, **kwargs)
return record
@@ -88,7 +88,7 @@ def update(self, data, dbcommit=True, reindex=True):
new_data.update(data)
self._acq_order_line_build_org_ref(new_data)
self._build_total_amount_for_order_line(new_data)
- super(AcqOrderLine, self).update(new_data, dbcommit, reindex)
+ super().update(new_data, dbcommit, reindex)
return self
@classmethod
@@ -146,14 +146,14 @@ class AcqOrderLinesIndexer(IlsRecordsIndexer):
def index(self, record):
"""Index an Acquisition Order Line and update total amount of order."""
- return_value = super(AcqOrderLinesIndexer, self).index(record)
+ return_value = super().index(record)
self._update_order_total_amount(record)
return return_value
def delete(self, record):
"""Delete a Acquisition Order Line and update total amount of order."""
- return_value = super(AcqOrderLinesIndexer, self).delete(record)
+ return_value = super().delete(record)
self._update_order_total_amount(record)
return return_value
@@ -172,5 +172,4 @@ def bulk_index(self, record_id_iterator):
:param record_id_iterator: Iterator yielding record UUIDs.
"""
- super(AcqOrderLinesIndexer, self).bulk_index(record_id_iterator,
- doc_type='acol')
+ super().bulk_index(record_id_iterator, doc_type='acol')
diff --git a/rero_ils/modules/acq_orders/api.py b/rero_ils/modules/acq_orders/api.py
index cd04c74e04..aaa229a354 100644
--- a/rero_ils/modules/acq_orders/api.py
+++ b/rero_ils/modules/acq_orders/api.py
@@ -77,14 +77,14 @@ def create(cls, data, id_=None, delete_pid=False,
dbcommit=False, reindex=False, **kwargs):
"""Create acquisition order record."""
cls._acq_order_build_org_ref(data)
- record = super(AcqOrder, cls).create(
+ record = super().create(
data, id_, delete_pid, dbcommit, reindex, **kwargs)
return record
def update(self, data, dbcommit=False, reindex=False):
"""Update acq order record."""
self._acq_order_build_org_ref(data)
- super(AcqOrder, self).update(data, dbcommit, reindex)
+ super().update(data, dbcommit, reindex)
return self
@classmethod
@@ -150,5 +150,4 @@ def bulk_index(self, record_id_iterator):
:param record_id_iterator: Iterator yielding record UUIDs.
"""
- super(AcqOrdersIndexer, self).bulk_index(record_id_iterator,
- doc_type='acor')
+ super().bulk_index(record_id_iterator, doc_type='acor')
diff --git a/rero_ils/modules/acq_orders/serializers.py b/rero_ils/modules/acq_orders/serializers.py
index bf08681dfc..01eee26821 100644
--- a/rero_ils/modules/acq_orders/serializers.py
+++ b/rero_ils/modules/acq_orders/serializers.py
@@ -36,9 +36,7 @@ def post_process_serialize_search(self, results, pid_fetcher):
lib_term['key'] = pid
lib_term['name'] = name
- return super(
- AcqOrderJSONSerializer, self).post_process_serialize_search(
- results, pid_fetcher)
+ return super().post_process_serialize_search(results, pid_fetcher)
json_acq_order = AcqOrderJSONSerializer(RecordSchemaJSONV1)
diff --git a/rero_ils/modules/api.py b/rero_ils/modules/api.py
index 7f75591c3b..4daf30f634 100644
--- a/rero_ils/modules/api.py
+++ b/rero_ils/modules/api.py
@@ -113,7 +113,7 @@ def get_indexer_class(cls):
indexer = IlsRecordsIndexer
return indexer
- def validate(self, **kwargs):
+ def _validate(self, **kwargs):
"""Validate record against schema.
extended validation per record class
@@ -121,8 +121,8 @@ def validate(self, **kwargs):
"""
if self.get('_draft'):
# No validation is needed for draft records
- return True
- super(IlsRecord, self).validate(**kwargs)
+ return self
+ json = super()._validate(**kwargs)
validation_message = self.extended_validation(**kwargs)
# We only like to run pids_exist_check if validation_message is True
# and not a string with error from extended_validation
@@ -140,6 +140,7 @@ def validate(self, **kwargs):
) or True
if validation_message is not True:
raise RecordValidationError(validation_message)
+ return json
def extended_validation(self, **kwargs):
"""Returns reasons for validation failures, otherwise True.
@@ -178,7 +179,7 @@ def create(cls, data, id_=None, delete_pid=False,
id_ = uuid4()
cls.minter(id_, data)
cls.pid_check = pidcheck
- record = super(IlsRecord, cls).create(data=data, id_=id_, **kwargs)
+ record = super().create(data=data, id_=id_, **kwargs)
if dbcommit:
record.dbcommit(reindex)
return record
@@ -192,7 +193,7 @@ def get_record_by_pid(cls, pid, with_deleted=False):
cls.provider.pid_type,
pid
)
- return super(IlsRecord, cls).get_record(
+ return super().get_record(
persistent_identifier.object_uuid,
with_deleted=with_deleted
)
@@ -231,7 +232,7 @@ def get_pid_by_id(cls, id):
@classmethod
def get_record_by_id(cls, id, with_deleted=False):
"""Get ils record by uuid."""
- return super(IlsRecord, cls).get_record(id, with_deleted=with_deleted)
+ return super().get_record(id, with_deleted=with_deleted)
@classmethod
def get_persistent_identifier(cls, id):
@@ -276,9 +277,11 @@ def delete(self, force=False, dbcommit=False, delindex=False):
if self.can_delete:
persistent_identifier = self.get_persistent_identifier(self.id)
persistent_identifier.delete()
- self = super(IlsRecord, self).delete(force=force)
+ if force:
+ db.session.delete(persistent_identifier)
+ self = super().delete(force=force)
if dbcommit:
- self.dbcommit()
+ db.session.commit()
if delindex:
self.delete_from_index()
return self
@@ -298,11 +301,11 @@ def update(self, data, dbcommit=False, reindex=False):
new_pid=pid
)
)
- super(IlsRecord, self).update(data)
+ record = self
+ super().update(data)
if dbcommit:
- self = super(IlsRecord, self).commit()
- self.dbcommit(reindex)
- return self
+ record = self.dbcommit(reindex)
+ return record
def replace(self, data, dbcommit=False, reindex=False):
"""Replace data in record."""
@@ -321,7 +324,7 @@ def revert(self, revision_id, reindex=False):
persistent_identifier = self.get_persistent_identifier(self.id)
if persistent_identifier.is_deleted():
raise IlsRecordError.Deleted()
- self = super(IlsRecord, self).revert(revision_id=revision_id)
+ self = super().revert(revision_id=revision_id)
if reindex:
self.reindex(forceindex=False)
return self
@@ -341,9 +344,11 @@ def undelete(self, reindex=False):
def dbcommit(self, reindex=False, forceindex=False):
"""Commit changes to db."""
+ self = super().commit()
db.session.commit()
if reindex:
self.reindex(forceindex=forceindex)
+ return self
def reindex(self, forceindex=False):
"""Reindex record."""
@@ -404,7 +409,7 @@ class IlsRecordsIndexer(RecordIndexer):
def index(self, record):
"""Indexing a record."""
- return_value = super(IlsRecordsIndexer, self).index(record)
+ return_value = super().index(record)
index_name, doc_type = current_record_to_index(record)
# TODO: Do we need to flush everytime the ES index?
# Tests depends on this at the moment.
@@ -416,7 +421,7 @@ def delete(self, record):
:param record: Record instance.
"""
- return_value = super(IlsRecordsIndexer, self).delete(record)
+ return_value = super().delete(record)
index_name, doc_type = current_record_to_index(record)
current_search.flush_and_refresh(index_name)
return return_value
diff --git a/rero_ils/modules/budgets/api.py b/rero_ils/modules/budgets/api.py
index 826914ee29..b2213647b8 100644
--- a/rero_ils/modules/budgets/api.py
+++ b/rero_ils/modules/budgets/api.py
@@ -111,5 +111,4 @@ def bulk_index(self, record_id_iterator):
:param record_id_iterator: Iterator yielding record UUIDs.
"""
- super(BudgetsIndexer, self).bulk_index(record_id_iterator,
- doc_type='budg')
+ super().bulk_index(record_id_iterator, doc_type='budg')
diff --git a/rero_ils/modules/circ_policies/api.py b/rero_ils/modules/circ_policies/api.py
index 205288e6c4..62574f4b27 100644
--- a/rero_ils/modules/circ_policies/api.py
+++ b/rero_ils/modules/circ_policies/api.py
@@ -313,5 +313,4 @@ def bulk_index(self, record_id_iterator):
:param record_id_iterator: Iterator yielding record UUIDs.
"""
- super(CircPoliciesIndexer, self).bulk_index(record_id_iterator,
- doc_type='cipo')
+ super().bulk_index(record_id_iterator, doc_type='cipo')
diff --git a/rero_ils/modules/cli.py b/rero_ils/modules/cli.py
index cb9d7c4fe9..aac5b33e8d 100644
--- a/rero_ils/modules/cli.py
+++ b/rero_ils/modules/cli.py
@@ -327,7 +327,7 @@ def create(infile, append, reindex, dbcommit, commit, verbose, debug, schema,
# load everything in memory (faster, bad memory management)
records = json.load(infile)
count = 0
- for count, record in enumerate(records):
+ for count, record in enumerate(records, 1):
if schema:
record['$schema'] = schema
try:
diff --git a/rero_ils/modules/collections/api.py b/rero_ils/modules/collections/api.py
index 684ded3162..89c77e28d9 100644
--- a/rero_ils/modules/collections/api.py
+++ b/rero_ils/modules/collections/api.py
@@ -84,5 +84,4 @@ def bulk_index(self, record_id_iterator):
:param record_id_iterator: Iterator yielding record UUIDs.
"""
- super(CollectionsIndexer, self).bulk_index(record_id_iterator,
- doc_type='coll')
+ super().bulk_index(record_id_iterator, doc_type='coll')
diff --git a/rero_ils/modules/collections/serializers.py b/rero_ils/modules/collections/serializers.py
index c8e4764a00..bb138904a2 100644
--- a/rero_ils/modules/collections/serializers.py
+++ b/rero_ils/modules/collections/serializers.py
@@ -38,9 +38,7 @@ def post_process_serialize_search(self, results, pid_fetcher):
lib_term['name'] = name
lib_buckets.append(lib_term)
- return super(
- CollectionJSONSerializer, self).post_process_serialize_search(
- results, pid_fetcher)
+ return super().post_process_serialize_search(results, pid_fetcher)
json_coll = CollectionJSONSerializer(RecordSchemaJSONV1)
diff --git a/rero_ils/modules/contributions/api.py b/rero_ils/modules/contributions/api.py
index 55dd22767b..8fda3e6627 100644
--- a/rero_ils/modules/contributions/api.py
+++ b/rero_ils/modules/contributions/api.py
@@ -288,5 +288,4 @@ def bulk_index(self, record_id_iterator):
:param record_id_iterator: Iterator yielding record UUIDs.
"""
- super(ContributionsIndexer, self).bulk_index(record_id_iterator,
- doc_type='cont')
+ super().bulk_index(record_id_iterator, doc_type='cont')
diff --git a/rero_ils/modules/contributions/templates/rero_ils/detailed_view_contribution.html b/rero_ils/modules/contributions/templates/rero_ils/detailed_view_contribution.html
index b6d40cf492..d44ac1ffa7 100644
--- a/rero_ils/modules/contributions/templates/rero_ils/detailed_view_contribution.html
+++ b/rero_ils/modules/contributions/templates/rero_ils/detailed_view_contribution.html
@@ -80,10 +80,3 @@ {{ _('Documents') }}
{% endif %}
{% endblock body %}
-
-{%- block javascript %}
-{{ super() }}
-{% assets "rero_ils_contributions_detailed_js" %}
-
-{% endassets %}
-{% endblock javascript %}
diff --git a/rero_ils/modules/documents/api.py b/rero_ils/modules/documents/api.py
index 57d1f502c7..bd9eb4fe97 100644
--- a/rero_ils/modules/documents/api.py
+++ b/rero_ils/modules/documents/api.py
@@ -196,7 +196,7 @@ def post_process(cls, dump):
def dumps(self, **kwargs):
"""Return pure Python dictionary with record metadata."""
- return self.post_process(super(Document, self).dumps(**kwargs))
+ return self.post_process(super().dumps(**kwargs))
def index_contributions(self, bulk=False):
"""Index all attached contributions."""
@@ -257,7 +257,7 @@ def replace_refs(self):
contribution, online = Contribution.get_record_by_ref(ref)
if contribution:
contributions[idx]['agent'] = contribution
- return super(Document, self).replace_refs()
+ return super().replace_refs()
class DocumentsIndexer(IlsRecordsIndexer):
@@ -267,7 +267,7 @@ class DocumentsIndexer(IlsRecordsIndexer):
def index(self, record):
"""Index an document."""
- return_value = super(DocumentsIndexer, self).index(record)
+ return_value = super().index(record)
record.index_contributions()
return return_value
@@ -276,5 +276,4 @@ def bulk_index(self, record_id_iterator):
:param record_id_iterator: Iterator yielding record UUIDs.
"""
- super(DocumentsIndexer, self).bulk_index(record_id_iterator,
- doc_type='doc')
+ super().bulk_index(record_id_iterator, doc_type='doc')
diff --git a/rero_ils/modules/documents/serializers.py b/rero_ils/modules/documents/serializers.py
index f1ec6025a5..3aa6912988 100644
--- a/rero_ils/modules/documents/serializers.py
+++ b/rero_ils/modules/documents/serializers.py
@@ -64,7 +64,7 @@ def preprocess_record(self, pid, record, links_factory=None, **kwargs):
contributions = create_contributions(rec.get('contribution', []))
if contributions:
rec['contribution'] = contributions
- return super(JSONSerializer, self).preprocess_record(
+ return super().preprocess_record(
pid=pid, record=rec, links_factory=links_factory, kwargs=kwargs)
def post_process_serialize_search(self, results, pid_fetcher):
diff --git a/rero_ils/modules/documents/templates/rero_ils/detailed_view_documents.html b/rero_ils/modules/documents/templates/rero_ils/detailed_view_documents.html
index b4ca0d8fab..fc62fe11bb 100644
--- a/rero_ils/modules/documents/templates/rero_ils/detailed_view_documents.html
+++ b/rero_ils/modules/documents/templates/rero_ils/detailed_view_documents.html
@@ -190,10 +190,3 @@ {{ _('Export Formats') }}:
{%- endblock record_body %}
{%- endblock body %}
-
-{%- block javascript %}
-{{ super() }}
-{% assets "rero_ils_documents_detailed_js" %}
-
-{% endassets %}
-{% endblock javascript %}
diff --git a/rero_ils/modules/holdings/api.py b/rero_ils/modules/holdings/api.py
index c83b912cd6..a9eb179cb5 100644
--- a/rero_ils/modules/holdings/api.py
+++ b/rero_ils/modules/holdings/api.py
@@ -33,7 +33,7 @@
from rero_ils.modules.items.models import ItemIssueStatus
-from .models import HoldingIdentifier
+from .models import HoldingIdentifier, HoldingMetadata
from ..api import IlsRecord, IlsRecordsIndexer
from ..documents.api import Document
from ..errors import MissingRequiredParameterError, RegularReceiveNotAllowed
@@ -89,7 +89,7 @@ class Holding(IlsRecord):
minter = holding_id_minter
fetcher = holding_id_fetcher
provider = HoldingProvider
- # model_cls = HoldingMetadata
+ model_cls = HoldingMetadata
pids_exist_check = {
'required': {
'doc': 'document',
@@ -146,6 +146,7 @@ def extended_validation(self, **kwargs):
if not document:
return _('Document does not exist {pid}.'.format(pid=document_pid))
is_serial = self.holdings_type == 'serial'
+
if is_serial:
patterns = self.get('patterns', {})
if patterns and \
@@ -176,7 +177,6 @@ def extended_validation(self, **kwargs):
note_types = [note.get('type') for note in self.get('notes', [])]
if len(note_types) != len(set(note_types)):
return _('Can not have multiple notes of same type.')
-
return True
@property
@@ -599,28 +599,20 @@ def receive_regular_issue(self, item=None, dbcommit=False, reindex=False):
data = self._prepare_issue_record(
item=item, issue_display=issue_display,
expected_date=expected_date)
-
+ pid = self.pid
issue = Item.create(data=data, dbcommit=dbcommit, reindex=reindex)
-
return issue
-
def get_holding_pid_by_doc_location_item_type(
document_pid, location_pid, item_type_pid, holdings_type='standard'):
"""Returns standard holding pid for document/location/item type."""
- result = HoldingsSearch().filter(
- 'term',
- document__pid=document_pid
- ).filter(
- 'term',
- holdings_type=holdings_type
- ).filter(
- 'term',
- circulation_category__pid=item_type_pid
- ).filter(
- 'term',
- location__pid=location_pid
- ).source('pid').scan()
+ result = HoldingsSearch() \
+ .filter('term', document__pid=document_pid) \
+ .filter('term', holdings_type=holdings_type) \
+ .filter('term', circulation_category__pid=item_type_pid) \
+ .filter('term', location__pid=location_pid) \
+ .source('pid') \
+ .scan()
try:
return next(result).pid
except StopIteration:
@@ -716,7 +708,7 @@ class HoldingsIndexer(IlsRecordsIndexer):
def index(self, record):
"""Indexing a holding record."""
- return_value = super(HoldingsIndexer, self).index(record)
+ return_value = super().index(record)
# current_search.flush_and_refresh(HoldingsSearch.Meta.index)
return return_value
@@ -725,5 +717,4 @@ def bulk_index(self, record_id_iterator):
:param record_id_iterator: Iterator yielding record UUIDs.
"""
- super(HoldingsIndexer, self).bulk_index(record_id_iterator,
- doc_type='hold')
+ super().bulk_index(record_id_iterator, doc_type='hold')
diff --git a/rero_ils/modules/holdings/cli.py b/rero_ils/modules/holdings/cli.py
index f5dc6bd892..9ad52b49f2 100644
--- a/rero_ils/modules/holdings/cli.py
+++ b/rero_ils/modules/holdings/cli.py
@@ -90,6 +90,7 @@ def create_issues_from_holding(holding, min=3, max=9):
:param holding: the holding record.
:param min, max: the min and max range to randomly create number of issues.
"""
+ count = 0
for issue_number in range(0, random.randint(min, max)):
# prepare some fields for the issue to ensure a variable recv dates.
issue_display, expected_date = holding._get_next_issue_display_text(
@@ -101,6 +102,8 @@ def create_issues_from_holding(holding, min=3, max=9):
}
holding.receive_regular_issue(item=item, dbcommit=True, reindex=True)
holding = Holding.get_record_by_pid(holding.pid)
+ count += 1
+ return count
@click.command('create_patterns')
@@ -160,18 +163,22 @@ def create_patterns(infile, verbose, debug, lazy):
vendor_pid=vendor_pid,
patterns=patterns)
# create minimum 3 and max 9 received issues for this holdings
- create_issues_from_holding(holdings_record)
- text = '> created (& between 3 and 9 rcvd issues) for holdings_pid'
+ count = create_issues_from_holding(holding=holdings_record,
+ min=3, max=9)
+ text = '> created {count} received issues for holdings: '.format(
+ count=count
+ )
click.echo(
'{ptr_str}{template}{hld_str} {holding} {doc_str} {document}'
.format(
ptr_str='Pattern <',
- hld_str=text,
- doc_str='and document_pid',
template=template_name,
+ hld_str=text,
holding=holdings_record.pid,
+ doc_str='and document: ',
document=document_pid
- ))
+ )
+ )
record_index = record_index + 1
# create some late issues.
process_late_claimed_issues(dbcommit=True, reindex=True)
diff --git a/rero_ils/modules/ill_requests/api.py b/rero_ils/modules/ill_requests/api.py
index f96ea42628..aeb5ccfa32 100644
--- a/rero_ils/modules/ill_requests/api.py
+++ b/rero_ils/modules/ill_requests/api.py
@@ -150,5 +150,4 @@ def bulk_index(self, record_id_iterator):
:param record_id_iterator: Iterator yielding record UUIDs.
"""
- super(ILLRequestsIndexer, self).bulk_index(record_id_iterator,
- doc_type='illr')
+ super().bulk_index(record_id_iterator, doc_type='illr')
diff --git a/rero_ils/modules/ill_requests/templates/rero_ils/ill_request_form.html b/rero_ils/modules/ill_requests/templates/rero_ils/ill_request_form.html
index 35eee7706f..e029e6a2f1 100644
--- a/rero_ils/modules/ill_requests/templates/rero_ils/ill_request_form.html
+++ b/rero_ils/modules/ill_requests/templates/rero_ils/ill_request_form.html
@@ -67,10 +67,3 @@ {{ _('Request information') }}
{%- endblock body %}
-
-{%- block javascript %}
- {{ super() }}
- {%- assets "rero_ils_ill_request_form_js" %}
-
- {%- endassets %}
-{% endblock javascript %}
diff --git a/rero_ils/modules/imports/views.py b/rero_ils/modules/imports/views.py
index 4727edb9af..c8b1d7d35f 100644
--- a/rero_ils/modules/imports/views.py
+++ b/rero_ils/modules/imports/views.py
@@ -42,7 +42,7 @@ def __init__(self, **kwargs):
"""Init."""
self.import_class = kwargs.pop('import_class')
self.import_size = kwargs.pop('import_size', 50)
- super(ImportsListResource, self).__init__(
+ super().__init__(
method_serializers={
'GET': {
'application/json': json_v1_import_search,
@@ -111,7 +111,7 @@ class ImportsResource(ContentNegotiatedMethodView):
def __init__(self, **kwargs):
"""Init."""
self.import_class = kwargs.pop('import_class')
- super(ImportsResource, self).__init__(
+ super().__init__(
method_serializers={
'GET': {
'application/json': json_v1_import_record,
diff --git a/rero_ils/modules/item_types/api.py b/rero_ils/modules/item_types/api.py
index f2f0b82871..2cf4b7dc58 100644
--- a/rero_ils/modules/item_types/api.py
+++ b/rero_ils/modules/item_types/api.py
@@ -168,5 +168,4 @@ def bulk_index(self, record_id_iterator):
:param record_id_iterator: Iterator yielding record UUIDs.
"""
- super(ItemTypesIndexer, self).bulk_index(record_id_iterator,
- doc_type='itty')
+ super().bulk_index(record_id_iterator, doc_type='itty')
diff --git a/rero_ils/modules/items/api/api.py b/rero_ils/modules/items/api/api.py
index 26e372c281..6ccb0a37ec 100644
--- a/rero_ils/modules/items/api/api.py
+++ b/rero_ils/modules/items/api/api.py
@@ -136,7 +136,7 @@ def reasons_not_to_delete(self):
def dumps(self, **kwargs):
"""Return pure Python dictionary with record metadata."""
- dump = super(Item, self).dumps(**kwargs)
+ dump = super().dumps(**kwargs)
dump['available'] = self.available
return dump
@@ -184,7 +184,7 @@ def index(self, record):
if items_search.total.value:
holding_pid = items_search[0].holding.pid
- return_value = super(ItemsIndexer, self).index(record)
+ return_value = super().index(record)
document_pid = record.replace_refs()['document']['pid']
document = Document.get_record_by_pid(document_pid)
@@ -210,7 +210,7 @@ def delete(self, record):
"""
from ...holdings.api import Holding
- return_value = super(ItemsIndexer, self).delete(record)
+ return_value = super().delete(record)
rec_with_refs = record.replace_refs()
document_pid = rec_with_refs['document']['pid']
document = Document.get_record_by_pid(document_pid)
@@ -233,5 +233,4 @@ def bulk_index(self, record_id_iterator):
:param record_id_iterator: Iterator yielding record UUIDs.
"""
- super(ItemsIndexer, self).bulk_index(record_id_iterator,
- doc_type='item')
+ super().bulk_index(record_id_iterator, doc_type='item')
diff --git a/rero_ils/modules/items/api/circulation.py b/rero_ils/modules/items/api/circulation.py
index 14e86e6105..8425cf959e 100644
--- a/rero_ils/modules/items/api/circulation.py
+++ b/rero_ils/modules/items/api/circulation.py
@@ -1150,7 +1150,7 @@ def status_update(
if item['status'] != ItemStatus.MISSING and on_shelf is True:
item['status'] = ItemStatus.ON_SHELF
if dbcommit:
- item.commit()
+ # item.commit()
item.dbcommit(reindex=True, forceindex=True)
def item_has_active_loan_or_request(self):
diff --git a/rero_ils/modules/items/api/issue.py b/rero_ils/modules/items/api/issue.py
index 17ddeb6a6a..43eb529b63 100644
--- a/rero_ils/modules/items/api/issue.py
+++ b/rero_ils/modules/items/api/issue.py
@@ -149,7 +149,7 @@ def receive_next_late_expected_issues(cls, dbcommit=False, reindex=False):
issue['issue']['status'] = ItemIssueStatus.LATE
issue = issue.update(issue, dbcommit=dbcommit, reindex=reindex)
created_issues += 1
- except Execption as e:
+ except Execption as err:
current_app.logger.error(
'Can not receive next late expected issue for serial '
'holding: {pid}'.format(
@@ -249,18 +249,18 @@ def create_first_and_next_claims(
max_number_of_claims > issue.claims_count:
if issue.claims_count == 0 and \
holding.days_before_first_claim:
- modified_issues = cls._process_issue_claim(
- issue, issue.claims_count,
- holding.days_before_first_claim,
- modified_issues, dbcommit=dbcommit,
- reindex=reindex)
+ claims_days = holding.days_before_first_claim
elif issue.claims_count and holding.days_before_next_claim:
- modified_issues = cls._process_issue_claim(
- issue, issue.claims_count,
- holding.days_before_next_claim,
- modified_issues, dbcommit=dbcommit,
- reindex=reindex)
- except Execption as e:
+ claims_days = holding.days_before_next_claim
+ modified_issues = cls._process_issue_claim(
+ issue=issue,
+ claims_count=issue.claims_count,
+ claims_days=claims_days,
+ modified_issues=modified_issues,
+ dbcommit=dbcommit,
+ reindex=reindex
+ )
+ except Execption as err:
current_app.logger.error(
'Can not create {claim_type} claim for issue: {pid}'
.format(claim_type=claim_type, pid=issue.pid)
diff --git a/rero_ils/modules/items/api/record.py b/rero_ils/modules/items/api/record.py
index 387c058d43..b7ea0f6fd2 100644
--- a/rero_ils/modules/items/api/record.py
+++ b/rero_ils/modules/items/api/record.py
@@ -80,7 +80,7 @@ def create(cls, data, id_=None, delete_pid=False,
"""Create item record."""
cls._item_build_org_ref(data)
data = cls._prepare_item_record(data=data, mode='create')
- record = super(ItemRecord, cls).create(
+ record = super().create(
data, id_, delete_pid, dbcommit, reindex, **kwargs)
cls._increment_next_prediction_for_holding(
record, dbcommit=dbcommit, reindex=reindex)
@@ -90,13 +90,13 @@ def update(self, data, dbcommit=False, reindex=False):
"""Update an item record.
:param data: The record to update.
- :param dbcommit: boolean to commit the record to the database or not.
+ :param dbcommit: boolean to the record to the database or not.
:param reindex: boolean to reindex the record or not.
:return: The updated item record.
"""
data = self._set_issue_status_date(data)
data = self._prepare_item_record(data=data, mode='update')
- super(ItemRecord, self).update(data, dbcommit, reindex)
+ super().update(data, dbcommit, reindex)
# TODO: some item updates do not require holding re-linking
return self
@@ -111,7 +111,7 @@ def replace(self, data, dbcommit=False, reindex=False):
"""
# update item record with a generated barcode if does not exist
data = generate_item_barcode(data=data)
- super(ItemRecord, self).replace(data, dbcommit, reindex)
+ super().replace(data, dbcommit, reindex)
return self
@classmethod
@@ -142,7 +142,8 @@ def _increment_next_prediction_for_holding(
holding = Holding.get_record_by_pid(item.holding_pid)
holding.update(data=updated_holding,
dbcommit=dbcommit, reindex=reindex)
- holding.commit()
+ holding = holding.update(data=updated_holding, dbcommit=dbcommit,
+ reindex=reindex)
@classmethod
def _item_build_org_ref(cls, data):
diff --git a/rero_ils/modules/items/serializers/json.py b/rero_ils/modules/items/serializers/json.py
index bea24a5023..ec39df130f 100644
--- a/rero_ils/modules/items/serializers/json.py
+++ b/rero_ils/modules/items/serializers/json.py
@@ -71,6 +71,4 @@ def post_process_serialize_search(self, results, pid_fetcher):
vendor = Vendor.get_record_by_pid(vendor_term.get('key'))
vendor_term['name'] = vendor.get('name')
- return super(
- ItemsJSONSerializer, self).post_process_serialize_search(
- results, pid_fetcher)
+ return super().post_process_serialize_search(results, pid_fetcher)
diff --git a/rero_ils/modules/libraries/api.py b/rero_ils/modules/libraries/api.py
index 789136e81b..f66a4975eb 100644
--- a/rero_ils/modules/libraries/api.py
+++ b/rero_ils/modules/libraries/api.py
@@ -336,5 +336,4 @@ def bulk_index(self, record_id_iterator):
:param record_id_iterator: Iterator yielding record UUIDs.
"""
- super(LibrariesIndexer, self).bulk_index(record_id_iterator,
- doc_type='lib')
+ super().bulk_index(record_id_iterator, gdoc_type='lib')
diff --git a/rero_ils/modules/loans/api.py b/rero_ils/modules/loans/api.py
index 4f8b1a7617..d1fb04a4e2 100644
--- a/rero_ils/modules/loans/api.py
+++ b/rero_ils/modules/loans/api.py
@@ -122,7 +122,7 @@ class Loan(IlsRecord):
def __init__(self, data, model=None):
"""Loan init."""
self['state'] = current_app.config['CIRCULATION_LOAN_INITIAL_STATE']
- super(Loan, self).__init__(data, model)
+ super().__init__(data, model)
def action_required_params(self, action=None):
"""List of required parameters for circulation actions."""
@@ -206,6 +206,8 @@ def create(cls, data, id_=None, delete_pid=True,
data['to_anonymize'] = \
cls.can_anonymize(loan_data=data) and not data.get('to_anonymize')
+ if not data.get('state'):
+ data['state'] = LoanState.CREATED
record = super(Loan, cls).create(
data=data, id_=id_, delete_pid=delete_pid, dbcommit=dbcommit,
reindex=reindex, **kwargs)
@@ -228,7 +230,7 @@ def anonymize(self, loan, dbcommit=False, reindex=False):
:param reindex - index the record after the creation.
"""
loan['to_anonymize'] = True
- super(Loan, self).update(loan, dbcommit, reindex)
+ super().update(loan, dbcommit, reindex)
return self
def date_fields2datetime(self):
@@ -948,5 +950,4 @@ def bulk_index(self, record_id_iterator):
:param record_id_iterator: Iterator yielding record UUIDs.
"""
- super(LoansIndexer, self).bulk_index(record_id_iterator,
- doc_type='loan')
+ super().bulk_index(record_id_iterator, doc_type='loan')
diff --git a/rero_ils/modules/local_fields/api.py b/rero_ils/modules/local_fields/api.py
index 4ae860e188..e96064b099 100644
--- a/rero_ils/modules/local_fields/api.py
+++ b/rero_ils/modules/local_fields/api.py
@@ -113,7 +113,7 @@ def index(self, record):
:param record: Record instance.
"""
- return_value = super(LocalFieldsIndexer, self).index(record)
+ return_value = super().index(record)
resource = extracted_data_from_ref(record['parent']['$ref'], 'record')
resource.reindex()
return return_value
@@ -123,7 +123,7 @@ def delete(self, record):
:param record: Record instance.
"""
- return_value = super(LocalFieldsIndexer, self).delete(record)
+ return_value = super().delete(record)
resource = extracted_data_from_ref(record['parent']['$ref'], 'record')
resource.reindex()
return return_value
@@ -133,5 +133,4 @@ def bulk_index(self, record_id_iterator):
:param record_id_iterator: Iterator yielding record UUIDs.
"""
- super(LocalFieldsIndexer, self).bulk_index(
- record_id_iterator, doc_type='lofi')
+ super().bulk_index(record_id_iterator, doc_type='lofi')
diff --git a/rero_ils/modules/locations/api.py b/rero_ils/modules/locations/api.py
index 54beae5a30..9c241cf65e 100644
--- a/rero_ils/modules/locations/api.py
+++ b/rero_ils/modules/locations/api.py
@@ -187,5 +187,4 @@ def bulk_index(self, record_id_iterator):
:param record_id_iterator: Iterator yielding record UUIDs.
"""
- super(LocationsIndexer, self).bulk_index(record_id_iterator,
- doc_type='loc')
+ super().bulk_index(record_id_iterator, doc_type='loc')
diff --git a/rero_ils/modules/minters.py b/rero_ils/modules/minters.py
index b866a2a465..ae707563f2 100644
--- a/rero_ils/modules/minters.py
+++ b/rero_ils/modules/minters.py
@@ -28,6 +28,6 @@ def id_minter(record_uuid, data, provider, pid_key='pid', object_type='rec'):
pid_value=data.get(pid_key)
)
- pid = provider.pid
- data[pid_key] = pid.pid_value
- return pid
+ persistent_identifier = provider.pid
+ data[pid_key] = persistent_identifier.pid_value
+ return persistent_identifier
diff --git a/rero_ils/modules/notifications/api.py b/rero_ils/modules/notifications/api.py
index 4b9834c9dd..a842a564a4 100644
--- a/rero_ils/modules/notifications/api.py
+++ b/rero_ils/modules/notifications/api.py
@@ -91,7 +91,7 @@ class Notification(IlsRecord):
def create(cls, data, id_=None, delete_pid=False,
dbcommit=False, reindex=False, **kwargs):
"""Create notification record."""
- record = super(Notification, cls).create(
+ record = super().create(
data, id_, delete_pid, dbcommit, reindex, **kwargs)
PatronTransaction.create_patron_transaction_from_notification(
notification=record, dbcommit=dbcommit, reindex=reindex,
@@ -344,8 +344,7 @@ def bulk_index(self, record_id_iterator):
:param record_id_iterator: Iterator yielding record UUIDs.
"""
- super(NotificationsIndexer, self).bulk_index(record_id_iterator,
- doc_type='notif')
+ super().bulk_index(record_id_iterator, doc_type='notif')
def get_availability_notification(loan):
diff --git a/rero_ils/modules/organisations/api.py b/rero_ils/modules/organisations/api.py
index bf80ddf0ce..7a83aa7e2b 100644
--- a/rero_ils/modules/organisations/api.py
+++ b/rero_ils/modules/organisations/api.py
@@ -207,5 +207,4 @@ def bulk_index(self, record_id_iterator):
:param record_id_iterator: Iterator yielding record UUIDs.
"""
- super(OrganisationsIndexer, self).bulk_index(record_id_iterator,
- doc_type='org')
+ super().bulk_index(record_id_iterator, doc_type='org')
diff --git a/rero_ils/modules/patron_transaction_events/api.py b/rero_ils/modules/patron_transaction_events/api.py
index c4fdd6ab9c..f7894ea5f6 100644
--- a/rero_ils/modules/patron_transaction_events/api.py
+++ b/rero_ils/modules/patron_transaction_events/api.py
@@ -82,16 +82,19 @@ def create(cls, data, id_=None, delete_pid=False,
"""Create patron transaction event record."""
if 'creation_date' not in data:
data['creation_date'] = datetime.now(timezone.utc).isoformat()
- record = super(PatronTransactionEvent, cls).create(
+ record = super().create(
data, id_, delete_pid, dbcommit, reindex, **kwargs)
if update_parent:
cls.update_parent_patron_transaction(record)
return record
- def update(self, data, dbcommit=False, reindex=False):
+ # TODO: do we have to set dbcomit and reindex to True so the
+ # of the rest api for create and update works properly ?
+ # For PatronTransaction we have to set it to True for the tests.
+ def update(self, data, dbcommit=True, reindex=True):
"""Update data for record."""
- super(PatronTransactionEvent, self).update(data, dbcommit, reindex)
- return self
+ record = super().update(data=data, dbcommit=dbcommit, reindex=reindex)
+ return record
@classmethod
def create_event_from_patron_transaction(
@@ -225,6 +228,4 @@ def bulk_index(self, record_id_iterator):
:param record_id_iterator: Iterator yielding record UUIDs.
"""
- super(PatronTransactionEventsIndexer, self).bulk_index(
- record_id_iterator,
- doc_type='ptre')
+ super().bulk_index(record_id_iterator, doc_type='ptre')
diff --git a/rero_ils/modules/patron_transactions/api.py b/rero_ils/modules/patron_transactions/api.py
index 892f1b1a62..03cf1db58a 100644
--- a/rero_ils/modules/patron_transactions/api.py
+++ b/rero_ils/modules/patron_transactions/api.py
@@ -82,13 +82,21 @@ class PatronTransaction(IlsRecord):
def create(cls, data, id_=None, delete_pid=False,
dbcommit=False, reindex=False, **kwargs):
"""Create patron transaction record."""
- record = super(PatronTransaction, cls).create(
+ record = super().create(
data, id_, delete_pid, dbcommit, reindex, **kwargs)
PatronTransactionEvent.create_event_from_patron_transaction(
patron_transaction=record, dbcommit=dbcommit, reindex=reindex,
delete_pid=delete_pid, update_parent=False)
return record
+ # TODO: do we have to set dbcomit and reindex to True so the
+ # of the rest api for create and update works properly ?
+ # For PatronTransaction we have to set it to True for the tests.
+ def update(self, data, dbcommit=True, reindex=True):
+ """Update data for record."""
+ record = super().update(data=data, dbcommit=dbcommit, reindex=reindex)
+ return record
+
@classmethod
def _build_transaction_query(cls, patron_pid, status=None, types=None):
"""Private function to build a transaction query linked to a patron.
@@ -368,5 +376,4 @@ def bulk_index(self, record_id_iterator):
:param record_id_iterator: Iterator yielding record UUIDs.
"""
- super(PatronTransactionsIndexer, self).bulk_index(record_id_iterator,
- doc_type='pttr')
+ super().bulk_index(record_id_iterator, doc_type='pttr')
diff --git a/rero_ils/modules/patron_types/api.py b/rero_ils/modules/patron_types/api.py
index aa1e22b56f..94b5eb8b99 100644
--- a/rero_ils/modules/patron_types/api.py
+++ b/rero_ils/modules/patron_types/api.py
@@ -365,5 +365,4 @@ def bulk_index(self, record_id_iterator):
:param record_id_iterator: Iterator yielding record UUIDs.
"""
- super(PatronTypesIndexer, self).bulk_index(record_id_iterator,
- doc_type='ptty')
+ super().bulk_index(record_id_iterator, doc_type='ptty')
diff --git a/rero_ils/modules/patrons/api.py b/rero_ils/modules/patrons/api.py
index d4df7b6d35..1a2f20d077 100644
--- a/rero_ils/modules/patrons/api.py
+++ b/rero_ils/modules/patrons/api.py
@@ -101,13 +101,13 @@ class Patron(IlsRecord):
available_roles = [ROLE_SYSTEM_LIBRARIAN, ROLE_LIBRARIAN, ROLE_PATRON]
- def validate(self, **kwargs):
+ def _validate(self, **kwargs):
"""Validate record against schema.
extended validation per record class
and test of pid existence.
"""
- super(Patron, self).validate(**kwargs)
+ json = super()._validate(**kwargs)
# We only like to run pids_exist_check if validation_message is True
# and not a string with error from extended_validation
validation_message = True
@@ -156,6 +156,7 @@ def validate(self, **kwargs):
self._validate_emails()
if validation_message is not True:
raise RecordValidationError(validation_message)
+ return json
def _validate_emails(self):
"""Check if emails are required.
@@ -189,12 +190,12 @@ def create(cls, data, id_=None, delete_pid=False,
# synchronize the rero id user profile data
user = cls.sync_user_and_profile(data)
try:
- record = super(Patron, cls).create(
+ record = super().create(
data, id_, delete_pid, dbcommit, reindex, **kwargs)
record._update_roles()
- except Exception as e:
+ except Exception as err:
db.session.rollback()
- raise e
+ raise err
if user:
# send the reset password notification
if (email_notification and data.get('email')):
@@ -210,7 +211,7 @@ def update(self, data, dbcommit=False, reindex=False):
data = dict(self, **data)
old_keep_history = self.keep_history
self.sync_user_and_profile(data)
- super(Patron, self).update(data, dbcommit, reindex)
+ super().update(data, dbcommit, reindex)
self._update_roles()
Patron._anonymize_loans(
patron_data=data, old_keep_history=old_keep_history)
@@ -234,7 +235,7 @@ def _anonymize_loans(
def delete(self, force=False, delindex=False):
"""Delete record and persistent identifier."""
self._remove_roles()
- super(Patron, self).delete(force, delindex)
+ super().delete(force, delindex)
return self
@classmethod
@@ -270,7 +271,7 @@ def update_from_profile(cls, profile):
else:
# the email has been updated in the user profile
patron['email'] = profile.user.email
- super(Patron, patron).update(dict(patron), True, True)
+ super().update(dict(patron), True, True)
# anonymize user loans if keep_history is changed
if old_keep_history and not new_keep_history:
from ..loans.api import anonymize_loans
@@ -461,7 +462,7 @@ def get_patron_by_barcode(cls, barcode=None):
.source(includes='pid').scan()
try:
patron_pid = next(result).pid
- return super(Patron, cls).get_record_by_pid(patron_pid)
+ return super().get_record_by_pid(patron_pid)
except StopIteration:
return None
@@ -826,5 +827,4 @@ def bulk_index(self, record_id_iterator):
:param record_id_iterator: Iterator yielding record UUIDs.
"""
- super(PatronsIndexer, self).bulk_index(record_id_iterator,
- doc_type='ptrn')
+ super().bulk_index(record_id_iterator, doc_type='ptrn')
diff --git a/rero_ils/modules/patrons/cli.py b/rero_ils/modules/patrons/cli.py
index 6b21f03a1d..0e537ed898 100644
--- a/rero_ils/modules/patrons/cli.py
+++ b/rero_ils/modules/patrons/cli.py
@@ -71,7 +71,7 @@ def import_users(infile, append, verbose, password, lazy, dont_stop_on_error,
data = json.load(infile)
pids = []
error_records = []
- for count, patron_data in enumerate(data):
+ for count, patron_data in enumerate(data, 1):
email = patron_data.get('email')
password = patron_data.get('password', password)
username = patron_data['username']
diff --git a/rero_ils/modules/patrons/templates/rero_ils/patron_profile.html b/rero_ils/modules/patrons/templates/rero_ils/patron_profile.html
index fdc7b66af6..c7f024b590 100644
--- a/rero_ils/modules/patrons/templates/rero_ils/patron_profile.html
+++ b/rero_ils/modules/patrons/templates/rero_ils/patron_profile.html
@@ -137,10 +137,3 @@
{%- endblock body %}
-
-{%- block javascript %}
-{{ super() }}
-{% assets "rero_ils_patron_profile_js" %}
-
-{% endassets %}
-{% endblock javascript %}
diff --git a/rero_ils/modules/providers.py b/rero_ils/modules/providers.py
index ed1519bc32..1bbf8ba595 100644
--- a/rero_ils/modules/providers.py
+++ b/rero_ils/modules/providers.py
@@ -30,7 +30,7 @@
def append_fixtures_new_identifiers(identifier, pids, pid_type):
"""Insert pids into the indentifier table and update its sequence."""
idx = 0
- for idx, pid in enumerate(pids):
+ for idx, pid in enumerate(pids, 1):
db.session.add(identifier(recid=pid))
if idx > 0 and idx % 100000 == 0:
click.echo('DB commit append: {idx}'.format(idx=idx))
@@ -81,6 +81,6 @@ def create(cls, object_type=None, object_uuid=None, **kwargs):
kwargs.setdefault('status', cls.default_status)
if object_type and object_uuid:
kwargs['status'] = PIDStatus.REGISTERED
- return super(Provider, cls).create(
+ return super().create(
object_type=object_type, object_uuid=object_uuid, **kwargs
)
diff --git a/rero_ils/modules/serializers.py b/rero_ils/modules/serializers.py
index 4a838f7c4b..fd8fe15fa3 100644
--- a/rero_ils/modules/serializers.py
+++ b/rero_ils/modules/serializers.py
@@ -47,7 +47,7 @@ def preprocess_record(self, pid, record, links_factory=None, **kwargs):
# because the replace_refs loose the record original model. We need
# to resetting it to have correct 'created'/'updated' output data
rec.model = record.model
- return super(JSONSerializer, self).preprocess_record(
+ return super().preprocess_record(
pid=pid, record=rec, links_factory=links_factory, kwargs=kwargs)
@staticmethod
diff --git a/rero_ils/modules/templates/api.py b/rero_ils/modules/templates/api.py
index 5c15c79bda..9725fcf8eb 100644
--- a/rero_ils/modules/templates/api.py
+++ b/rero_ils/modules/templates/api.py
@@ -92,8 +92,7 @@ def bulk_index(self, record_id_iterator):
:param record_id_iterator: Iterator yielding record UUIDs.
"""
- super(TemplatesIndexer, self).bulk_index(record_id_iterator,
- doc_type='tmpl')
+ super().bulk_index(record_id_iterator, doc_type='tmpl')
class TemplateVisibility(object):
diff --git a/rero_ils/modules/vendors/api.py b/rero_ils/modules/vendors/api.py
index d416b1c0ee..20330e900e 100644
--- a/rero_ils/modules/vendors/api.py
+++ b/rero_ils/modules/vendors/api.py
@@ -121,5 +121,4 @@ def bulk_index(self, record_id_iterator):
:param record_id_iterator: Iterator yielding record UUIDs.
"""
- super(VendorsIndexer, self).bulk_index(record_id_iterator,
- doc_type='vndr')
+ super().bulk_index(record_id_iterator, doc_type='vndr')
diff --git a/rero_ils/schedulers.py b/rero_ils/schedulers.py
index 69689bb66c..ae62e9b2e2 100644
--- a/rero_ils/schedulers.py
+++ b/rero_ils/schedulers.py
@@ -73,7 +73,7 @@ def __init__(self, app, *args, **kwargs):
))
kwargs['app'] = app
kwargs['lazy'] = lazy
- super(RedisScheduler, self).__init__(*args, **kwargs)
+ super().__init__(*args, **kwargs)
def get(self, name):
"""Get schedule from REDIS DB.
@@ -106,7 +106,7 @@ def merge_inplace(self, tasks):
enabled = tasks[name].pop('enabled', True)
if not self.rdb.get(self.enabled_name(name)):
self.rdb[self.enabled_name(name)] = int(enabled)
- super(RedisScheduler, self).merge_inplace(tasks)
+ super().merge_inplace(tasks)
def setup_schedule(self):
"""Init entries from CELERY_BEAT_SCHEDULE."""
@@ -165,7 +165,7 @@ def remove(self, name):
enabled_name = self.enabled_name(name)
if self.rdb.get(enabled_name):
del self.rdb[enabled_name]
- return super(RedisScheduler, self).remove(task_key=name)
+ return super().remove(task_key=name)
def reset(self):
"""Reset all scheduled tasks."""
diff --git a/rero_ils/theme/templates/rero_ils/javascript.html b/rero_ils/theme/templates/rero_ils/javascript.html
index 6eaf420532..ade20eee89 100644
--- a/rero_ils/theme/templates/rero_ils/javascript.html
+++ b/rero_ils/theme/templates/rero_ils/javascript.html
@@ -17,8 +17,7 @@
#}
{%- block javascript %}
-{{ webpack['manifest.js']}}
-{{ webpack['vendor.js']}}
+{{ webpack['theme.js']}}
{{ webpack['reroils_public.js']}}
{{ node_assets('@rero/rero-ils-ui/dist/search-bar', patterns=['polyfills-es5*.js','main-es5*.js'], tags='nomodule defer') }}
{{ node_assets('@rero/rero-ils-ui/dist/search-bar', patterns=['polyfills-es2015*.js','main-es2015*.js'], tags='type="module"') }}
diff --git a/rero_ils/theme/templates/rero_ils/search.html b/rero_ils/theme/templates/rero_ils/search.html
index 89f4bae837..6eee697ae1 100644
--- a/rero_ils/theme/templates/rero_ils/search.html
+++ b/rero_ils/theme/templates/rero_ils/search.html
@@ -27,7 +27,5 @@
{%- endblock page_body -%}
{%- block javascript %}
-{{ webpack['vendor.js']}}
-{{ webpack['reroils_public.js']}}
{{ node_assets('@rero/rero-ils-ui/dist/public-search', tags='defer') }}}
{%- endblock javascript %}
diff --git a/scripts/bootstrap b/scripts/bootstrap
index 84fa588413..c10981b767 100755
--- a/scripts/bootstrap
+++ b/scripts/bootstrap
@@ -153,9 +153,9 @@ fi
# build the web assets
info_msg "Build web assets: collect"
-invenio collect
+invenio collect -v
-info_msg "Build web assets: using webpack for invenio-admin"
+info_msg "Build web assets: using webpack"
invenio webpack buildall
if $deploy ; then
diff --git a/tests/api/holdings/test_patterns.py b/tests/api/holdings/test_patterns.py
index 24a9f092dd..80c7f4a579 100644
--- a/tests/api/holdings/test_patterns.py
+++ b/tests/api/holdings/test_patterns.py
@@ -289,9 +289,9 @@ def test_automatic_item_creation_no_serials(
holding_lib_martigny_w_patterns.get('circulation_category')
-def test_validate_next_expected_date(
+def test_pattern_validate_next_expected_date(
client, librarian_martigny_no_email,
- journal, loc_public_sion, item_type_internal_sion, document,
+ journal, loc_public_sion, item_type_regular_sion, document,
pattern_yearly_two_times_data, json_header,
holding_lib_sion_w_patterns_data):
"""Test create holding with regular frequency and missing
diff --git a/tests/conftest.py b/tests/conftest.py
index cea65af703..7569cab6c9 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -26,13 +26,14 @@
import pytest
from dotenv import load_dotenv
-pytest_plugins = [
+pytest_plugins = (
+ 'celery.contrib.pytest',
'fixtures.circulation',
'fixtures.metadata',
'fixtures.organisations',
'fixtures.acquisition',
- 'fixtures.sip2',
-]
+ 'fixtures.sip2'
+)
@pytest.fixture(scope='module')
diff --git a/tests/ui/contributions/test_contributions_api.py b/tests/ui/contributions/test_contributions_api.py
index 018a4d1dba..4e190e3aa9 100644
--- a/tests/ui/contributions/test_contributions_api.py
+++ b/tests/ui/contributions/test_contributions_api.py
@@ -59,7 +59,7 @@ def test_contribution_create(app, contribution_person_data_tmp, caplog):
# test the messages from current_app.logger
assert caplog.records[0].name == 'elasticsearch'
assert caplog.record_tuples[1] == (
- 'flask.app', 30, 'Can not delete from index Contribution: 2'
+ 'invenio', 30, 'Can not delete from index Contribution: 2'
)
diff --git a/tests/ui/holdings/test_holdings_patterns.py b/tests/ui/holdings/test_holdings_patterns.py
index 196fa37730..8cf5db6e29 100644
--- a/tests/ui/holdings/test_holdings_patterns.py
+++ b/tests/ui/holdings/test_holdings_patterns.py
@@ -314,7 +314,7 @@ def test_bimonthly_every_two_months_two_levels(
assert issues[-1]['issue'] == 'Jg 57 Nr 3 Mai 2026'
-def test_validate_next_expected_date(
+def test_holding_validate_next_expected_date(
client, librarian_martigny_no_email,
journal, loc_public_sion, item_type_internal_sion, document,
pattern_yearly_two_times_data, json_header,
diff --git a/tests/ui/holdings/test_serial_claims.py b/tests/ui/holdings/test_serial_claims.py
index 52bbc062c9..5c58bf0a21 100644
--- a/tests/ui/holdings/test_serial_claims.py
+++ b/tests/ui/holdings/test_serial_claims.py
@@ -51,8 +51,7 @@ def count_issues(holding):
# for these holdings records, the next expected date is already passed
# system will receive the issue and change its status to late
- process_late_claimed_issues(dbcommit=True, reindex=True)
-
+ msg = process_late_claimed_issues(dbcommit=True, reindex=True)
assert count_issues(martigny) == [1, 0]
assert count_issues(sion) == [1, 0]
@@ -67,8 +66,7 @@ def count_issues(holding):
martigny['patterns']['next_expected_date'] = yesterday
martigny.update(martigny, dbcommit=True, reindex=True)
- process_late_claimed_issues(dbcommit=True, reindex=True)
-
+ msg = process_late_claimed_issues(dbcommit=True, reindex=True)
assert count_issues(martigny) == [2, 0]
assert count_issues(sion) == [1, 0]
@@ -77,31 +75,34 @@ def count_issues(holding):
# create a first claim for an issue and the claim_counts will increment
late_issue = list(Item.get_issues_by_status(
issue_status=ItemIssueStatus.LATE, holdings_pid=martigny.pid))[0]
- late_issue['issue']['status_date'] = \
- (datetime.now(timezone.utc) - timedelta(
- days=martigny.days_before_first_claim + 1)).isoformat()
+ late_issue['issue']['status_date'] = (
+ datetime.now(timezone.utc)
+ - timedelta(days=martigny.days_before_first_claim + 1)
+ ).isoformat()
late_issue.update(late_issue, dbcommit=True, reindex=True)
assert late_issue.claims_count == 0
- process_late_claimed_issues(
+ msg = process_late_claimed_issues(
create_next_claim=False, dbcommit=True, reindex=True)
-
assert count_issues(martigny) == [1, 1]
assert count_issues(sion) == [1, 0]
late_issue = Item.get_record_by_pid(late_issue.pid)
assert late_issue.claims_count == 1
# create the next claim for an issue and the claim_counts will increment
- process_late_claimed_issues(dbcommit=True, reindex=True)
-
+ late_issue['issue']['status_date'] = (
+ datetime.now(timezone.utc)
+ - timedelta(days=martigny.days_before_next_claim + 1)
+ ).isoformat()
+ late_issue.update(late_issue, dbcommit=True, reindex=True)
+ msg = process_late_claimed_issues(dbcommit=True, reindex=True)
assert count_issues(martigny) == [1, 1]
late_issue = Item.get_record_by_pid(late_issue.pid)
assert late_issue.claims_count == 2
# No more claims will be generated because the max claims reached
- process_late_claimed_issues(dbcommit=True, reindex=True)
-
+ msg = process_late_claimed_issues(dbcommit=True, reindex=True)
assert count_issues(martigny) == [1, 1]
late_issue = Item.get_record_by_pid(late_issue.pid)
assert late_issue.claims_count == 2
diff --git a/tests/ui/test_api.py b/tests/ui/test_api.py
index c6132bdd87..29329b2482 100644
--- a/tests/ui/test_api.py
+++ b/tests/ui/test_api.py
@@ -88,7 +88,7 @@ def create(cls, object_type=None, object_uuid=None, **kwargs):
kwargs.setdefault('status', cls.default_status)
if object_type and object_uuid:
kwargs['status'] = PIDStatus.REGISTERED
- return super(ProviderTest, cls).create(
+ return super().create(
object_type=object_type, object_uuid=object_uuid, **kwargs
)