sedrila


Namesedrila JSON
Version 1.1.0 PyPI version JSON
download
home_pagehttps://github.com/fubinf/sedrila
SummaryTool infrastructure for building and running "self-driven lab" courses
upload_time2024-04-23 11:49:10
maintainerNone
docs_urlNone
authorLutz Prechelt
requires_python<4.0,>=3.11
licenseMIT
keywords static site generator
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).


## Ideas for future versions

- 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.


## 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:
- `TODO 1`: to be completed soon (within a few days)
- `TODO 2`: to be completed once the prio 1 things are done (within days or a few weeks)
- `TODO 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")

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`

If you intend to do it yourself, add your name in parens:  
`TODO 1: find proper formulation (Lutz)`

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.


## 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.
The files lists in `pyproject.toml` must be corrected.

            

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",
    "author": "Lutz Prechelt",
    "author_email": "prechelt@inf.fu-berlin.de",
    "download_url": "https://files.pythonhosted.org/packages/cf/3a/29e6507d5d9ff28b89b373e9eba8ea11d80627a400381ec1a83de844812a/sedrila-1.1.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## Ideas for future versions\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\n\n## 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:\n- `TODO 1`: to be completed soon (within a few days)\n- `TODO 2`: to be completed once the prio 1 things are done (within days or a few weeks)\n- `TODO 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\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\nIf you intend to do it yourself, add your name in parens:  \n`TODO 1: find proper formulation (Lutz)`\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\n\n## 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.\nThe files lists in `pyproject.toml` must be corrected.\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Tool infrastructure for building and running \"self-driven lab\" courses",
    "version": "1.1.0",
    "project_urls": {
        "Homepage": "https://github.com/fubinf/sedrila",
        "Repository": "https://github.com/fubinf/sedrila"
    },
    "split_keywords": [
        "static",
        "site",
        "generator"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b6a993b21eef6be3d8fec03824c3c1ead5ed092149998ecd476102adee3d351b",
                "md5": "5b7d255fe9eb4f5305b667b02b7147a3",
                "sha256": "e4935a6b03d728addda7355f6b82dddfa2ef94c91baaf1724bd70404464382c2"
            },
            "downloads": -1,
            "filename": "sedrila-1.1.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "5b7d255fe9eb4f5305b667b02b7147a3",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4.0,>=3.11",
            "size": 55055,
            "upload_time": "2024-04-23T11:49:08",
            "upload_time_iso_8601": "2024-04-23T11:49:08.179900Z",
            "url": "https://files.pythonhosted.org/packages/b6/a9/93b21eef6be3d8fec03824c3c1ead5ed092149998ecd476102adee3d351b/sedrila-1.1.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "cf3a29e6507d5d9ff28b89b373e9eba8ea11d80627a400381ec1a83de844812a",
                "md5": "0815be8fc680ff8f8e9c7e22ac4d3280",
                "sha256": "504b0e04f22433a504b62fc77307b7e8a4b201f63078dcc690e1467fb834935d"
            },
            "downloads": -1,
            "filename": "sedrila-1.1.0.tar.gz",
            "has_sig": false,
            "md5_digest": "0815be8fc680ff8f8e9c7e22ac4d3280",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4.0,>=3.11",
            "size": 46651,
            "upload_time": "2024-04-23T11:49:10",
            "upload_time_iso_8601": "2024-04-23T11:49:10.915784Z",
            "url": "https://files.pythonhosted.org/packages/cf/3a/29e6507d5d9ff28b89b373e9eba8ea11d80627a400381ec1a83de844812a/sedrila-1.1.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-04-23 11:49:10",
    "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: 0.23566s