17
0

Accepting request 1331093 from devel:languages:python

- Update to 1.13.0:
  * New features:
    + Merge identities when adding a LinkedIn profile
    + Redirect to the original URL after user inactivity
    + Recommendations based on GitHub-generated email addresses
    + Increased minimum version for Python to 3.10
    + Post processing of imported individuals
    + History of profile changes
    + Allow pasting LinkedIn URL
  * Bug fixes:
    + Missing migrations from model changes
    + Task update issues due to type mismatch
    + Remove multiple LinkedIn identities
    + Table showing jobs failing for offset-naive datetimes
    + Automatic affiliation fixed and reduced results
    + Unavailable Individuals in Recommendations
    + Django static files configuration
    + Automatic affiliation fixed and reduced results
    + Merge organizations aliases
    + Press Enter key to log in
    + Fixed unresponsive affiliation calendar
    + Affiliation dates different from input
- Update URL to correct location
- Refreshed patch allow-database-config-overrides.patch
- Drop patches, no longer required:
  * support-click-8.2.patch
  * support-new-django-graphql-jwt.patch

OBS-URL: https://build.opensuse.org/request/show/1331093
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-sortinghat?expand=0&rev=15
This commit is contained in:
2026-02-06 18:05:40 +00:00
committed by Git OBS Bridge
7 changed files with 58 additions and 920 deletions

View File

@@ -1,13 +1,13 @@
Index: grimoirelab-sortinghat-1.2.1/config/settings/config_testing.py
Index: grimoirelab-sortinghat-1.9.2/config/settings/config_testing.py
===================================================================
--- grimoirelab-sortinghat-1.2.1.orig/config/settings/config_testing.py
+++ grimoirelab-sortinghat-1.2.1/config/settings/config_testing.py
--- grimoirelab-sortinghat-1.9.2.orig/config/settings/config_testing.py
+++ grimoirelab-sortinghat-1.9.2/config/settings/config_testing.py
@@ -1,3 +1,4 @@
+import os
import sys
import logging
@@ -38,8 +39,8 @@ SQL_MODE = [
@@ -40,8 +41,8 @@ SQL_MODE = [
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
@@ -18,7 +18,7 @@ Index: grimoirelab-sortinghat-1.2.1/config/settings/config_testing.py
'NAME': 'sortinghat_db',
'OPTIONS': {
'charset': 'utf8mb4',
@@ -49,9 +50,10 @@ DATABASES = {
@@ -51,9 +52,10 @@ DATABASES = {
'NAME': 'testhat',
'CHARSET': 'utf8mb4',
'COLLATION': 'utf8mb4_unicode_520_ci',
@@ -30,10 +30,10 @@ Index: grimoirelab-sortinghat-1.2.1/config/settings/config_testing.py
}
}
Index: grimoirelab-sortinghat-1.2.1/config/settings/config_testing_tenant.py
Index: grimoirelab-sortinghat-1.9.2/config/settings/config_testing_tenant.py
===================================================================
--- grimoirelab-sortinghat-1.2.1.orig/config/settings/config_testing_tenant.py
+++ grimoirelab-sortinghat-1.2.1/config/settings/config_testing_tenant.py
--- grimoirelab-sortinghat-1.9.2.orig/config/settings/config_testing_tenant.py
+++ grimoirelab-sortinghat-1.9.2/config/settings/config_testing_tenant.py
@@ -15,8 +15,8 @@ TENANTS_DEDICATED_QUEUES = [t["name"] fo
DATABASES.update({
tenant: {

View File

@@ -1,3 +1,34 @@
-------------------------------------------------------------------
Thu Feb 5 05:12:51 UTC 2026 - Steve Kowalik <steven.kowalik@suse.com>
- Update to 1.13.0:
* New features:
+ Merge identities when adding a LinkedIn profile
+ Redirect to the original URL after user inactivity
+ Recommendations based on GitHub-generated email addresses
+ Increased minimum version for Python to 3.10
+ Post processing of imported individuals
+ History of profile changes
+ Allow pasting LinkedIn URL
* Bug fixes:
+ Missing migrations from model changes
+ Task update issues due to type mismatch
+ Remove multiple LinkedIn identities
+ Table showing jobs failing for offset-naive datetimes
+ Automatic affiliation fixed and reduced results
+ Unavailable Individuals in Recommendations
+ Django static files configuration
+ Automatic affiliation fixed and reduced results
+ Merge organizations aliases
+ Press Enter key to log in
+ Fixed unresponsive affiliation calendar
+ Affiliation dates different from input
- Update URL to correct location
- Refreshed patch allow-database-config-overrides.patch
- Drop patches, no longer required:
* support-click-8.2.patch
* support-new-django-graphql-jwt.patch
-------------------------------------------------------------------
Thu May 15 02:33:32 UTC 2025 - Steve Kowalik <steven.kowalik@suse.com>

View File

@@ -1,7 +1,7 @@
#
# spec file for package python-sortinghat
#
# Copyright (c) 2025 SUSE LLC
# Copyright (c) 2026 SUSE LLC and contributors
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,70 +17,59 @@
Name: python-sortinghat
Version: 1.7.1
Version: 1.13.0
Release: 0
Summary: A tool to manage identities
License: GPL-3.0-only
URL: https://github.com/grimoirelab/sortinghat
URL: https://github.com/chaoss/grimoirelab-sortinghat
Source: https://github.com/chaoss/grimoirelab-sortinghat/archive/refs/tags/%{version}.tar.gz#/sortinghat-%{version}.tar.gz
# PATCH-FIX-OPENSUSE Allow overridding the database config
Patch0: allow-database-config-overrides.patch
# PATCH-FIX-OPENSUSE Support django-graphql-jwt 0.4.0
Patch1: support-new-django-graphql-jwt.patch
# PATCH-FIX-OPENSUSE Do not use testcontainers module
Patch2: no-testcontainers.patch
# PATCH-FIX-OPENSUSE Support click 8.2+
Patch3: support-click-8.2.patch
BuildRequires: %{python_module base >= 3.9}
Patch1: no-testcontainers.patch
BuildRequires: %{python_module base >= 3.10}
BuildRequires: %{python_module pip}
BuildRequires: %{python_module poetry-core}
BuildRequires: %{python_module wheel}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
Requires: python-Django >= 4.2
Requires: python-Jinja2 >= 3.1
Requires: python-Django >= 5.2
Requires: python-Jinja2 >= 3.1.1
Requires: python-PyJWT >= 2.4
Requires: python-PyMySQL >= 0.7.0
Requires: python-PyYAML >= 3.12
Requires: python-SQLAlchemy >= 1.2
Requires: python-click >= 7.1
Requires: python-click >= 8.2
Requires: python-django-cors-headers >= 4.6
Requires: python-django-graphql-jwt >= 0.3
Requires: python-django-graphql-jwt >= 0.4
Requires: python-django-rq >= 2.3
Requires: python-django-storages >= 1.13
Requires: python-django-treebeard >= 4.5
Requires: python-graphene >= 2.1.5
Requires: python-graphene-django
Requires: python-graphene-django >= 3.2.3
Requires: python-grimoirelab-toolkit >= 0.3
Requires: python-importlib-resources
Requires: python-mysqlclient >= 2.0
Requires: python-numpy
Requires: python-pandas >= 2.2
Requires: python-python-dateutil >= 2.8.0
Requires: python-requests >= 2.7
Requires: python-rq
Requires: python-setuptools
Requires: python-sgqlc >= 16.1
Requires(post): update-alternatives
Requires(postun): update-alternatives
BuildArch: noarch
# SECTION test requirements
BuildRequires: %{python_module Jinja2 >= 3.1}
BuildRequires: %{python_module Django >= 4.2}
BuildRequires: %{python_module PyMySQL >= 0.7.0}
BuildRequires: %{python_module Jinja2 >= 3.1.1}
BuildRequires: %{python_module Django >= 5.2}
BuildRequires: %{python_module PyYAML >= 3.12}
BuildRequires: %{python_module SQLAlchemy >= 1.2}
BuildRequires: %{python_module click >= 7.1}
BuildRequires: %{python_module click >= 8.2}
BuildRequires: %{python_module django-cors-headers >= 4.6}
BuildRequires: %{python_module django-graphql-jwt >= 0.3}
BuildRequires: %{python_module django-graphql-jwt >= 0.4}
BuildRequires: %{python_module django-rq >= 2.3}
BuildRequires: %{python_module django-storages >= 1.13}
BuildRequires: %{python_module django-treebeard >= 4.5}
BuildRequires: %{python_module fakeredis}
BuildRequires: %{python_module graphene >= 2.1.5}
BuildRequires: %{python_module grimoirelab-toolkit >= 0.3}
BuildRequires: %{python_module httpretty >= 0.9.5}
BuildRequires: %{python_module importlib-resources}
BuildRequires: %{python_module mysqlclient >= 2.0}
BuildRequires: %{python_module numpy}
BuildRequires: %{python_module pandas >= 2.2}
BuildRequires: %{python_module pytest}
BuildRequires: %{python_module python-dateutil >= 2.8.0}
@@ -146,8 +135,6 @@ run_dir=/tmp/mysql
export TEST_SORTINGHAT_DB_PORT=$port
export TEST_SORTINGHAT_DB_USER=$user
export TEST_SORTINGHAT_DB_PASSWORD=$pass
# Broken tests
rm tests/test_jobs.py
%python_exec manage.py test --settings=config.settings.config_testing
%python_exec manage.py test --settings=config.settings.config_testing_tenant
#

3
sortinghat-1.13.0.tar.gz Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:bfebb2609b558db100f8524131da488cdec876b5947f3ae4a01f6eff630dff31
size 2296077

View File

@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:26e091403d3d2699d55b65a79a67494e95654bf78d66d884adff41e30f2af3ca
size 2264700

View File

@@ -1,856 +0,0 @@
Index: grimoirelab-sortinghat-1.7.1/tests/cli/test_cmd_add.py
===================================================================
--- grimoirelab-sortinghat-1.7.1.orig/tests/cli/test_cmd_add.py
+++ grimoirelab-sortinghat-1.7.1/tests/cli/test_cmd_add.py
@@ -20,6 +20,7 @@
# Santiago Dueñas <sduenas@bitergia.com>
#
+import inspect
import unittest
import unittest.mock
@@ -107,7 +108,10 @@ class TestAddCommand(unittest.TestCase):
client = MockClient(responses)
mock_client.return_value = client
- runner = click.testing.CliRunner()
+ if inspect.signature(click.testing.CliRunner).parameters.get("mix_stderr"):
+ runner = click.testing.CliRunner(mix_stderr=False)
+ else:
+ runner = click.testing.CliRunner()
# Create a new identity
params = [
@@ -135,7 +139,10 @@ class TestAddCommand(unittest.TestCase):
client = MockClient(responses)
mock_client.return_value = client
- runner = click.testing.CliRunner()
+ if inspect.signature(click.testing.CliRunner).parameters.get("mix_stderr"):
+ runner = click.testing.CliRunner(mix_stderr=False)
+ else:
+ runner = click.testing.CliRunner()
# Create a new identity setting partial data
params = [
@@ -161,7 +168,10 @@ class TestAddCommand(unittest.TestCase):
client = MockClient(responses)
mock_client.return_value = client
- runner = click.testing.CliRunner()
+ if inspect.signature(click.testing.CliRunner).parameters.get("mix_stderr"):
+ runner = click.testing.CliRunner(mix_stderr=False)
+ else:
+ runner = click.testing.CliRunner()
# Assign to John Smith - a9b403e150dd4af8953a52a4bb841051e4b705d9
# individual
@@ -190,7 +200,11 @@ class TestAddCommand(unittest.TestCase):
client = MockClient(responses)
mock_client.return_value = client
- runner = click.testing.CliRunner()
+ if inspect.signature(click.testing.CliRunner).parameters.get("mix_stderr"):
+ runner = click.testing.CliRunner(mix_stderr=False)
+ else:
+ runner = click.testing.CliRunner()
+
params = [
'--source', 'scm',
@@ -225,7 +239,10 @@ class TestAddCommand(unittest.TestCase):
client = MockClient(responses)
mock_client.return_value = client
- runner = click.testing.CliRunner(mix_stderr=False)
+ if inspect.signature(click.testing.CliRunner).parameters.get("mix_stderr"):
+ runner = click.testing.CliRunner(mix_stderr=False)
+ else:
+ runner = click.testing.CliRunner()
params = [
'--source', 'scm',
Index: grimoirelab-sortinghat-1.7.1/tests/cli/test_cmd_config.py
===================================================================
--- grimoirelab-sortinghat-1.7.1.orig/tests/cli/test_cmd_config.py
+++ grimoirelab-sortinghat-1.7.1/tests/cli/test_cmd_config.py
@@ -20,6 +20,7 @@
# Santiago Dueñas <sduenas@bitergia.com>
#
+import inspect
import os.path
import shutil
import unittest
@@ -53,7 +54,10 @@ class TestInitConfig(unittest.TestCase):
def test_init(self):
"""Check if it initializes a configuration file."""
- runner = click.testing.CliRunner()
+ if inspect.signature(click.testing.CliRunner).parameters.get("mix_stderr"):
+ runner = click.testing.CliRunner(mix_stderr=False)
+ else:
+ runner = click.testing.CliRunner()
with runner.isolated_filesystem() as fs:
filepath = os.path.join(fs, MOCK_CONFIG_FILE)
@@ -79,7 +83,10 @@ class TestInitConfig(unittest.TestCase):
def test_default_filename(self, mock_basepath):
"""Check if it uses the default filename when filepath is not given"""
- runner = click.testing.CliRunner()
+ if inspect.signature(click.testing.CliRunner).parameters.get("mix_stderr"):
+ runner = click.testing.CliRunner(mix_stderr=False)
+ else:
+ runner = click.testing.CliRunner()
with runner.isolated_filesystem() as fs:
dirpath = os.path.join(fs, '.sortinghat')
@@ -104,7 +111,10 @@ class TestInitConfig(unittest.TestCase):
def test_config_is_not_overwritten(self):
"""Check whether an existing config file is not replaced"""
- runner = click.testing.CliRunner(mix_stderr=False)
+ if inspect.signature(click.testing.CliRunner).parameters.get("mix_stderr"):
+ runner = click.testing.CliRunner(mix_stderr=False)
+ else:
+ runner = click.testing.CliRunner()
with runner.isolated_filesystem() as fs:
shutil.copy(MOCK_CONFIG_FILEPATH, fs)
@@ -132,7 +142,10 @@ class TestInitConfig(unittest.TestCase):
def test_overwrite_config(self):
"""Check whether an existing config file is overwritten"""
- runner = click.testing.CliRunner(mix_stderr=False)
+ if inspect.signature(click.testing.CliRunner).parameters.get("mix_stderr"):
+ runner = click.testing.CliRunner(mix_stderr=False)
+ else:
+ runner = click.testing.CliRunner()
with runner.isolated_filesystem() as fs:
shutil.copy(MOCK_CONFIG_FILEPATH, fs)
@@ -168,7 +181,10 @@ class TestSetConfig(unittest.TestCase):
def test_set_value(self):
"""Check set method"""
- runner = click.testing.CliRunner()
+ if inspect.signature(click.testing.CliRunner).parameters.get("mix_stderr"):
+ runner = click.testing.CliRunner(mix_stderr=False)
+ else:
+ runner = click.testing.CliRunner()
with runner.isolated_filesystem() as fs:
shutil.copy(MOCK_CONFIG_FILEPATH, fs)
@@ -210,7 +226,10 @@ class TestSetConfig(unittest.TestCase):
def test_default_filename(self, mock_basepath):
"""Check if it uses the default filename when filepath is not given"""
- runner = click.testing.CliRunner()
+ if inspect.signature(click.testing.CliRunner).parameters.get("mix_stderr"):
+ runner = click.testing.CliRunner(mix_stderr=False)
+ else:
+ runner = click.testing.CliRunner()
with runner.isolated_filesystem() as fs:
dirpath = os.path.join(fs, '.sortinghat')
@@ -240,7 +259,10 @@ class TestSetConfig(unittest.TestCase):
def test_not_available_keys(self):
"""Check if it raises an error when the key is not available"""
- runner = click.testing.CliRunner(mix_stderr=False)
+ if inspect.signature(click.testing.CliRunner).parameters.get("mix_stderr"):
+ runner = click.testing.CliRunner(mix_stderr=False)
+ else:
+ runner = click.testing.CliRunner()
with runner.isolated_filesystem() as fs:
shutil.copy(MOCK_CONFIG_FILEPATH, fs)
@@ -260,7 +282,10 @@ class TestSetConfig(unittest.TestCase):
def test_invalid_keys(self):
"""Check if it raises an error when the key is invalid"""
- runner = click.testing.CliRunner(mix_stderr=False)
+ if inspect.signature(click.testing.CliRunner).parameters.get("mix_stderr"):
+ runner = click.testing.CliRunner(mix_stderr=False)
+ else:
+ runner = click.testing.CliRunner()
# Test keys that do not follow '<section>.<option>' schema
with runner.isolated_filesystem() as fs:
@@ -321,7 +346,10 @@ class TestSetConfig(unittest.TestCase):
def test_invalid_config_files(self):
"""Check whether it raises and error reading invalid configuration files"""
- runner = click.testing.CliRunner(mix_stderr=False)
+ if inspect.signature(click.testing.CliRunner).parameters.get("mix_stderr"):
+ runner = click.testing.CliRunner(mix_stderr=False)
+ else:
+ runner = click.testing.CliRunner()
# Test keys that do not follow '<section>.<option>' schema
with runner.isolated_filesystem() as fs:
@@ -342,7 +370,10 @@ class TestGetConfig(unittest.TestCase):
def test_get_value(self):
"""Test get method"""
- runner = click.testing.CliRunner()
+ if inspect.signature(click.testing.CliRunner).parameters.get("mix_stderr"):
+ runner = click.testing.CliRunner(mix_stderr=False)
+ else:
+ runner = click.testing.CliRunner()
with runner.isolated_filesystem() as fs:
shutil.copy(MOCK_CONFIG_FILEPATH, fs)
@@ -379,7 +410,10 @@ class TestGetConfig(unittest.TestCase):
def test_default_filename(self, mock_basepath):
"""Check if it uses the default filename when filepath is not given"""
- runner = click.testing.CliRunner()
+ if inspect.signature(click.testing.CliRunner).parameters.get("mix_stderr"):
+ runner = click.testing.CliRunner(mix_stderr=False)
+ else:
+ runner = click.testing.CliRunner()
with runner.isolated_filesystem() as fs:
mock_basepath.return_value = fs
@@ -405,7 +439,10 @@ class TestGetConfig(unittest.TestCase):
def test_not_available_keys(self):
"""Check if it raises an error when the key is not available"""
- runner = click.testing.CliRunner(mix_stderr=False)
+ if inspect.signature(click.testing.CliRunner).parameters.get("mix_stderr"):
+ runner = click.testing.CliRunner(mix_stderr=False)
+ else:
+ runner = click.testing.CliRunner()
with runner.isolated_filesystem() as fs:
shutil.copy(MOCK_CONFIG_FILEPATH, fs)
@@ -424,7 +461,10 @@ class TestGetConfig(unittest.TestCase):
def test_invalid_keys(self):
"""Check if it raises an error when the key is invalid"""
- runner = click.testing.CliRunner(mix_stderr=False)
+ if inspect.signature(click.testing.CliRunner).parameters.get("mix_stderr"):
+ runner = click.testing.CliRunner(mix_stderr=False)
+ else:
+ runner = click.testing.CliRunner()
# Test keys that do not follow '<section>.<option>' schema
with runner.isolated_filesystem() as fs:
@@ -480,7 +520,11 @@ class TestGetConfig(unittest.TestCase):
def test_invalid_config_files(self):
"""Check whether it raises and error reading invalid configuration files"""
- runner = click.testing.CliRunner(mix_stderr=False)
+ if inspect.signature(click.testing.CliRunner).parameters.get("mix_stderr"):
+ runner = click.testing.CliRunner(mix_stderr=False)
+ else:
+ runner = click.testing.CliRunner()
+
with runner.isolated_filesystem() as fs:
filepath = os.path.join(fs, 'unknown_file.cfg')
Index: grimoirelab-sortinghat-1.7.1/tests/cli/test_cmd_countries.py
===================================================================
--- grimoirelab-sortinghat-1.7.1.orig/tests/cli/test_cmd_countries.py
+++ grimoirelab-sortinghat-1.7.1/tests/cli/test_cmd_countries.py
@@ -20,6 +20,7 @@
# Santiago Dueñas <sduenas@bitergia.com>
#
+import inspect
import unittest
import unittest.mock
@@ -135,7 +136,10 @@ class TestCountriesCommand(unittest.Test
client = MockClient(responses)
mock_client.return_value = client
- runner = click.testing.CliRunner()
+ if inspect.signature(click.testing.CliRunner).parameters.get("mix_stderr"):
+ runner = click.testing.CliRunner(mix_stderr=False)
+ else:
+ runner = click.testing.CliRunner()
result = runner.invoke(countries)
self.assertEqual(len(client.ops), 2)
@@ -174,8 +178,10 @@ class TestCountriesCommand(unittest.Test
client = MockClient(responses)
mock_client.return_value = client
- runner = click.testing.CliRunner()
-
+ if inspect.signature(click.testing.CliRunner).parameters.get("mix_stderr"):
+ runner = click.testing.CliRunner(mix_stderr=False)
+ else:
+ runner = click.testing.CliRunner()
params = ['--code', 'ES']
result = runner.invoke(countries, params)
@@ -193,7 +199,10 @@ class TestCountriesCommand(unittest.Test
def test_countries_invalid_code(self):
"""Check if it fails when code is invalid"""
- runner = click.testing.CliRunner(mix_stderr=False)
+ if inspect.signature(click.testing.CliRunner).parameters.get("mix_stderr"):
+ runner = click.testing.CliRunner(mix_stderr=False)
+ else:
+ runner = click.testing.CliRunner()
params = ['--code', 'E']
result = runner.invoke(countries, params)
@@ -244,7 +253,10 @@ class TestCountriesCommand(unittest.Test
client = MockClient(responses)
mock_client.return_value = client
- runner = click.testing.CliRunner()
+ if inspect.signature(click.testing.CliRunner).parameters.get("mix_stderr"):
+ runner = click.testing.CliRunner(mix_stderr=False)
+ else:
+ runner = click.testing.CliRunner()
params = ['--term', 'unit']
result = runner.invoke(countries, params)
@@ -263,7 +275,10 @@ class TestCountriesCommand(unittest.Test
def test_countries_invalid_term(self):
"""Check if it fails when term is invalid"""
- runner = click.testing.CliRunner(mix_stderr=False)
+ if inspect.signature(click.testing.CliRunner).parameters.get("mix_stderr"):
+ runner = click.testing.CliRunner(mix_stderr=False)
+ else:
+ runner = click.testing.CliRunner()
params = ['--term', 'E']
result = runner.invoke(countries, params)
@@ -304,7 +319,10 @@ class TestCountriesCommand(unittest.Test
client = MockClient(responses)
mock_client.return_value = client
- runner = click.testing.CliRunner()
+ if inspect.signature(click.testing.CliRunner).parameters.get("mix_stderr"):
+ runner = click.testing.CliRunner(mix_stderr=False)
+ else:
+ runner = click.testing.CliRunner()
result = runner.invoke(countries)
@@ -334,7 +352,10 @@ class TestCountriesCommand(unittest.Test
client = MockClient(responses)
mock_client.return_value = client
- runner = click.testing.CliRunner(mix_stderr=False)
+ if inspect.signature(click.testing.CliRunner).parameters.get("mix_stderr"):
+ runner = click.testing.CliRunner(mix_stderr=False)
+ else:
+ runner = click.testing.CliRunner()
result = runner.invoke(countries)
Index: grimoirelab-sortinghat-1.7.1/tests/cli/test_cmd_enroll.py
===================================================================
--- grimoirelab-sortinghat-1.7.1.orig/tests/cli/test_cmd_enroll.py
+++ grimoirelab-sortinghat-1.7.1/tests/cli/test_cmd_enroll.py
@@ -20,6 +20,7 @@
# Santiago Dueñas <sduenas@bitergia.com>
#
+import inspect
import unittest
import unittest.mock
@@ -93,7 +94,10 @@ class TestEnrollCommand(unittest.TestCas
client = MockClient(responses)
mock_client.return_value = client
- runner = click.testing.CliRunner()
+ if inspect.signature(click.testing.CliRunner).parameters.get("mix_stderr"):
+ runner = click.testing.CliRunner(mix_stderr=False)
+ else:
+ runner = click.testing.CliRunner()
# Create a new enrollment
params = [
@@ -124,7 +128,10 @@ class TestEnrollCommand(unittest.TestCas
client = MockClient(responses)
mock_client.return_value = client
- runner = click.testing.CliRunner()
+ if inspect.signature(click.testing.CliRunner).parameters.get("mix_stderr"):
+ runner = click.testing.CliRunner(mix_stderr=False)
+ else:
+ runner = click.testing.CliRunner()
# Create a new enrollment
params = [
@@ -151,7 +158,10 @@ class TestEnrollCommand(unittest.TestCas
client = MockClient(responses)
mock_client.return_value = client
- runner = click.testing.CliRunner()
+ if inspect.signature(click.testing.CliRunner).parameters.get("mix_stderr"):
+ runner = click.testing.CliRunner(mix_stderr=False)
+ else:
+ runner = click.testing.CliRunner()
# Create a new enrollment
params = [
@@ -180,7 +190,10 @@ class TestEnrollCommand(unittest.TestCas
client = MockClient([])
mock_client.return_value = client
- runner = click.testing.CliRunner(mix_stderr=False)
+ if inspect.signature(click.testing.CliRunner).parameters.get("mix_stderr"):
+ runner = click.testing.CliRunner(mix_stderr=False)
+ else:
+ runner = click.testing.CliRunner()
params = [
'322397ed782a798ffd9d0bc7e293df4292fe075d',
@@ -225,7 +238,10 @@ class TestEnrollCommand(unittest.TestCas
client = MockClient(responses)
mock_client.return_value = client
- runner = click.testing.CliRunner(mix_stderr=False)
+ if inspect.signature(click.testing.CliRunner).parameters.get("mix_stderr"):
+ runner = click.testing.CliRunner(mix_stderr=False)
+ else:
+ runner = click.testing.CliRunner()
params = [
'322397ed782a798ffd9d0bc7e293df4292fe075d',
Index: grimoirelab-sortinghat-1.7.1/tests/cli/test_cmd_lock.py
===================================================================
--- grimoirelab-sortinghat-1.7.1.orig/tests/cli/test_cmd_lock.py
+++ grimoirelab-sortinghat-1.7.1/tests/cli/test_cmd_lock.py
@@ -20,6 +20,7 @@
# Santiago Dueñas <sduenas@bitergia.com>
#
+import inspect
import unittest
import click.testing
@@ -85,7 +86,10 @@ class TestLockAddCommand(unittest.TestCa
]
mock_client = MockClient(responses)
- runner = click.testing.CliRunner()
+ if inspect.signature(click.testing.CliRunner).parameters.get("mix_stderr"):
+ runner = click.testing.CliRunner(mix_stderr=False)
+ else:
+ runner = click.testing.CliRunner()
# Add lock
params = [
@@ -116,7 +120,10 @@ class TestLockAddCommand(unittest.TestCa
]
mock_client = MockClient(responses)
- runner = click.testing.CliRunner(mix_stderr=False)
+ if inspect.signature(click.testing.CliRunner).parameters.get("mix_stderr"):
+ runner = click.testing.CliRunner(mix_stderr=False)
+ else:
+ runner = click.testing.CliRunner()
params = [
'FFFFFFFFFFFFFFF'
@@ -143,7 +150,10 @@ class TestLockRmCommand(unittest.TestCas
]
mock_client = MockClient(responses)
- runner = click.testing.CliRunner()
+ if inspect.signature(click.testing.CliRunner).parameters.get("mix_stderr"):
+ runner = click.testing.CliRunner(mix_stderr=False)
+ else:
+ runner = click.testing.CliRunner()
# Remove lock
params = [
@@ -174,7 +184,10 @@ class TestLockRmCommand(unittest.TestCas
]
mock_client = MockClient(responses)
- runner = click.testing.CliRunner(mix_stderr=False)
+ if inspect.signature(click.testing.CliRunner).parameters.get("mix_stderr"):
+ runner = click.testing.CliRunner(mix_stderr=False)
+ else:
+ runner = click.testing.CliRunner()
params = [
'FFFFFFFFFFFFFFF'
Index: grimoirelab-sortinghat-1.7.1/tests/cli/test_cmd_merge.py
===================================================================
--- grimoirelab-sortinghat-1.7.1.orig/tests/cli/test_cmd_merge.py
+++ grimoirelab-sortinghat-1.7.1/tests/cli/test_cmd_merge.py
@@ -20,6 +20,7 @@
# Santiago Dueñas <sduenas@bitergia.com>
#
+import inspect
import unittest
import unittest.mock
@@ -76,7 +77,10 @@ class TestMergeCommand(unittest.TestCase
client = MockClient(responses)
mock_client.return_value = client
- runner = click.testing.CliRunner()
+ if inspect.signature(click.testing.CliRunner).parameters.get("mix_stderr"):
+ runner = click.testing.CliRunner(mix_stderr=False)
+ else:
+ runner = click.testing.CliRunner()
# Merge individuals
params = [
@@ -113,7 +117,10 @@ class TestMergeCommand(unittest.TestCase
client = MockClient(responses)
mock_client.return_value = client
- runner = click.testing.CliRunner(mix_stderr=False)
+ if inspect.signature(click.testing.CliRunner).parameters.get("mix_stderr"):
+ runner = click.testing.CliRunner(mix_stderr=False)
+ else:
+ runner = click.testing.CliRunner()
params = [
'322397ed782a798ffd9d0bc7e293df4292fe075d',
Index: grimoirelab-sortinghat-1.7.1/tests/cli/test_cmd_mv.py
===================================================================
--- grimoirelab-sortinghat-1.7.1.orig/tests/cli/test_cmd_mv.py
+++ grimoirelab-sortinghat-1.7.1/tests/cli/test_cmd_mv.py
@@ -20,6 +20,7 @@
# Santiago Dueñas <sduenas@bitergia.com>
#
+import inspect
import unittest
import unittest.mock
@@ -86,7 +87,10 @@ class TestMvCommand(unittest.TestCase):
client = MockClient(responses)
mock_client.return_value = client
- runner = click.testing.CliRunner()
+ if inspect.signature(click.testing.CliRunner).parameters.get("mix_stderr"):
+ runner = click.testing.CliRunner(mix_stderr=False)
+ else:
+ runner = click.testing.CliRunner()
# Create a new identity
params = [
@@ -113,7 +117,10 @@ class TestMvCommand(unittest.TestCase):
client = MockClient(responses)
mock_client.return_value = client
- runner = click.testing.CliRunner()
+ if inspect.signature(click.testing.CliRunner).parameters.get("mix_stderr"):
+ runner = click.testing.CliRunner(mix_stderr=False)
+ else:
+ runner = click.testing.CliRunner()
# Create a new identity
params = [
@@ -147,7 +154,10 @@ class TestMvCommand(unittest.TestCase):
client = MockClient(responses)
mock_client.return_value = client
- runner = click.testing.CliRunner(mix_stderr=False)
+ if inspect.signature(click.testing.CliRunner).parameters.get("mix_stderr"):
+ runner = click.testing.CliRunner(mix_stderr=False)
+ else:
+ runner = click.testing.CliRunner()
params = [
'322397ed782a798ffd9d0bc7e293df4292fe075d',
Index: grimoirelab-sortinghat-1.7.1/tests/cli/test_cmd_profile.py
===================================================================
--- grimoirelab-sortinghat-1.7.1.orig/tests/cli/test_cmd_profile.py
+++ grimoirelab-sortinghat-1.7.1/tests/cli/test_cmd_profile.py
@@ -20,6 +20,7 @@
# Santiago Dueñas <sduenas@bitergia.com>
#
+import inspect
import unittest
import unittest.mock
@@ -158,7 +159,10 @@ class TestProfileCommand(unittest.TestCa
client = MockClient(responses)
mock_client.return_value = client
- runner = click.testing.CliRunner()
+ if inspect.signature(click.testing.CliRunner).parameters.get("mix_stderr"):
+ runner = click.testing.CliRunner(mix_stderr=False)
+ else:
+ runner = click.testing.CliRunner()
# Update the profile
params = [
@@ -202,7 +206,10 @@ class TestProfileCommand(unittest.TestCa
client = MockClient(responses)
mock_client.return_value = client
- runner = click.testing.CliRunner()
+ if inspect.signature(click.testing.CliRunner).parameters.get("mix_stderr"):
+ runner = click.testing.CliRunner(mix_stderr=False)
+ else:
+ runner = click.testing.CliRunner()
# Update the profile
params = [
@@ -242,7 +249,10 @@ class TestProfileCommand(unittest.TestCa
client = MockClient(responses)
mock_client.return_value = client
- runner = click.testing.CliRunner()
+ if inspect.signature(click.testing.CliRunner).parameters.get("mix_stderr"):
+ runner = click.testing.CliRunner(mix_stderr=False)
+ else:
+ runner = click.testing.CliRunner()
# Show the profile
params = [
@@ -278,7 +288,10 @@ class TestProfileCommand(unittest.TestCa
client = MockClient(responses)
mock_client.return_value = client
- runner = click.testing.CliRunner()
+ if inspect.signature(click.testing.CliRunner).parameters.get("mix_stderr"):
+ runner = click.testing.CliRunner(mix_stderr=False)
+ else:
+ runner = click.testing.CliRunner()
# Show the profile
params = [
@@ -310,7 +323,10 @@ class TestProfileCommand(unittest.TestCa
client = MockClient(responses)
mock_client.return_value = client
- runner = click.testing.CliRunner(mix_stderr=False)
+ if inspect.signature(click.testing.CliRunner).parameters.get("mix_stderr"):
+ runner = click.testing.CliRunner(mix_stderr=False)
+ else:
+ runner = click.testing.CliRunner()
params = [
'FFFFFFFFFFFFFFF'
Index: grimoirelab-sortinghat-1.7.1/tests/cli/test_cmd_rm.py
===================================================================
--- grimoirelab-sortinghat-1.7.1.orig/tests/cli/test_cmd_rm.py
+++ grimoirelab-sortinghat-1.7.1/tests/cli/test_cmd_rm.py
@@ -20,6 +20,7 @@
# Santiago Dueñas <sduenas@bitergia.com>
#
+import inspect
import unittest
import unittest.mock
@@ -86,7 +87,10 @@ class TestRmCommand(unittest.TestCase):
client = MockClient(responses)
mock_client.return_value = client
- runner = click.testing.CliRunner()
+ if inspect.signature(click.testing.CliRunner).parameters.get("mix_stderr"):
+ runner = click.testing.CliRunner(mix_stderr=False)
+ else:
+ runner = click.testing.CliRunner()
# Remove an individual
params = ['eda9f62ad321b1fbe5f283cc05e2484516203117']
@@ -116,7 +120,10 @@ class TestRmCommand(unittest.TestCase):
client = MockClient(responses)
mock_client.return_value = client
- runner = click.testing.CliRunner()
+ if inspect.signature(click.testing.CliRunner).parameters.get("mix_stderr"):
+ runner = click.testing.CliRunner(mix_stderr=False)
+ else:
+ runner = click.testing.CliRunner()
# Remove an identity
params = ['eda9f62ad321b1fbe5f283cc05e2484516203117']
@@ -146,7 +153,10 @@ class TestRmCommand(unittest.TestCase):
client = MockClient(responses)
mock_client.return_value = client
- runner = click.testing.CliRunner(mix_stderr=False)
+ if inspect.signature(click.testing.CliRunner).parameters.get("mix_stderr"):
+ runner = click.testing.CliRunner(mix_stderr=False)
+ else:
+ runner = click.testing.CliRunner()
params = ['FFFFFFFFFFFFFFF']
result = runner.invoke(rm, params, obj=mock_client)
Index: grimoirelab-sortinghat-1.7.1/tests/cli/test_cmd_show.py
===================================================================
--- grimoirelab-sortinghat-1.7.1.orig/tests/cli/test_cmd_show.py
+++ grimoirelab-sortinghat-1.7.1/tests/cli/test_cmd_show.py
@@ -20,6 +20,7 @@
# Santiago Dueñas <sduenas@bitergia.com>
#
+import inspect
import unittest
import unittest.mock
@@ -329,7 +330,11 @@ class TestShowCommand(unittest.TestCase)
client = MockClient(responses)
mock_client.return_value = client
- runner = click.testing.CliRunner()
+ if inspect.signature(click.testing.CliRunner).parameters.get("mix_stderr"):
+ runner = click.testing.CliRunner(mix_stderr=False)
+ else:
+ runner = click.testing.CliRunner()
+
result = runner.invoke(show)
self.assertEqual(len(client.ops), 2)
@@ -367,7 +372,10 @@ class TestShowCommand(unittest.TestCase)
client = MockClient(responses)
mock_client.return_value = client
- runner = click.testing.CliRunner()
+ if inspect.signature(click.testing.CliRunner).parameters.get("mix_stderr"):
+ runner = click.testing.CliRunner(mix_stderr=False)
+ else:
+ runner = click.testing.CliRunner()
params = ['17ab00ed3825ec2f50483e33c88df223264182ba']
result = runner.invoke(show, params)
@@ -401,7 +409,10 @@ class TestShowCommand(unittest.TestCase)
client = MockClient(responses)
mock_client.return_value = client
- runner = click.testing.CliRunner()
+ if inspect.signature(click.testing.CliRunner).parameters.get("mix_stderr"):
+ runner = click.testing.CliRunner(mix_stderr=False)
+ else:
+ runner = click.testing.CliRunner()
result = runner.invoke(show)
@@ -431,7 +442,10 @@ class TestShowCommand(unittest.TestCase)
client = MockClient(responses)
mock_client.return_value = client
- runner = click.testing.CliRunner(mix_stderr=False)
+ if inspect.signature(click.testing.CliRunner).parameters.get("mix_stderr"):
+ runner = click.testing.CliRunner(mix_stderr=False)
+ else:
+ runner = click.testing.CliRunner()
result = runner.invoke(show)
Index: grimoirelab-sortinghat-1.7.1/tests/cli/test_cmd_split.py
===================================================================
--- grimoirelab-sortinghat-1.7.1.orig/tests/cli/test_cmd_split.py
+++ grimoirelab-sortinghat-1.7.1/tests/cli/test_cmd_split.py
@@ -20,6 +20,7 @@
# Santiago Dueñas <sduenas@bitergia.com>
#
+import inspect
import unittest
import unittest.mock
@@ -91,7 +92,10 @@ class TestSplitCommand(unittest.TestCase
client = MockClient(responses)
mock_client.return_value = client
- runner = click.testing.CliRunner()
+ if inspect.signature(click.testing.CliRunner).parameters.get("mix_stderr"):
+ runner = click.testing.CliRunner(mix_stderr=False)
+ else:
+ runner = click.testing.CliRunner()
# Split into individuals
params = uuids
@@ -124,7 +128,10 @@ class TestSplitCommand(unittest.TestCase
client = MockClient(responses)
mock_client.return_value = client
- runner = click.testing.CliRunner()
+ if inspect.signature(click.testing.CliRunner).parameters.get("mix_stderr"):
+ runner = click.testing.CliRunner(mix_stderr=False)
+ else:
+ runner = click.testing.CliRunner()
# Split into individuals
params = uuids
@@ -157,7 +164,10 @@ class TestSplitCommand(unittest.TestCase
client = MockClient(responses)
mock_client.return_value = client
- runner = click.testing.CliRunner(mix_stderr=False)
+ if inspect.signature(click.testing.CliRunner).parameters.get("mix_stderr"):
+ runner = click.testing.CliRunner(mix_stderr=False)
+ else:
+ runner = click.testing.CliRunner()
params = [
'322397ed782a798ffd9d0bc7e293df4292fe075d',
Index: grimoirelab-sortinghat-1.7.1/tests/cli/test_cmd_withdraw.py
===================================================================
--- grimoirelab-sortinghat-1.7.1.orig/tests/cli/test_cmd_withdraw.py
+++ grimoirelab-sortinghat-1.7.1/tests/cli/test_cmd_withdraw.py
@@ -20,6 +20,7 @@
# Santiago Dueñas <sduenas@bitergia.com>
#
+import inspect
import unittest
import unittest.mock
@@ -92,7 +93,10 @@ class TestWithdrawCommand(unittest.TestC
client = MockClient(responses)
mock_client.return_value = client
- runner = click.testing.CliRunner()
+ if inspect.signature(click.testing.CliRunner).parameters.get("mix_stderr"):
+ runner = click.testing.CliRunner(mix_stderr=False)
+ else:
+ runner = click.testing.CliRunner()
# Remove enrollments
params = [
@@ -122,7 +126,10 @@ class TestWithdrawCommand(unittest.TestC
client = MockClient(responses)
mock_client.return_value = client
- runner = click.testing.CliRunner()
+ if inspect.signature(click.testing.CliRunner).parameters.get("mix_stderr"):
+ runner = click.testing.CliRunner(mix_stderr=False)
+ else:
+ runner = click.testing.CliRunner()
# Remove enrollments
params = [
@@ -145,7 +152,10 @@ class TestWithdrawCommand(unittest.TestC
client = MockClient([])
mock_client.return_value = client
- runner = click.testing.CliRunner(mix_stderr=False)
+ if inspect.signature(click.testing.CliRunner).parameters.get("mix_stderr"):
+ runner = click.testing.CliRunner(mix_stderr=False)
+ else:
+ runner = click.testing.CliRunner()
params = [
'322397ed782a798ffd9d0bc7e293df4292fe075d',
@@ -190,7 +200,10 @@ class TestWithdrawCommand(unittest.TestC
client = MockClient(responses)
mock_client.return_value = client
- runner = click.testing.CliRunner(mix_stderr=False)
+ if inspect.signature(click.testing.CliRunner).parameters.get("mix_stderr"):
+ runner = click.testing.CliRunner(mix_stderr=False)
+ else:
+ runner = click.testing.CliRunner()
params = [
'322397ed782a798ffd9d0bc7e293df4292fe075d',

View File

@@ -1,24 +0,0 @@
Index: grimoirelab-sortinghat-1.5.1/sortinghat/core/middleware.py
===================================================================
--- grimoirelab-sortinghat-1.5.1.orig/sortinghat/core/middleware.py
+++ grimoirelab-sortinghat-1.5.1/sortinghat/core/middleware.py
@@ -16,7 +16,6 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from django.http import Http404
-from graphql_jwt.compat import get_operation_name
from graphql_jwt.settings import jwt_settings
from . import tenant
@@ -27,7 +26,10 @@ def allow_any(info, **kwargs):
# "How to solve 'NoneType' object has no attribute 'fields' in
# Graphene-django" (https://stackoverflow.com/a/71296685).
try:
- operation_name = get_operation_name(info.operation.operation).title()
+ if hasattr(info.operation.operation, 'value'):
+ operation_name = info.operation.operation.value.title()
+ else:
+ operation_name = info.operation.operation.title()
operation_type = info.schema.get_type(operation_name)
if hasattr(operation_type, 'fields'):