Skip to content
This repository has been archived by the owner on Dec 14, 2024. It is now read-only.

Commit

Permalink
Update all links to the new username
Browse files Browse the repository at this point in the history
  • Loading branch information
zmievsa committed Feb 8, 2024
1 parent efb2ebd commit 15f6b9d
Show file tree
Hide file tree
Showing 5 changed files with 45 additions and 23 deletions.
16 changes: 8 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<p align="center">
<a href="https://ovsyanka83.github.io/autograder/"><img src="https://raw.githubusercontent.com/Ovsyanka83/autograder/main/docs/_media/logo_with_text.svg" alt="AutoGrader"></a>
<a href="https://zmievsa.github.io/autograder/"><img src="https://raw.githubusercontent.com/zmievsa/autograder/main/docs/_media/logo_with_text.svg" alt="AutoGrader"></a>
</p>
<p align="center">
<b>A simple, secure, and versatile way to automatically grade programming assignments</b>
Expand All @@ -11,8 +11,8 @@
<a href="https://github.com/zmievsa/autograder/actions?query=workflow%3ATests+event%3Apush+branch%3Amain" target="_blank">
<img src="https://github.com/zmievsa/autograder/actions/workflows/test.yaml/badge.svg?branch=main&event=push" alt="Test">
</a>
<a href="https://codecov.io/gh/ovsyanka83/autograder" target="_blank">
<img src="https://img.shields.io/codecov/c/github/ovsyanka83/autograder?color=%2334D058" alt="Coverage">
<a href="https://codecov.io/gh/zmievsa/autograder" target="_blank">
<img src="https://img.shields.io/codecov/c/github/zmievsa/autograder?color=%2334D058" alt="Coverage">
</a>
<a href="https://pypi.org/project/autograder/" target="_blank">
<img alt="PyPI" src="https://img.shields.io/pypi/v/autograder?color=%2334D058&label=pypi%20package" alt="Package version">
Expand All @@ -25,14 +25,14 @@
## Features

* Blazingly fast (can grade hundreads of submissions using dozens of testcases in a few minutes. Seconds if grading python)
* [Easy to grade](https://ovsyanka83.github.io/autograder/#/?id=usage)
* [Easy-to-write testcases](https://ovsyanka83.github.io/autograder/#/?id=writing-testcases)
* Testcase grade can be based on [student's stdout](https://ovsyanka83.github.io/autograder/#/?id=helper-functions)
* [Easy to grade](https://zmievsa.github.io/autograder/#/?id=usage)
* [Easy-to-write testcases](https://zmievsa.github.io/autograder/#/?id=writing-testcases)
* Testcase grade can be based on [student's stdout](https://zmievsa.github.io/autograder/#/?id=helper-functions)
* Can grade C, C++, Java, and Python code in regular mode
* Can grade any programming language in stdout-only mode
* A file with testcase grades and details can be generated for each student
* You can customize the total points for the assignment, maximum running time of student's program, file names to be considered for grading, formatters for checking student stdout, and [so much more](https://github.com/zmievsa/autograder/blob/master/autograder/default_config.toml).
* [Anti Cheating capabilities](https://ovsyanka83.github.io/autograder/#/?id=anti-cheating) that make it nearly impossible for students to cheat
* [Anti Cheating capabilities](https://zmievsa.github.io/autograder/#/?id=anti-cheating) that make it nearly impossible for students to cheat
* Grading submissions in multiple programming languages at once
* JSON result output supported if autograder needs to be integrated as a part of a larger utility
* Can check submissions for similarity (plagiarism)
Expand All @@ -54,7 +54,7 @@
## Quickstart

* Run `autograder guide path/to/directory/you'd/like/to/grade`. The guide will create all of the necessary configurations and directories for grading and will explain how to grade.
* Read the [usage](https://ovsyanka83.github.io/autograder/#/?id=usage) section of the docs
* Read the [usage](https://zmievsa.github.io/autograder/#/?id=usage) section of the docs

## Supported Platforms

Expand Down
44 changes: 33 additions & 11 deletions autograder/guide.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,15 @@ def create_dir(path: Path):

def main(paths: AutograderPaths, language_name: Optional[str] = None, interactive=True):
if not paths.current_dir.exists() or not paths.current_dir.is_dir():
print(f"Directory {paths.current_dir} not found. Please, use an existing directory.")
print(
f"Directory {paths.current_dir} not found. Please, use an existing directory."
)
return
print("Hello. I will now guide you through the initial setup of autograder.")
if interactive:
ans = input(f"Would you like to grade submissions located in '{paths.current_dir}'? (Yes/No) ")
ans = input(
f"Would you like to grade submissions located in '{paths.current_dir}'? (Yes/No) "
)
else:
ans = "y"
if not ans.lower().startswith("y"):
Expand All @@ -36,7 +40,9 @@ def main(paths: AutograderPaths, language_name: Optional[str] = None, interactiv
create_dir(paths.extra_dir)
config_path = paths.config
if not config_path.exists():
print(f"config.ini not found in {paths.tests_dir}. Creating a default config...")
print(
f"config.ini not found in {paths.tests_dir}. Creating a default config..."
)
paths.generate_config()
else:
print("Found config.ini")
Expand Down Expand Up @@ -65,7 +71,9 @@ def main(paths: AutograderPaths, language_name: Optional[str] = None, interactiv
shutil.copytree(lang.get_template_dir(), paths.current_dir, dirs_exist_ok=True)
if lang.source_suffix.endswith("java"):
print("\nJava forces us to have the same name for module and class so")
print("you must put expected names for java submissions in tests/config.ini. Right now it's 'Homework'")
print(
"you must put expected names for java submissions in tests/config.ini. Right now it's 'Homework'"
)
print(
"\n\nNow if you want to grade your submissions, you can use 'autograder run path/to/submissions/dir' "
"for this directory."
Expand All @@ -74,24 +82,38 @@ def main(paths: AutograderPaths, language_name: Optional[str] = None, interactiv
print("If you want to see command line options, use 'autograder -h'")
print(f"You can put the stdin inputs to your testcases into {paths.input_dir}")
print(f"You can put the expected outputs to your testcases into {paths.output_dir}")
print(f"You can put the extra files to be available for each testcase into {paths.extra_dir}")
print(
f"You can put the extra files to be available for each testcase into {paths.extra_dir}"
)
print(f"You can configure grading by editing {paths.config}")
print("You can find docs at https://ovsyanka83.github.io/autograder/")
print("You can find docs at https://zmievsa.github.io/autograder/")


def _get_supported_languages() -> Dict[str, Type[TestCase]]:
testcase_types = TestCasePicker.discover_testcase_types(AutograderPaths.testcase_types_dir)
return {t.type_source_file.stem: t for t in testcase_types if (t.get_template_dir()).exists()}
testcase_types = TestCasePicker.discover_testcase_types(
AutograderPaths.testcase_types_dir
)
return {
t.type_source_file.stem: t
for t in testcase_types
if (t.get_template_dir()).exists()
}


def _get_a_valid_language_choice(supported_languages: Dict[str, Type[TestCase]]) -> Type[TestCase]:
def _get_a_valid_language_choice(
supported_languages: Dict[str, Type[TestCase]],
) -> Type[TestCase]:
allowed_languages = ", ".join(name for name in supported_languages.keys())

while True:
choice = input(f"Choose a programming language you'd like to get templates for ({allowed_languages}): ")
choice = input(
f"Choose a programming language you'd like to get templates for ({allowed_languages}): "
)
lang = supported_languages.get(choice, None)
if lang is None:
print(f"Couldn't find the language with name '{choice}'. Please, try again.")
print(
f"Couldn't find the language with name '{choice}'. Please, try again."
)
else:
break
return lang
4 changes: 2 additions & 2 deletions docs/README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
<a href="https://github.com/zmievsa/autograder/actions?query=workflow%3ATests+event%3Apush+branch%3Amain" target="_blank">
<img src="https://github.com/zmievsa/autograder/actions/workflows/test.yaml/badge.svg?branch=main&event=push" alt="Test">
</a>
<a href="https://codecov.io/gh/ovsyanka83/autograder" target="_blank">
<img src="https://img.shields.io/codecov/c/github/ovsyanka83/autograder?color=%2334D058" alt="Coverage">
<a href="https://codecov.io/gh/zmievsa/autograder" target="_blank">
<img src="https://img.shields.io/codecov/c/github/zmievsa/autograder?color=%2334D058" alt="Coverage">
</a>
<a href="https://pypi.org/project/autograder/" target="_blank">
<img alt="PyPI" src="https://img.shields.io/pypi/v/autograder?color=%2334D058&label=pypi%20package" alt="Package version">
Expand Down
2 changes: 1 addition & 1 deletion docs/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
<div id="app"></div>
<script>
window.$docsify = {
repo: 'Ovsyanka83/autograder',
repo: 'zmievsa/autograder',
coverpage: true,
themeColor: '#01478B',
ga: 'G-5L87BF9GBT',
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ description = "A simple, secure, and versatile way to automatically grade progra
authors = ["Stanislav Zmiev <[email protected]>"]
license = "GPL-3.0"
readme = "README.md"
documentation = "https://ovsyanka83.github.io/autograder/"
documentation = "https://zmievsa.github.io/autograder/"
repository = "https://github.com/zmievsa/autograder"
# this might be unnecessary, I don't remember and am too lazy too google
include = ["autograder/**/*"]
Expand Down

0 comments on commit 15f6b9d

Please sign in to comment.