stackamole-xblock 9.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- stackamole_xblock-9.0.0/.bumpversion.cfg +16 -0
- stackamole_xblock-9.0.0/.githooks/pre-commit +2 -0
- stackamole_xblock-9.0.0/.githooks/pre-push +2 -0
- stackamole_xblock-9.0.0/.github/workflows/tox.yml +73 -0
- stackamole_xblock-9.0.0/.gitignore +10 -0
- stackamole_xblock-9.0.0/.gitlab-ci.yml +40 -0
- stackamole_xblock-9.0.0/AGENTS.md +46 -0
- stackamole_xblock-9.0.0/Changelog.md +861 -0
- stackamole_xblock-9.0.0/HACKING.md +118 -0
- stackamole_xblock-9.0.0/LICENSE +661 -0
- stackamole_xblock-9.0.0/MIGRATION.md +36 -0
- stackamole_xblock-9.0.0/PKG-INFO +668 -0
- stackamole_xblock-9.0.0/README.md +632 -0
- stackamole_xblock-9.0.0/fake/common/djangoapps/student/__init__.py +0 -0
- stackamole_xblock-9.0.0/fake/common/djangoapps/student/models.py +15 -0
- stackamole_xblock-9.0.0/fake/course/__init__.py +0 -0
- stackamole_xblock-9.0.0/pyproject.toml +62 -0
- stackamole_xblock-9.0.0/requirements/base.txt +27 -0
- stackamole_xblock-9.0.0/requirements/flake8.txt +1 -0
- stackamole_xblock-9.0.0/requirements/setup.txt +3 -0
- stackamole_xblock-9.0.0/requirements/test.txt +21 -0
- stackamole_xblock-9.0.0/requirements.txt +27 -0
- stackamole_xblock-9.0.0/run_tests.py +62 -0
- stackamole_xblock-9.0.0/samples/hot/sample-template.yaml +427 -0
- stackamole_xblock-9.0.0/setup.cfg +4 -0
- stackamole_xblock-9.0.0/setup.py +6 -0
- stackamole_xblock-9.0.0/src/pip-delete-this-directory.txt +5 -0
- stackamole_xblock-9.0.0/stackamole/__init__.py +8 -0
- stackamole_xblock-9.0.0/stackamole/admin.py +130 -0
- stackamole_xblock-9.0.0/stackamole/common.py +423 -0
- stackamole_xblock-9.0.0/stackamole/jobs.py +211 -0
- stackamole_xblock-9.0.0/stackamole/locale/config.yaml +15 -0
- stackamole_xblock-9.0.0/stackamole/locale/en/LC_MESSAGES/django-partial.po +158 -0
- stackamole_xblock-9.0.0/stackamole/management/__init__.py +0 -0
- stackamole_xblock-9.0.0/stackamole/management/commands/__init__.py +0 -0
- stackamole_xblock-9.0.0/stackamole/management/commands/reaper.py +21 -0
- stackamole_xblock-9.0.0/stackamole/management/commands/suspender.py +20 -0
- stackamole_xblock-9.0.0/stackamole/migrations/0001_initial.py +43 -0
- stackamole_xblock-9.0.0/stackamole/migrations/0002_stacklog.py +47 -0
- stackamole_xblock-9.0.0/stackamole/migrations/0003_blanks.py +84 -0
- stackamole_xblock-9.0.0/stackamole/migrations/0004_auto_20190715_1053.py +24 -0
- stackamole_xblock-9.0.0/stackamole/migrations/0005_auto_20190811_1555.py +56 -0
- stackamole_xblock-9.0.0/stackamole/migrations/0006_auto_20200107_1332.py +44 -0
- stackamole_xblock-9.0.0/stackamole/migrations/0007_add_delete_by_and_delete_age.py +34 -0
- stackamole_xblock-9.0.0/stackamole/migrations/0008_add_database_defaults_for_stack_key_and_password.py +23 -0
- stackamole_xblock-9.0.0/stackamole/migrations/0009_add_null_true_for_key_and_password.py +23 -0
- stackamole_xblock-9.0.0/stackamole/migrations/0010_add_user_foreign_key.py +52 -0
- stackamole_xblock-9.0.0/stackamole/migrations/0011_allow_null_for_learner.py +29 -0
- stackamole_xblock-9.0.0/stackamole/migrations/0012_add_suspend_by.py +21 -0
- stackamole_xblock-9.0.0/stackamole/migrations/0013_migrate_app_label.py +71 -0
- stackamole_xblock-9.0.0/stackamole/migrations/__init__.py +0 -0
- stackamole_xblock-9.0.0/stackamole/models.py +106 -0
- stackamole_xblock-9.0.0/stackamole/openstack.py +132 -0
- stackamole_xblock-9.0.0/stackamole/provider.py +437 -0
- stackamole_xblock-9.0.0/stackamole/public/css/main.css +203 -0
- stackamole_xblock-9.0.0/stackamole/public/js/client.js +251 -0
- stackamole_xblock-9.0.0/stackamole/public/js/guacamole-common-js/0.9.13-incubating-all.min.js +1 -0
- stackamole_xblock-9.0.0/stackamole/public/js/guacamole-common-js/1.4.0-all.min.js +155 -0
- stackamole_xblock-9.0.0/stackamole/public/js/guacamole-common-js/1.5.2-all.min.js +161 -0
- stackamole_xblock-9.0.0/stackamole/public/js/guacamole-common-js/1.5.4-all.min.js +161 -0
- stackamole_xblock-9.0.0/stackamole/public/js/guacamole-common-js/1.5.5-all.min.js +161 -0
- stackamole_xblock-9.0.0/stackamole/public/js/main.js +492 -0
- stackamole_xblock-9.0.0/stackamole/public/js/plugins.js +95 -0
- stackamole_xblock-9.0.0/stackamole/public/js/translations/de-de/text.js +174 -0
- stackamole_xblock-9.0.0/stackamole/public/js/translations/el/text.js +177 -0
- stackamole_xblock-9.0.0/stackamole/public/js/translations/es-419/text.js +177 -0
- stackamole_xblock-9.0.0/stackamole/public/js/translations/et-ee/text.js +184 -0
- stackamole_xblock-9.0.0/stackamole/public/js/translations/hi/text.js +184 -0
- stackamole_xblock-9.0.0/stackamole/stackamole.py +1263 -0
- stackamole_xblock-9.0.0/stackamole/static/html/lab.html +88 -0
- stackamole_xblock-9.0.0/stackamole/static/html/main.html +93 -0
- stackamole_xblock-9.0.0/stackamole/tasks.py +947 -0
- stackamole_xblock-9.0.0/stackamole/translations/de_DE/LC_MESSAGES/text.mo +0 -0
- stackamole_xblock-9.0.0/stackamole/translations/de_DE/LC_MESSAGES/text.po +159 -0
- stackamole_xblock-9.0.0/stackamole/translations/el/LC_MESSAGES/text.mo +0 -0
- stackamole_xblock-9.0.0/stackamole/translations/el/LC_MESSAGES/text.po +172 -0
- stackamole_xblock-9.0.0/stackamole/translations/en/LC_MESSAGES/text.mo +0 -0
- stackamole_xblock-9.0.0/stackamole/translations/en/LC_MESSAGES/text.po +158 -0
- stackamole_xblock-9.0.0/stackamole/translations/es_419/LC_MESSAGES/text.mo +0 -0
- stackamole_xblock-9.0.0/stackamole/translations/es_419/LC_MESSAGES/text.po +159 -0
- stackamole_xblock-9.0.0/stackamole/translations/et_EE/LC_MESSAGES/text.mo +0 -0
- stackamole_xblock-9.0.0/stackamole/translations/et_EE/LC_MESSAGES/text.po +160 -0
- stackamole_xblock-9.0.0/stackamole/translations/hi/LC_MESSAGES/text.mo +0 -0
- stackamole_xblock-9.0.0/stackamole/translations/hi/LC_MESSAGES/text.po +165 -0
- stackamole_xblock-9.0.0/stackamole_guacamole_client/__init__.py +0 -0
- stackamole_xblock-9.0.0/stackamole_guacamole_client/asgi.py +26 -0
- stackamole_xblock-9.0.0/stackamole_guacamole_client/consumers.py +95 -0
- stackamole_xblock-9.0.0/stackamole_guacamole_client/settings.py +87 -0
- stackamole_xblock-9.0.0/stackamole_xblock.egg-info/PKG-INFO +668 -0
- stackamole_xblock-9.0.0/stackamole_xblock.egg-info/SOURCES.txt +112 -0
- stackamole_xblock-9.0.0/stackamole_xblock.egg-info/dependency_links.txt +1 -0
- stackamole_xblock-9.0.0/stackamole_xblock.egg-info/entry_points.txt +3 -0
- stackamole_xblock-9.0.0/stackamole_xblock.egg-info/requires.txt +18 -0
- stackamole_xblock-9.0.0/stackamole_xblock.egg-info/top_level.txt +9 -0
- stackamole_xblock-9.0.0/tests/__init__.py +0 -0
- stackamole_xblock-9.0.0/tests/resources/course/stackamole/fake_lab_1.xml +9 -0
- stackamole_xblock-9.0.0/tests/resources/course/stackamole/fake_lab_2.xml +9 -0
- stackamole_xblock-9.0.0/tests/resources/course/stackamole/fake_lab_hook_events_1.xml +4 -0
- stackamole_xblock-9.0.0/tests/resources/course/stackamole/fake_lab_hook_events_2.xml +3 -0
- stackamole_xblock-9.0.0/tests/resources/course/stackamole/fake_lab_no_port_name.xml +3 -0
- stackamole_xblock-9.0.0/tests/resources/course/stackamole/fake_lab_no_port_number.xml +3 -0
- stackamole_xblock-9.0.0/tests/resources/course/stackamole/fake_lab_no_provider_capacity.xml +5 -0
- stackamole_xblock-9.0.0/tests/resources/course/stackamole/fake_lab_no_provider_name.xml +3 -0
- stackamole_xblock-9.0.0/tests/unit/__init__.py +0 -0
- stackamole_xblock-9.0.0/tests/unit/test_admin.py +170 -0
- stackamole_xblock-9.0.0/tests/unit/test_commands.py +31 -0
- stackamole_xblock-9.0.0/tests/unit/test_common.py +307 -0
- stackamole_xblock-9.0.0/tests/unit/test_jobs.py +649 -0
- stackamole_xblock-9.0.0/tests/unit/test_models.py +72 -0
- stackamole_xblock-9.0.0/tests/unit/test_openstack.py +149 -0
- stackamole_xblock-9.0.0/tests/unit/test_provider.py +847 -0
- stackamole_xblock-9.0.0/tests/unit/test_stackamole.py +1711 -0
- stackamole_xblock-9.0.0/tests/unit/test_tasks.py +2324 -0
- stackamole_xblock-9.0.0/tox.ini +63 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
[bumpversion]
|
|
2
|
+
commit = True
|
|
3
|
+
tag = True
|
|
4
|
+
current_version = 9.0.0
|
|
5
|
+
parse = (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)(rc(?P<rc>\d+))?
|
|
6
|
+
serialize =
|
|
7
|
+
{major}.{minor}.{patch}rc{rc}
|
|
8
|
+
{major}.{minor}.{patch}
|
|
9
|
+
|
|
10
|
+
[bumpversion:part:rc]
|
|
11
|
+
|
|
12
|
+
[bumpversion:file:Changelog.md]
|
|
13
|
+
search = Unreleased
|
|
14
|
+
replace = Version {new_version} ({now:%Y-%m-%d})
|
|
15
|
+
|
|
16
|
+
[bumpversion:file:README.md]
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
name: Python package
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
- push
|
|
5
|
+
- pull_request
|
|
6
|
+
|
|
7
|
+
jobs:
|
|
8
|
+
build:
|
|
9
|
+
runs-on: ubuntu-latest
|
|
10
|
+
strategy:
|
|
11
|
+
matrix:
|
|
12
|
+
python-version:
|
|
13
|
+
- '3.11'
|
|
14
|
+
pip-version:
|
|
15
|
+
- 23.0.1
|
|
16
|
+
- 23.2.1
|
|
17
|
+
include:
|
|
18
|
+
- python-version: '3.12'
|
|
19
|
+
pip-version: '23.2.1'
|
|
20
|
+
|
|
21
|
+
steps:
|
|
22
|
+
- name: Check out code
|
|
23
|
+
uses: actions/checkout@v4
|
|
24
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
25
|
+
uses: actions/setup-python@v5
|
|
26
|
+
with:
|
|
27
|
+
python-version: ${{ matrix.python-version }}
|
|
28
|
+
- name: Install dependencies
|
|
29
|
+
run: |
|
|
30
|
+
pip install "tox<4" tox-gh-actions tox-pip-version setuptools
|
|
31
|
+
- env:
|
|
32
|
+
TOX_PIP_VERSION: ${{ matrix.pip-version }}
|
|
33
|
+
name: Test with tox (pip ${{ matrix.pip-version }})
|
|
34
|
+
run: tox
|
|
35
|
+
- name: Upload coverage data
|
|
36
|
+
uses: actions/upload-artifact@v4
|
|
37
|
+
with:
|
|
38
|
+
name: coverage-${{ matrix.python-version }}-${{ matrix.pip-version }}
|
|
39
|
+
path: '.coverage.*'
|
|
40
|
+
retention-days: 1
|
|
41
|
+
include-hidden-files: true
|
|
42
|
+
|
|
43
|
+
report:
|
|
44
|
+
needs: build
|
|
45
|
+
runs-on: ubuntu-latest
|
|
46
|
+
|
|
47
|
+
steps:
|
|
48
|
+
- name: Check out code
|
|
49
|
+
uses: actions/checkout@v4
|
|
50
|
+
- name: Download artifacts
|
|
51
|
+
uses: actions/download-artifact@v4
|
|
52
|
+
- name: Set up Python 3.11
|
|
53
|
+
uses: actions/setup-python@v5
|
|
54
|
+
with:
|
|
55
|
+
python-version: 3.11
|
|
56
|
+
- name: Install dependencies
|
|
57
|
+
run: |
|
|
58
|
+
pip install coverage
|
|
59
|
+
- name: Compile coverage data
|
|
60
|
+
run: |
|
|
61
|
+
mv coverage-*/.coverage.* .
|
|
62
|
+
coverage combine
|
|
63
|
+
coverage html
|
|
64
|
+
coverage xml
|
|
65
|
+
coverage report
|
|
66
|
+
- name: Upload htmlcov archive
|
|
67
|
+
uses: actions/upload-artifact@v4
|
|
68
|
+
with:
|
|
69
|
+
name: htmlcov
|
|
70
|
+
path: htmlcov
|
|
71
|
+
retention-days: 7
|
|
72
|
+
- name: Upload to codecov
|
|
73
|
+
uses: codecov/codecov-action@v4
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
image: python
|
|
2
|
+
|
|
3
|
+
py311:
|
|
4
|
+
image: python:3.11
|
|
5
|
+
stage: build
|
|
6
|
+
script:
|
|
7
|
+
- pip install tox
|
|
8
|
+
- tox -e py311-flake8,py311-pipdeptree,py311-pipdeptree-requirements,py311-xblock50-celery5
|
|
9
|
+
artifacts:
|
|
10
|
+
paths:
|
|
11
|
+
- .coverage*
|
|
12
|
+
expire_in: 5 minutes
|
|
13
|
+
|
|
14
|
+
py312:
|
|
15
|
+
image: python:3.12
|
|
16
|
+
stage: build
|
|
17
|
+
script:
|
|
18
|
+
- pip install tox
|
|
19
|
+
- tox -e py312-flake8,py312-pipdeptree,py312-pipdeptree-requirements,py312-xblock50-celery5
|
|
20
|
+
artifacts:
|
|
21
|
+
paths:
|
|
22
|
+
- .coverage*
|
|
23
|
+
expire_in: 5 minutes
|
|
24
|
+
|
|
25
|
+
coverage:
|
|
26
|
+
stage: test
|
|
27
|
+
script:
|
|
28
|
+
- pip install coverage
|
|
29
|
+
- python -m coverage combine
|
|
30
|
+
- python -m coverage html
|
|
31
|
+
- python -m coverage report
|
|
32
|
+
- mv htmlcov public
|
|
33
|
+
coverage: '/TOTAL.*\s+(\d+\.\d+%)$/'
|
|
34
|
+
artifacts:
|
|
35
|
+
paths:
|
|
36
|
+
- public
|
|
37
|
+
expire_in: 1 week
|
|
38
|
+
pages:
|
|
39
|
+
path_prefix: "$CI_COMMIT_BRANCH"
|
|
40
|
+
expire_in: 1 week
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# AGENTS.md — terse agent index (routing + gotchas)
|
|
2
|
+
|
|
3
|
+
Agents: explore the repo directly; this file routes, it does not teach.
|
|
4
|
+
|
|
5
|
+
See [HACKING.md](HACKING.md) for contributor information, style guide, and tests.
|
|
6
|
+
|
|
7
|
+
**Session memory:** Write plans, notes, and ephemeral files to `.ai/` (gitignored).
|
|
8
|
+
Prefer `.ai/tmp/` over the system temp directory.
|
|
9
|
+
|
|
10
|
+
**When planning**, read these to understand dependencies and tooling:
|
|
11
|
+
|
|
12
|
+
* `pyproject.toml`
|
|
13
|
+
* `tox.ini`
|
|
14
|
+
* `requirements.txt`
|
|
15
|
+
* `requirements/test.txt`
|
|
16
|
+
|
|
17
|
+
## Tooling
|
|
18
|
+
|
|
19
|
+
### Tests
|
|
20
|
+
Entry point is **`tox`**.
|
|
21
|
+
|
|
22
|
+
### Hooks
|
|
23
|
+
Git hooks are stored in `.githooks`:
|
|
24
|
+
|
|
25
|
+
- `pre-commit` (lint only)
|
|
26
|
+
- `pre-push` (functional test)
|
|
27
|
+
|
|
28
|
+
### Review
|
|
29
|
+
Series are always **unsquashed**; each commit must be independently testable and correct.
|
|
30
|
+
|
|
31
|
+
### Git
|
|
32
|
+
|
|
33
|
+
- Read-only operations (`git log`, `git diff`, `git status`) are fine.
|
|
34
|
+
- Any mutating git operation (add, commit, reset, checkout, push, stash, merge, branch, etc.) requires explicit user approval.
|
|
35
|
+
- All modifications require a topic branch.
|
|
36
|
+
Do not, under any circumstances, allow commits to the `master` or `main` branch.
|
|
37
|
+
- Refactoring tasks must always create a *new* topic branch.
|
|
38
|
+
- **Never** bypass Git hooks.
|
|
39
|
+
- **Never**, under any circumstances, invoke `git` with the `--no-verify` option.
|
|
40
|
+
- **Always** declare the AI tool and the employed model, by including `Assisted-By: <tool>/<model>` in the commit message.
|
|
41
|
+
- **Never** include emoji in commit messages.
|
|
42
|
+
|
|
43
|
+
## Changelog
|
|
44
|
+
|
|
45
|
+
- Proposed changes to the [Changelog.md](Changelog.md) file must be under the `Unreleased` heading.
|
|
46
|
+
- Do not retroactively change information about previously released versions.
|