A build system for Quera technology challenges
Project description
qbuild is a build system for Quera technology challenges.
Installation
For installing qbuild, run the following command:
$ sudo pip install qbuild
Challenge Structure
challenge-name (git repo)
├── src
│ ├── [ ... source and test files ... ]
│ ├── .gitignore (optional)
│ ├── .qignore (optional)
│ ├── .qsolution (optional)
│ ├── .qtest (optional, BUT USUALLY NEEDED)
│ └── .qrun.py (optional)
├── statement
│ ├── attachments
│ │ └── [ ... image files ... ]
│ └── statement.md
├── .gitignore
├── README.md (generated from statement/statement.md, DO NOT EDIT)
├── tester_config.json
└── valid_files
CLI Usage
qbuild
: Build the challenge
First, cd
to the root of the challenge's git repository. Then run qbuild
command. That's it!
$ cd GIT-REPO
$ qbuild
For jupyter
problems if you need generate nonquera initial:
$ qbuild --jupyter
Folder dist
and file README.md
will be generated.
It creates folder .qbuild
for its internal work.
Do not push it. Add dist
and .qbuild
to gitignore.
qbuild diff
$ cd GIT-REPO
$ qbuild diff
This command generates a diff between
initial
and model_solution
exports.
It's helpful for checking that things are set correctly.
qbuild tree
$ qbuild tree path/to/some/directory
Use qbuild tree
to print the tree structure of a directory.
Do not use tree
command or anything else.
qbuild --version
Prints currently installed version.
Features
Problem Statement
statement
├── attachments
│ ├── image1.png
│ └── image2.png
└── statement.md
statement.md
is a Jinja2 template and must inherit statement_base.md
.
You can use variables has_initial
, initial_structure
, solution_structure
.
{% extends "statement_base.md" %}
{% block name %}Problem Name{% endblock %}
{% block readme %}
... extra info about problem ...
{% endblock readme %}
{% block intro %}
... intro ...
![Image 1](attachments/image1.png)
{% endblock intro %}
{% block details %}
... details ...
{% endblock details %}
{% block notes %}
... notes ...
```
{{ solution_structure }}
```
{% endblock notes %}
Ignore files: .qignore
, .qsolution
, .qtest
, .qsampletest
These files must be at the root of src
folder.
Their syntax is like gitignore.
You can specify test files in .qtest
You can specify sample test files in .qsampletest
. This files just hide in model_solution
export.
and solution files in .qsolution
.
Files ignored by .qignore
will be removed in all exports.
Warning: .qhide
is deprecated and is replaced by .qsolution
.
Replacement Rules: Comment Directives
// _q_solution_begin
... Part of Solution ...
// _q_end
// _q_test_begin
... Part of Test ...
// _q_end
They can also have a replace
block:
// _q_solution_begin
... Part of Solution ...
// _q_replace
// ... This will be uncommented & replaced ...
// _q_end
/* _q_test_begin */
... Part of Test ...
/* _q_replace */
/* ... This will be uncommented & replaced ... */
/* _q_end */
Any one-line comment syntax is supported.
Comments in each block should follow the same syntax.
e.g. You can't mix // ...
and /* ... */
.
Warning: These directives are depricated:
_q_hide_from_users_begin
: replaced by_q_solution_begin
_q_hide_from_users_end
: replaced by_q_end
Replacement Rules: .nosolution
, .notest
When comment directives can't help...
src/path/to/some/file.js
src/path/to/some/file.nosolution.js (`file.js` without solution)
src/path/to/some/file.js
src/path/to/some/file.notest.js (`file.js` without test)
Warning: .initial
is deprecated and is replaced by .nosolution
.
Build hook: .qrun.py
.qrun.py
must be at the root of src
.
qbuild
runs .qrun.py
in each export.
Arguments passed to .qrun.py
:
--hide-solution
: If passed, current export shouldn't contain solutions.--hide-test
: If passed, current export shouldn't contain tests.
Use .qrun.py
only if other features are not enough.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file qbuild-0.3.7.tar.gz
.
File metadata
- Download URL: qbuild-0.3.7.tar.gz
- Upload date:
- Size: 22.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.3.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.55.0 CPython/3.9.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 170c39e1285a845ddf7238bf1a9423f1856490061795793bb33ae3ad38fb5aeb |
|
MD5 | 04d08191654e98272363d9d5b939ff63 |
|
BLAKE2b-256 | 536d769f95d907da3c9fdadbe5f520759d692147119aee661e4c033b405b191f |