sedrila


Namesedrila JSON
Version 2.3.0 PyPI version JSON
download
home_pagehttps://github.com/fubinf/sedrila
SummaryTool infrastructure for building and running "self-driven lab" courses
upload_time2024-10-10 11:31:16
maintainerNone
docs_urlNone
authorLutz Prechelt
requires_python<4.0,>=3.11
licenseMIT
keywords static site generator learning management system
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            [![Documentation Status](https://readthedocs.org/projects/sedrila/badge/?version=latest)](https://sedrila.readthedocs.io/en/latest/?badge=latest)

# `sedrila`: Tool infrastructure for building and running "self-driven lab" courses

A "self-driven lab" (SeDriLa) course is one where students select freely 
a subset from a large set of tasks.
The tasks are described with sufficient detail that no guidance from an instructor
is needed most of the time.

sedrila is a command-line tool supporting course authors for authoring a course
and then course instructors and students for executing it.

Find the [documentation at readthedocs](https://sedrila.readthedocs.io).


## 1. Ideas for future versions


### 1.1 A currently needed refactoring: Target directory structure

The current layout of the source tree is wrong.
Currently, the `templates` and `baseresources` directories will end up 
as top-level directories when the package is installed,
which means they will clash with any top-level modules of that name
anywhere in our dependencies.

We need to perform the following refactorings to arrive at a proper structure:

- `py` --> `sedrila`: This will be the top level directory that gets installed.
- `sedrila/sdrl/*` --> `sedrila/*`: We remove the now-intermediate namespace.
  This implies joining the current `sdrl/tests` into `sedrila/tests`.
- `templates` --> `sedrila/templates`: The HTML templates simply become part of the
  tree to be installed.
- `baseresources` --> `sedrila/baseresources`: Ditto.

These changes require a lot of changes of import statements.
For instance, the current module `base` will become `sedrila.base`
and `sdrl.course` will become `sedrila.course`.
The logic for computing `sedrila_libdir` in `courses.py` must be adapted.
`SedrilaArgParser.get_version()` must be adapted.
The files lists in `pyproject.toml` must be corrected.


### 1.2 `instructor`: Handling instructors' trees of student repos

- Process `SEDRILA_INSTRUCTOR_COURSE_URLS` as described in the instructor documentation.
- `sedrila instructor` should keep a JSON file `student_course_urls.json` that maps student usernames
  to the course URL first seen for that student, because if a student ever changed
  the URL in the `student.yaml`, prior signed commits of instructors might become 
  invalid semantically if the new course has a different set of tasks.  
  The map is added to when a `student.yaml` is first seen
  and checked against at each later time.  
  Note that a student taking part a second time, with a fresh repo,
  might require manual editing of that JSON file to remove that entry.
- Better yet, there could be an option `sedrial instructor --allow-repo2` that 
  performs that editing automatically
  and also checks that the new repo contains no instructor-signed commits.
- Command `sedrila instructor --clean-up-repos-home`
  to clean up instructor work directory trees-of-trees
  by deleting all level-1 subtrees in which the `student.yaml`
  has a `course_url` that is not mentioned in the 
  `SEDRILA_INSTRUCTOR_COURSE_URLS`environment variable.
  This option should ask a safety question before starting to work.
- Add `sedrila instructor --http` which presents the local directory tree to localhost as follows:
    - Show directory, each file is a hyperlink, including `..` (except in the starting directory)
    - *.md files get rendered as Markdown
    - *.txt files get shown verbatim
    - *.py file contents are Markdown-rendered as a Python code block. Ditto for other languages.


## 2. Development process: TODO-handling during development

We use this convention for the development of `sedrila`.
It may also be helpful for course authors if the team is small enough.

If something is incomplete, add a TODO marker with a priorization digit and
add a short description of what needs to be done. Examples:
- `TODO 1: find proper formulation`
- `TODO 2: restructure to use ACME lib`
- `TODO 3: add automatic grammar correction`

Priorities:
- 1: to be completed soon (within a few days)
- 2: to be completed once the prio 1 things are done (within days or a few weeks)
- 3: to be completed at some later time (usually several weeks or more into the future,
  because it is big) or never (because it is not-so-important: "nice-to-have features")

Then use the IDE global search to work through these layer-by-layer.
Demote items to a lower priority when they become stale or remove them.
Kick out prio 3 items when they become unlikely.

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/fubinf/sedrila",
    "name": "sedrila",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<4.0,>=3.11",
    "maintainer_email": null,
    "keywords": "static site generator, learning management system",
    "author": "Lutz Prechelt",
    "author_email": "prechelt@inf.fu-berlin.de",
    "download_url": "https://files.pythonhosted.org/packages/ed/51/d5501e51a7a97e8a73f7a8b7cc35ec2d0ecf0fdbb82245fc59d5cb2aadd9/sedrila-2.3.0.tar.gz",
    "platform": null,
    "description": "[![Documentation Status](https://readthedocs.org/projects/sedrila/badge/?version=latest)](https://sedrila.readthedocs.io/en/latest/?badge=latest)\n\n# `sedrila`: Tool infrastructure for building and running \"self-driven lab\" courses\n\nA \"self-driven lab\" (SeDriLa) course is one where students select freely \na subset from a large set of tasks.\nThe tasks are described with sufficient detail that no guidance from an instructor\nis needed most of the time.\n\nsedrila is a command-line tool supporting course authors for authoring a course\nand then course instructors and students for executing it.\n\nFind the [documentation at readthedocs](https://sedrila.readthedocs.io).\n\n\n## 1. Ideas for future versions\n\n\n### 1.1 A currently needed refactoring: Target directory structure\n\nThe current layout of the source tree is wrong.\nCurrently, the `templates` and `baseresources` directories will end up \nas top-level directories when the package is installed,\nwhich means they will clash with any top-level modules of that name\nanywhere in our dependencies.\n\nWe need to perform the following refactorings to arrive at a proper structure:\n\n- `py` --> `sedrila`: This will be the top level directory that gets installed.\n- `sedrila/sdrl/*` --> `sedrila/*`: We remove the now-intermediate namespace.\n  This implies joining the current `sdrl/tests` into `sedrila/tests`.\n- `templates` --> `sedrila/templates`: The HTML templates simply become part of the\n  tree to be installed.\n- `baseresources` --> `sedrila/baseresources`: Ditto.\n\nThese changes require a lot of changes of import statements.\nFor instance, the current module `base` will become `sedrila.base`\nand `sdrl.course` will become `sedrila.course`.\nThe logic for computing `sedrila_libdir` in `courses.py` must be adapted.\n`SedrilaArgParser.get_version()` must be adapted.\nThe files lists in `pyproject.toml` must be corrected.\n\n\n### 1.2 `instructor`: Handling instructors' trees of student repos\n\n- Process `SEDRILA_INSTRUCTOR_COURSE_URLS` as described in the instructor documentation.\n- `sedrila instructor` should keep a JSON file `student_course_urls.json` that maps student usernames\n  to the course URL first seen for that student, because if a student ever changed\n  the URL in the `student.yaml`, prior signed commits of instructors might become \n  invalid semantically if the new course has a different set of tasks.  \n  The map is added to when a `student.yaml` is first seen\n  and checked against at each later time.  \n  Note that a student taking part a second time, with a fresh repo,\n  might require manual editing of that JSON file to remove that entry.\n- Better yet, there could be an option `sedrial instructor --allow-repo2` that \n  performs that editing automatically\n  and also checks that the new repo contains no instructor-signed commits.\n- Command `sedrila instructor --clean-up-repos-home`\n  to clean up instructor work directory trees-of-trees\n  by deleting all level-1 subtrees in which the `student.yaml`\n  has a `course_url` that is not mentioned in the \n  `SEDRILA_INSTRUCTOR_COURSE_URLS`environment variable.\n  This option should ask a safety question before starting to work.\n- Add `sedrila instructor --http` which presents the local directory tree to localhost as follows:\n    - Show directory, each file is a hyperlink, including `..` (except in the starting directory)\n    - *.md files get rendered as Markdown\n    - *.txt files get shown verbatim\n    - *.py file contents are Markdown-rendered as a Python code block. Ditto for other languages.\n\n\n## 2. Development process: TODO-handling during development\n\nWe use this convention for the development of `sedrila`.\nIt may also be helpful for course authors if the team is small enough.\n\nIf something is incomplete, add a TODO marker with a priorization digit and\nadd a short description of what needs to be done. Examples:\n- `TODO 1: find proper formulation`\n- `TODO 2: restructure to use ACME lib`\n- `TODO 3: add automatic grammar correction`\n\nPriorities:\n- 1: to be completed soon (within a few days)\n- 2: to be completed once the prio 1 things are done (within days or a few weeks)\n- 3: to be completed at some later time (usually several weeks or more into the future,\n  because it is big) or never (because it is not-so-important: \"nice-to-have features\")\n\nThen use the IDE global search to work through these layer-by-layer.\nDemote items to a lower priority when they become stale or remove them.\nKick out prio 3 items when they become unlikely.\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Tool infrastructure for building and running \"self-driven lab\" courses",
    "version": "2.3.0",
    "project_urls": {
        "Homepage": "https://github.com/fubinf/sedrila",
        "Repository": "https://github.com/fubinf/sedrila"
    },
    "split_keywords": [
        "static site generator",
        " learning management system"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5af631522d777d01dec58e08aec3fccff2a505eeb36d921bccdbf8865162c6fb",
                "md5": "cf411bb0afe896c74cd1f8658cfde08a",
                "sha256": "7433bcc8c06512772ffcf209e82b18defb051d51784bd60baa72b563c33f132e"
            },
            "downloads": -1,
            "filename": "sedrila-2.3.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "cf411bb0afe896c74cd1f8658cfde08a",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4.0,>=3.11",
            "size": 79754,
            "upload_time": "2024-10-10T11:31:14",
            "upload_time_iso_8601": "2024-10-10T11:31:14.789294Z",
            "url": "https://files.pythonhosted.org/packages/5a/f6/31522d777d01dec58e08aec3fccff2a505eeb36d921bccdbf8865162c6fb/sedrila-2.3.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ed51d5501e51a7a97e8a73f7a8b7cc35ec2d0ecf0fdbb82245fc59d5cb2aadd9",
                "md5": "b156aebefefb703eb6932c120cddb896",
                "sha256": "e2ad010dde7f191f7607e0c902b11f000d89ebe385366f54a847a3216298d57c"
            },
            "downloads": -1,
            "filename": "sedrila-2.3.0.tar.gz",
            "has_sig": false,
            "md5_digest": "b156aebefefb703eb6932c120cddb896",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4.0,>=3.11",
            "size": 67292,
            "upload_time": "2024-10-10T11:31:16",
            "upload_time_iso_8601": "2024-10-10T11:31:16.303162Z",
            "url": "https://files.pythonhosted.org/packages/ed/51/d5501e51a7a97e8a73f7a8b7cc35ec2d0ecf0fdbb82245fc59d5cb2aadd9/sedrila-2.3.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-10-10 11:31:16",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "fubinf",
    "github_project": "sedrila",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "sedrila"
}
        
Elapsed time: 4.07713s