Deploy a course to stepik.org, markdown and GIFT format.
Онлайн-курс по работе со StepKit, форматам шагов и примерами: https://stepik.org/course/253149
Загрузить все шаги урока. Урок написан в файле first_lesson.md. ID урока должно быть описано в файле.
python deploy.py first_lesson.mdЗагрузить второй шаг урока, первый шаг имеет номер 1. Урок написан в файле first_lesson.md.
python deploy.py first_lesson.md -s 2Загрузить последний шаг урока, последний шаг имеет номер -1 (предпоследний -2 и т.д.).
Урок написан в файле first_lesson.md.
python deploy.py first_lesson.md -s -1Дополнительные опции:
-s Nили--step N- номер шага N, начинается с 1, допускаются отрицательные числа (-1 - последний шаг).
Можно проверить работу программы, запустив скрипт snapshops_manager для уроков в examples:
python src/verification/snapshops_manager.py examples/step_first.md Для подробной информации вызовите
python src/verification/snapshops_manager.py -hШаги урока хранятся в отдельном файле в формате markdown с дополнительной разметкой.
- Файл начинается с заголовка 1 уровня - это заголовок урока.
- Далее идет секция переменных урока:
lesson- ID урока, берется из URL урока, вhttps://stepik.org/lesson/1945910/step/1?unit=1973035ID урока 1945910.lang- язык для решений всех задач урока, если не указать, доступны все языки.
- Далее, начиная с заголовка 2 уровня описывается очередной шаг урока.
- В заголовке 2 уровня в начале пишем тип шага. По умолчанию тип TEXT.
SKIP- идет до или после типа, означает, что данный шаг не будет ни разобран, ни загружен на Stepik.- Далее идет текст заголовка, который будет написан в начале шага.
Примеры шагов: https://github.com/tatyderb/stepik_deploy/tree/main/examples
В шагах определяются секции. Название секции пишется большими буквами с начала строки. Кроме названия секции на строке ничего не пишется.
Опции задаются как опция разделитель значение.
- Опции урока смотрите выше в разделе "Файл с уроком".
- Общие опции шагов определены в секции
CONFIG. Эта секция может быть в любом шаге:score- баллы за данный шаг (пока не реализовано)
- Разделитель -
:или=. Старайтесь придерживаться одного стиля разделителей во всех уроках вашего курса. - Значение - текст до конца строки.
В формате markdown. Пример
Шаг описывается по шаблону:
## QUIZ Заголовок
Текст условия
A. вариант 1
B. вариант 2
C. вариант 3
ANSWER: A, C
CONFIG
shuffle: false
- Варианты
- начинаются с латинской буквы и точки, далее пробельный символ
- латинские буквы должны быть разными
- вариант может быть на нескольких строках
- может содержать математические формулы, код и картинки
- Ответ может быть один или несколько через запятую
- одиночный ответ - radio button
- множество вариантов ответа - checkbox
- одиночный ответ - radio button
CONFIGбез:в конце названия секции!!!shuffle- перемешивать варианты или нет
## SORT Заголовок
Текст условия
SORT
Первый вариант
====
Второй вариант
====
И следующие варианты аналогично
====
CONFIG
html: true
## MATCH Заголовок
Текст условия
MATCH
Пункт 1
----
Значение, соответствующее пункту 1
====
Пункт 2
----
Значение, соответствующее пункту 2
====
Пункт 3
----
Значение, соответствующее пункту 3
====
CONFIG
shuffle: false
html: true
shuffle - перемешивать ли варианты в первом столбце, по умолчанию нет (во втором всегда перемешиваются) html - допускается ли html, по умолчанию да
## TABLE Заголовок
Текст условия
TABLE
| Ряды: | Первая колонка | Вторая колонка |
|------------|----------------|----------------|
| Первый ряд | + | |
| Второй ряд | | + |
CONFIG
shuffle_rows: true
shuffle_columns: true
accept_any_answer: false
allow_multiple: false
shuffle_rows - перемешивать ли ряды, по умолчанию да shuffle_columns - перемешивать ли колонки, по умолчанию да accept_any_answer - считается ли любой ответ верным, по умолчанию нет allow_multiple - да, если в каждой строке можно выбирать несколько вариантов; по умолчанию нет
Ячейки можно несколькими способами: верный ответ: +, 1, да, true, yes, y неверный ответ: либо пустая ячейка, либо -, 0, нет, false, no, n (Регистр любой)
Между строками таблицы можно использовать декоративные разделители
## NUMBER Заголовок
Текст условия
ANSWER: число +- точность
Допускается один или более ответов, пишем один ответ на одной строке. Часть +- точность не обязательна.
## STRING Заголовок
Текст условия
ANSWER: строка, несколько строк или регулярное выражение
CONFIG
use_re: false
match_substring: false
case_sensitive: false
is_text_disabled: false
is_file_disabled: true
- match_substring - Сверка по фрагменту
- use_re - Проверка по регулярному выражению
- case_sensitive - Учитывать регистр и различать заглавные и строчные буквы
- is_text_disabled - Запретить ввод ответа в текстовое поле
- is_file_disabled - Запретить посылку файла с ответом
## ESSAY Заголовок
Текст условия
## TASKINLINE Заголовок
Текст условия
TEST
input1
----
output1
====
input2
----
output2
====
HEADER
код до кода ученика
FOOTER
код после кода ученика
CODE
шаблон для ученика
CONFIG
lang: python
visible_tests: 3
checker: std_float_seq
additional_params: "EPS=0.01"
- Секции идут в произвольном порядке
- ключевые слова пишутся с начала строки
- Секции
HEADER- код, который пристыковывается до кода ученикаFOOTER- код, который пристыковывается после кода ученикаCODE- шаблон, появляется в онлайн-редакторе для ученикаTEMPLATE- вместо разделовHEADER,FOOTER,CODEвы можете написать весь код вкладки "Языки и Шаблоны" в одном месте. Пригодится, если у вас задача для нескольких языков программирования и каждому из них нужны свои разделы.GENCHECKSOLVE- содержимое вкладки "Расширенный редактор" (приоритетней выбора чекера).
TEST- тесты, входные данные и ожидаемые выходные данные- линия из 4+
-отделяет входные данные от эталонных выходных - линия из 4+
=заканчивает эталонные выходные данные - входные и выходные данные могут быть на нескольких строках, могут не быть вообще.
- линия из 4+
CONFIG- опции задачиlang- язык программирования, перечислены через запятую, смотри поддерживаемые языкиall- нет ограничения на языки программирования
visible_tests- количество открытых входных и выходных данных, только по указанным тестам показываются данные в разделе "Тестовые данные" и в диагностике об ошибочном решении (в разработке).checker- название стандартных проверяющих программstd_float_seq- последовательность нецелых чисел, с точностью доEPS, по умолчаниюEPS=0.001
additional_params- дополнительные параметры для чекеров и тп.