Skip to content

Commit 243a81c

Browse files
committed
Added catch to print warnings for backend missing in config.
Updated tests. Rembed unneeded pyflakes override. Ran sed on files to appease nitpicks.
1 parent ddceaec commit 243a81c

File tree

12 files changed

+34
-24
lines changed

12 files changed

+34
-24
lines changed

assigner/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from colorlog import ColoredFormatter
88
from requests.exceptions import HTTPError
99

10-
from assigner.backends.decorators import requires_backend_and_config
10+
from assigner.backends.decorators import requires_config_and_backend
1111
from assigner.roster_util import get_filtered_roster
1212
from assigner.progress import Progress
1313

@@ -44,7 +44,7 @@
4444
]
4545

4646

47-
@requires_backend_and_config
47+
@requires_config_and_backend
4848
def manage_repos(conf, backend, args, action):
4949
"""Performs an action (lambda) on all student repos
5050
"""

assigner/backends/base.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,6 @@ def push_to(self, student_repo: StudentRepoBase, branch: str = "master") -> None
150150
raise NotImplementedError
151151

152152

153-
#pylint: disable=too-few-public-methods
154153
class BackendBase(object):
155154
"""
156155
Common abstract base backend for all assigner backends (gitlab or mock).

assigner/backends/decorators.py

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,25 @@
1+
import logging
2+
13
from assigner.backends import GitlabBackend, MockBackend
24
from assigner.config import requires_config
35

46

5-
def requires_backend_and_config(func):
7+
logger = logging.getLogger(__name__)
8+
9+
10+
def requires_config_and_backend(func):
611
"""Provides a backend depending on configuration."""
712
@requires_config
813
def wrapper(config, cmdargs, *args, **kwargs):
9-
if config.backend == "gitlab":
14+
try:
15+
config.backend
16+
except KeyError:
17+
logger.info(
18+
"The 'backend' field in config is not set; it will default to Gitlab."
19+
)
1020
return func(config, GitlabBackend, cmdargs, *args, **kwargs)
11-
if config.backend == "mock":
12-
return func(config, MockBackend, cmdargs, *args, **kwargs)
1321

14-
return func(config, GitlabBackend, cmdargs, *args, **kwargs)
22+
if config.backend == "gitlab":
23+
return func(config, GitlabBackend, cmdargs, *args, **kwargs)
24+
return func(config, MockBackend, cmdargs, *args, **kwargs)
1525
return wrapper

assigner/commands/assign.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import time
44

55
from assigner.backends.base import RepoError
6-
from assigner.backends.decorators import requires_backend_and_config
6+
from assigner.backends.decorators import requires_config_and_backend
77
from assigner.commands.open import open_assignment
88
from assigner.progress import Progress
99
from assigner.roster_util import get_filtered_roster
@@ -15,7 +15,7 @@
1515
logger = logging.getLogger(__name__)
1616

1717

18-
@requires_backend_and_config
18+
@requires_config_and_backend
1919
def assign(conf, backend, args):
2020
"""Creates homework repositories for an assignment for each student
2121
in the roster.

assigner/commands/canvas.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from prettytable import PrettyTable
44

55
from assigner import make_help_parser
6-
from assigner.backends.decorators import requires_backend_and_config
6+
from assigner.backends.decorators import requires_config_and_backend
77
from assigner.canvas import CanvasAPI
88
from assigner.config import requires_config, DuplicateUserError
99
from assigner.roster_util import add_to_roster
@@ -13,7 +13,7 @@
1313
logger = logging.getLogger(__name__)
1414

1515

16-
@requires_backend_and_config
16+
@requires_config_and_backend
1717
def import_from_canvas(conf, backend, args):
1818
"""Imports students from a Canvas course to the roster.
1919
"""

assigner/commands/get.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from git.exc import NoSuchPathError, GitCommandError
66

77
from assigner.backends import RepoError
8-
from assigner.backends.decorators import requires_backend_and_config
8+
from assigner.backends.decorators import requires_config_and_backend
99
from assigner.progress import Progress
1010
from assigner.roster_util import get_filtered_roster
1111

@@ -16,7 +16,7 @@
1616
logger = logging.getLogger(__name__)
1717

1818

19-
@requires_backend_and_config
19+
@requires_config_and_backend
2020
def get(conf, backend, args):
2121
"""
2222
Creates a folder for the assignment in the CWD (or <path>, if specified)

assigner/commands/import.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import logging
33
import re
44

5-
from assigner.backends.decorators import requires_backend_and_config
5+
from assigner.backends.decorators import requires_config_and_backend
66
from assigner.config import DuplicateUserError
77
from assigner.roster_util import add_to_roster
88

@@ -11,7 +11,7 @@
1111
logger = logging.getLogger(__name__)
1212

1313

14-
@requires_backend_and_config
14+
@requires_config_and_backend
1515
def import_students(conf, backend, args):
1616
"""Imports students from a CSV file to the roster.
1717
"""

assigner/commands/new.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@
22

33
from requests.exceptions import HTTPError
44

5-
from assigner.backends.decorators import requires_backend_and_config
5+
from assigner.backends.decorators import requires_config_and_backend
66

77
help = "Create a new template repo"
88

99
logger = logging.getLogger(__name__)
1010

1111

12-
@requires_backend_and_config
12+
@requires_config_and_backend
1313
def new(conf, backend, args):
1414
"""
1515
Creates a new template repository for an assignment so that you can add the

assigner/commands/open.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from requests.exceptions import HTTPError
44

55
from assigner.backends.base import RepoError
6-
from assigner.backends.decorators import requires_backend_and_config
6+
from assigner.backends.decorators import requires_config_and_backend
77
from assigner.roster_util import get_filtered_roster
88
from assigner.progress import Progress
99

@@ -23,7 +23,7 @@ def open_assignment(repo, student, access):
2323
raise
2424

2525

26-
@requires_backend_and_config
26+
@requires_config_and_backend
2727
def open_all_assignments(conf, backend, args):
2828
"""Adds each student in the roster to their respective homework
2929
repositories as Developers so they can pull/commit/push their work.

assigner/commands/roster.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from prettytable import PrettyTable
44

55
from assigner import make_help_parser
6-
from assigner.backends.decorators import requires_backend_and_config
6+
from assigner.backends.decorators import requires_config_and_backend
77
from assigner.config import requires_config, DuplicateUserError
88
from assigner.roster_util import get_filtered_roster, add_to_roster
99

@@ -24,7 +24,7 @@ def list_students(conf, args):
2424
print(output)
2525

2626

27-
@requires_backend_and_config
27+
@requires_config_and_backend
2828
def add_student(conf, backend, args):
2929
"""Add a student to the roster
3030
"""

assigner/commands/status.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from prettytable import PrettyTable
66

77
from assigner.backends.base import RepoError
8-
from assigner.backends.decorators import requires_backend_and_config
8+
from assigner.backends.decorators import requires_config_and_backend
99
from assigner.progress import Progress
1010
from assigner.roster_util import get_filtered_roster
1111

@@ -14,7 +14,7 @@
1414
logger = logging.getLogger(__name__)
1515

1616

17-
@requires_backend_and_config
17+
@requires_config_and_backend
1818
def status(conf, backend, args):
1919
"""Retrieves and prints the status of repos"""
2020
hw_name = args.name

assigner/tests/utils.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,3 +46,4 @@ def setUp(self):
4646
)
4747

4848
self.mock_config = self.mock_config_class.return_value.__enter__.return_value
49+
self.mock_config.backend = "gitlab"

0 commit comments

Comments
 (0)