Commit 5351f71f8ac14c9c3b7298de6025fdaf8e0058b1

Authored by Miguel Barão
1 parent f4aa081d
Exists in dev

minor

Showing 2 changed files with 27 additions and 25 deletions   Show diff stats
README.md
... ... @@ -11,14 +11,14 @@
11 11  
12 12 ## Requirements
13 13  
14   -The webserver is a python application that requires `>=python3.8` and the
  14 +The web server is a python application that requires `>=python3.11` and the
15 15 package installer for python `pip`. The node package management `npm` is also
16   -necessary in order to install the javascript libraries.
  16 +necessary in order to install javascript libraries.
17 17  
18 18 ```sh
19 19 sudo apt install python3 python3-pip npm # Ubuntu
20   -sudo pkg install python38 py38-sqlite3 py38-pip npm # FreeBSD
21   -sudo port install python38 py38-pip py38-setuptools npm6 # MacOS (macports)
  20 +sudo pkg install python py311-sqlite3 py311-pip npm # FreeBSD
  21 +sudo port install python312 py312-pip py312-setuptools npm10 # MacOS (macports)
22 22 ```
23 23  
24 24 To make the `pip` install packages to a local directory, the file `pip.conf`
... ...
perguntations/testfactory.py
... ... @@ -9,7 +9,8 @@ import random
9 9 import logging
10 10  
11 11 # other libraries
12   -import schema
  12 +# import schema
  13 +from schema import And, Or, Optional, Regex, Schema, Use
13 14  
14 15 # this project
15 16 from .questions import QFactory, QuestionException, QDict
... ... @@ -41,34 +42,35 @@ def check_import_files(files: list) -> bool:
41 42 return True
42 43  
43 44  
44   -def normalize_question_list(questions: list) -> None:
45   - """convert question ref from string to list of string"""
46   - for question in questions:
47   - if isinstance(question["ref"], str):
48   - question["ref"] = [question["ref"]]
49   -
50   -
51   -test_schema = schema.Schema(
  45 +test_schema = Schema(
52 46 {
53   - "ref": schema.Regex("^[a-zA-Z0-9_-]+$"),
54   - "database": schema.And(str, path.isfile),
55   - "answers_dir": schema.And(str, check_answers_directory),
  47 + "ref": Regex("^[a-zA-Z0-9_-]+$"),
  48 + "database": And(str, path.isfile),
  49 + "answers_dir": Use(check_answers_directory),
56 50 "title": str,
57   - schema.Optional("duration"): int,
58   - schema.Optional("autosubmit"): bool,
59   - schema.Optional("autocorrect"): bool,
60   - schema.Optional("show_points"): bool,
61   - schema.Optional("scale"): schema.And(
62   - [schema.Use(float)], lambda s: len(s) == 2
63   - ),
64   - "files": schema.And([str], check_import_files),
65   - "questions": [{"ref": schema.Or(str, [str]), schema.Optional("points"): float}],
  51 + Optional("duration"): int,
  52 + Optional("autosubmit"): bool,
  53 + Optional("autocorrect"): bool,
  54 + Optional("show_points"): bool,
  55 + Optional("scale"): And([Use(float)], lambda s: len(s) == 2),
  56 + "files": And([str], check_import_files),
  57 + "questions": [{
  58 + "ref": Or(str, [str]),
  59 + Optional("points"): float
  60 + }],
66 61 },
67 62 ignore_extra_keys=True,
68 63 )
69 64 # FIXME: schema error with 'testfile' which is added in the code
70 65  
71 66 # ============================================================================
  67 +def normalize_question_list(questions: list) -> None: # FIXME: move inside the class?
  68 + """convert question ref from string to list of string"""
  69 + for question in questions:
  70 + if isinstance(question["ref"], str):
  71 + question["ref"] = [question["ref"]]
  72 +
  73 +
72 74 class TestFactoryException(Exception):
73 75 """exception raised in this module"""
74 76  
... ...