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.
Files changed (114) hide show
  1. stackamole_xblock-9.0.0/.bumpversion.cfg +16 -0
  2. stackamole_xblock-9.0.0/.githooks/pre-commit +2 -0
  3. stackamole_xblock-9.0.0/.githooks/pre-push +2 -0
  4. stackamole_xblock-9.0.0/.github/workflows/tox.yml +73 -0
  5. stackamole_xblock-9.0.0/.gitignore +10 -0
  6. stackamole_xblock-9.0.0/.gitlab-ci.yml +40 -0
  7. stackamole_xblock-9.0.0/AGENTS.md +46 -0
  8. stackamole_xblock-9.0.0/Changelog.md +861 -0
  9. stackamole_xblock-9.0.0/HACKING.md +118 -0
  10. stackamole_xblock-9.0.0/LICENSE +661 -0
  11. stackamole_xblock-9.0.0/MIGRATION.md +36 -0
  12. stackamole_xblock-9.0.0/PKG-INFO +668 -0
  13. stackamole_xblock-9.0.0/README.md +632 -0
  14. stackamole_xblock-9.0.0/fake/common/djangoapps/student/__init__.py +0 -0
  15. stackamole_xblock-9.0.0/fake/common/djangoapps/student/models.py +15 -0
  16. stackamole_xblock-9.0.0/fake/course/__init__.py +0 -0
  17. stackamole_xblock-9.0.0/pyproject.toml +62 -0
  18. stackamole_xblock-9.0.0/requirements/base.txt +27 -0
  19. stackamole_xblock-9.0.0/requirements/flake8.txt +1 -0
  20. stackamole_xblock-9.0.0/requirements/setup.txt +3 -0
  21. stackamole_xblock-9.0.0/requirements/test.txt +21 -0
  22. stackamole_xblock-9.0.0/requirements.txt +27 -0
  23. stackamole_xblock-9.0.0/run_tests.py +62 -0
  24. stackamole_xblock-9.0.0/samples/hot/sample-template.yaml +427 -0
  25. stackamole_xblock-9.0.0/setup.cfg +4 -0
  26. stackamole_xblock-9.0.0/setup.py +6 -0
  27. stackamole_xblock-9.0.0/src/pip-delete-this-directory.txt +5 -0
  28. stackamole_xblock-9.0.0/stackamole/__init__.py +8 -0
  29. stackamole_xblock-9.0.0/stackamole/admin.py +130 -0
  30. stackamole_xblock-9.0.0/stackamole/common.py +423 -0
  31. stackamole_xblock-9.0.0/stackamole/jobs.py +211 -0
  32. stackamole_xblock-9.0.0/stackamole/locale/config.yaml +15 -0
  33. stackamole_xblock-9.0.0/stackamole/locale/en/LC_MESSAGES/django-partial.po +158 -0
  34. stackamole_xblock-9.0.0/stackamole/management/__init__.py +0 -0
  35. stackamole_xblock-9.0.0/stackamole/management/commands/__init__.py +0 -0
  36. stackamole_xblock-9.0.0/stackamole/management/commands/reaper.py +21 -0
  37. stackamole_xblock-9.0.0/stackamole/management/commands/suspender.py +20 -0
  38. stackamole_xblock-9.0.0/stackamole/migrations/0001_initial.py +43 -0
  39. stackamole_xblock-9.0.0/stackamole/migrations/0002_stacklog.py +47 -0
  40. stackamole_xblock-9.0.0/stackamole/migrations/0003_blanks.py +84 -0
  41. stackamole_xblock-9.0.0/stackamole/migrations/0004_auto_20190715_1053.py +24 -0
  42. stackamole_xblock-9.0.0/stackamole/migrations/0005_auto_20190811_1555.py +56 -0
  43. stackamole_xblock-9.0.0/stackamole/migrations/0006_auto_20200107_1332.py +44 -0
  44. stackamole_xblock-9.0.0/stackamole/migrations/0007_add_delete_by_and_delete_age.py +34 -0
  45. stackamole_xblock-9.0.0/stackamole/migrations/0008_add_database_defaults_for_stack_key_and_password.py +23 -0
  46. stackamole_xblock-9.0.0/stackamole/migrations/0009_add_null_true_for_key_and_password.py +23 -0
  47. stackamole_xblock-9.0.0/stackamole/migrations/0010_add_user_foreign_key.py +52 -0
  48. stackamole_xblock-9.0.0/stackamole/migrations/0011_allow_null_for_learner.py +29 -0
  49. stackamole_xblock-9.0.0/stackamole/migrations/0012_add_suspend_by.py +21 -0
  50. stackamole_xblock-9.0.0/stackamole/migrations/0013_migrate_app_label.py +71 -0
  51. stackamole_xblock-9.0.0/stackamole/migrations/__init__.py +0 -0
  52. stackamole_xblock-9.0.0/stackamole/models.py +106 -0
  53. stackamole_xblock-9.0.0/stackamole/openstack.py +132 -0
  54. stackamole_xblock-9.0.0/stackamole/provider.py +437 -0
  55. stackamole_xblock-9.0.0/stackamole/public/css/main.css +203 -0
  56. stackamole_xblock-9.0.0/stackamole/public/js/client.js +251 -0
  57. stackamole_xblock-9.0.0/stackamole/public/js/guacamole-common-js/0.9.13-incubating-all.min.js +1 -0
  58. stackamole_xblock-9.0.0/stackamole/public/js/guacamole-common-js/1.4.0-all.min.js +155 -0
  59. stackamole_xblock-9.0.0/stackamole/public/js/guacamole-common-js/1.5.2-all.min.js +161 -0
  60. stackamole_xblock-9.0.0/stackamole/public/js/guacamole-common-js/1.5.4-all.min.js +161 -0
  61. stackamole_xblock-9.0.0/stackamole/public/js/guacamole-common-js/1.5.5-all.min.js +161 -0
  62. stackamole_xblock-9.0.0/stackamole/public/js/main.js +492 -0
  63. stackamole_xblock-9.0.0/stackamole/public/js/plugins.js +95 -0
  64. stackamole_xblock-9.0.0/stackamole/public/js/translations/de-de/text.js +174 -0
  65. stackamole_xblock-9.0.0/stackamole/public/js/translations/el/text.js +177 -0
  66. stackamole_xblock-9.0.0/stackamole/public/js/translations/es-419/text.js +177 -0
  67. stackamole_xblock-9.0.0/stackamole/public/js/translations/et-ee/text.js +184 -0
  68. stackamole_xblock-9.0.0/stackamole/public/js/translations/hi/text.js +184 -0
  69. stackamole_xblock-9.0.0/stackamole/stackamole.py +1263 -0
  70. stackamole_xblock-9.0.0/stackamole/static/html/lab.html +88 -0
  71. stackamole_xblock-9.0.0/stackamole/static/html/main.html +93 -0
  72. stackamole_xblock-9.0.0/stackamole/tasks.py +947 -0
  73. stackamole_xblock-9.0.0/stackamole/translations/de_DE/LC_MESSAGES/text.mo +0 -0
  74. stackamole_xblock-9.0.0/stackamole/translations/de_DE/LC_MESSAGES/text.po +159 -0
  75. stackamole_xblock-9.0.0/stackamole/translations/el/LC_MESSAGES/text.mo +0 -0
  76. stackamole_xblock-9.0.0/stackamole/translations/el/LC_MESSAGES/text.po +172 -0
  77. stackamole_xblock-9.0.0/stackamole/translations/en/LC_MESSAGES/text.mo +0 -0
  78. stackamole_xblock-9.0.0/stackamole/translations/en/LC_MESSAGES/text.po +158 -0
  79. stackamole_xblock-9.0.0/stackamole/translations/es_419/LC_MESSAGES/text.mo +0 -0
  80. stackamole_xblock-9.0.0/stackamole/translations/es_419/LC_MESSAGES/text.po +159 -0
  81. stackamole_xblock-9.0.0/stackamole/translations/et_EE/LC_MESSAGES/text.mo +0 -0
  82. stackamole_xblock-9.0.0/stackamole/translations/et_EE/LC_MESSAGES/text.po +160 -0
  83. stackamole_xblock-9.0.0/stackamole/translations/hi/LC_MESSAGES/text.mo +0 -0
  84. stackamole_xblock-9.0.0/stackamole/translations/hi/LC_MESSAGES/text.po +165 -0
  85. stackamole_xblock-9.0.0/stackamole_guacamole_client/__init__.py +0 -0
  86. stackamole_xblock-9.0.0/stackamole_guacamole_client/asgi.py +26 -0
  87. stackamole_xblock-9.0.0/stackamole_guacamole_client/consumers.py +95 -0
  88. stackamole_xblock-9.0.0/stackamole_guacamole_client/settings.py +87 -0
  89. stackamole_xblock-9.0.0/stackamole_xblock.egg-info/PKG-INFO +668 -0
  90. stackamole_xblock-9.0.0/stackamole_xblock.egg-info/SOURCES.txt +112 -0
  91. stackamole_xblock-9.0.0/stackamole_xblock.egg-info/dependency_links.txt +1 -0
  92. stackamole_xblock-9.0.0/stackamole_xblock.egg-info/entry_points.txt +3 -0
  93. stackamole_xblock-9.0.0/stackamole_xblock.egg-info/requires.txt +18 -0
  94. stackamole_xblock-9.0.0/stackamole_xblock.egg-info/top_level.txt +9 -0
  95. stackamole_xblock-9.0.0/tests/__init__.py +0 -0
  96. stackamole_xblock-9.0.0/tests/resources/course/stackamole/fake_lab_1.xml +9 -0
  97. stackamole_xblock-9.0.0/tests/resources/course/stackamole/fake_lab_2.xml +9 -0
  98. stackamole_xblock-9.0.0/tests/resources/course/stackamole/fake_lab_hook_events_1.xml +4 -0
  99. stackamole_xblock-9.0.0/tests/resources/course/stackamole/fake_lab_hook_events_2.xml +3 -0
  100. stackamole_xblock-9.0.0/tests/resources/course/stackamole/fake_lab_no_port_name.xml +3 -0
  101. stackamole_xblock-9.0.0/tests/resources/course/stackamole/fake_lab_no_port_number.xml +3 -0
  102. stackamole_xblock-9.0.0/tests/resources/course/stackamole/fake_lab_no_provider_capacity.xml +5 -0
  103. stackamole_xblock-9.0.0/tests/resources/course/stackamole/fake_lab_no_provider_name.xml +3 -0
  104. stackamole_xblock-9.0.0/tests/unit/__init__.py +0 -0
  105. stackamole_xblock-9.0.0/tests/unit/test_admin.py +170 -0
  106. stackamole_xblock-9.0.0/tests/unit/test_commands.py +31 -0
  107. stackamole_xblock-9.0.0/tests/unit/test_common.py +307 -0
  108. stackamole_xblock-9.0.0/tests/unit/test_jobs.py +649 -0
  109. stackamole_xblock-9.0.0/tests/unit/test_models.py +72 -0
  110. stackamole_xblock-9.0.0/tests/unit/test_openstack.py +149 -0
  111. stackamole_xblock-9.0.0/tests/unit/test_provider.py +847 -0
  112. stackamole_xblock-9.0.0/tests/unit/test_stackamole.py +1711 -0
  113. stackamole_xblock-9.0.0/tests/unit/test_tasks.py +2324 -0
  114. 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,2 @@
1
+ #!/bin/sh
2
+ exec tox -e py311-flake8,py312-flake8
@@ -0,0 +1,2 @@
1
+ #!/bin/sh
2
+ exec tox
@@ -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,10 @@
1
+ *.pyc
2
+ .eggs
3
+ *.egg-info
4
+ .pypirc
5
+ var/
6
+ dist/
7
+ .coverage
8
+ .tox/
9
+ .ai/
10
+ CLAUDE.md
@@ -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.