bytegrader 0.0.1__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.
- bytegrader-0.0.1/.devcontainer.json +1 -0
- bytegrader-0.0.1/.dockerignore +78 -0
- bytegrader-0.0.1/.gitignore +108 -0
- bytegrader-0.0.1/.npmrc +3 -0
- bytegrader-0.0.1/.python-version +1 -0
- bytegrader-0.0.1/.yarnrc +1 -0
- bytegrader-0.0.1/.yarnrc.yml +1 -0
- bytegrader-0.0.1/LICENSE +28 -0
- bytegrader-0.0.1/PKG-INFO +54 -0
- bytegrader-0.0.1/README.de.md +0 -0
- bytegrader-0.0.1/README.md +175 -0
- bytegrader-0.0.1/bytegrader/__init__.py +38 -0
- bytegrader-0.0.1/bytegrader/__main__.py +7 -0
- bytegrader-0.0.1/bytegrader/autograde/__init__.py +0 -0
- bytegrader-0.0.1/bytegrader/autograde/executors/__init__.py +16 -0
- bytegrader-0.0.1/bytegrader/autograde/executors/base.py +15 -0
- bytegrader-0.0.1/bytegrader/autograde/executors/simple.py +54 -0
- bytegrader-0.0.1/bytegrader/autograde/executors/systemd.py +3 -0
- bytegrader-0.0.1/bytegrader/autograde/executors/wasm.py +180 -0
- bytegrader-0.0.1/bytegrader/autograde/queue.py +28 -0
- bytegrader-0.0.1/bytegrader/autograde/service.py +265 -0
- bytegrader-0.0.1/bytegrader/autograde/worker.py +198 -0
- bytegrader-0.0.1/bytegrader/cli/__init__.py +3 -0
- bytegrader-0.0.1/bytegrader/cli/commands/__init__.py +0 -0
- bytegrader-0.0.1/bytegrader/cli/commands/serve.py +135 -0
- bytegrader-0.0.1/bytegrader/cli/main.py +58 -0
- bytegrader-0.0.1/bytegrader/config/__init__.py +0 -0
- bytegrader-0.0.1/bytegrader/config/config.py +113 -0
- bytegrader-0.0.1/bytegrader/core/__init__.py +0 -0
- bytegrader-0.0.1/bytegrader/core/auth/__init__.py +7 -0
- bytegrader-0.0.1/bytegrader/core/auth/decorators.py +53 -0
- bytegrader-0.0.1/bytegrader/core/auth/permissions.py +98 -0
- bytegrader-0.0.1/bytegrader/core/auth/policies.py +179 -0
- bytegrader-0.0.1/bytegrader/core/database/__init__.py +0 -0
- bytegrader-0.0.1/bytegrader/core/database/alembic/TODO +0 -0
- bytegrader-0.0.1/bytegrader/core/database/alembic/__init__.py +0 -0
- bytegrader-0.0.1/bytegrader/core/database/connection.py +94 -0
- bytegrader-0.0.1/bytegrader/core/database/migrations.py +1 -0
- bytegrader-0.0.1/bytegrader/core/exceptions/__init__.py +5 -0
- bytegrader-0.0.1/bytegrader/core/exceptions/config.py +2 -0
- bytegrader-0.0.1/bytegrader/core/exceptions/database.py +2 -0
- bytegrader-0.0.1/bytegrader/core/exceptions/hub.py +29 -0
- bytegrader-0.0.1/bytegrader/core/models/__init__.py +13 -0
- bytegrader-0.0.1/bytegrader/core/models/asset.py +29 -0
- bytegrader-0.0.1/bytegrader/core/models/base.py +9 -0
- bytegrader-0.0.1/bytegrader/core/models/course.py +82 -0
- bytegrader-0.0.1/bytegrader/core/models/enum.py +25 -0
- bytegrader-0.0.1/bytegrader/core/models/grade.py +73 -0
- bytegrader-0.0.1/bytegrader/core/models/notebook.py +97 -0
- bytegrader-0.0.1/bytegrader/core/models/submission.py +310 -0
- bytegrader-0.0.1/bytegrader/core/models/user.py +49 -0
- bytegrader-0.0.1/bytegrader/core/observability/__init__.py +102 -0
- bytegrader-0.0.1/bytegrader/core/observability/opentelemetry.py +218 -0
- bytegrader-0.0.1/bytegrader/core/observability/sentry.py +115 -0
- bytegrader-0.0.1/bytegrader/core/utils/__init__.py +3 -0
- bytegrader-0.0.1/bytegrader/core/utils/datetime.py +11 -0
- bytegrader-0.0.1/bytegrader/core/utils/hub.py +224 -0
- bytegrader-0.0.1/bytegrader/core/utils/lti/__init__.py +18 -0
- bytegrader-0.0.1/bytegrader/core/utils/lti/client.py +524 -0
- bytegrader-0.0.1/bytegrader/core/utils/lti/config.py +74 -0
- bytegrader-0.0.1/bytegrader/core/utils/lti/exceptions.py +14 -0
- bytegrader-0.0.1/bytegrader/core/utils/lti/models.py +107 -0
- bytegrader-0.0.1/bytegrader/core/utils/notebook.py +30 -0
- bytegrader-0.0.1/bytegrader/extensions/__init__.py +0 -0
- bytegrader-0.0.1/bytegrader/extensions/lab/__init__.py +5 -0
- bytegrader-0.0.1/bytegrader/extensions/lab/handlers/__init__.py +0 -0
- bytegrader-0.0.1/bytegrader/extensions/lab/handlers/assignment.py +112 -0
- bytegrader-0.0.1/bytegrader/extensions/lab/handlers/auth.py +25 -0
- bytegrader-0.0.1/bytegrader/extensions/lab/handlers/base.py +56 -0
- bytegrader-0.0.1/bytegrader/extensions/lab/handlers/course.py +94 -0
- bytegrader-0.0.1/bytegrader/extensions/lab/handlers/submission.py +29 -0
- bytegrader-0.0.1/bytegrader/extensions/lab/labextension.py +42 -0
- bytegrader-0.0.1/bytegrader/extensions/lab/schemas/__init__.py +1 -0
- bytegrader-0.0.1/bytegrader/extensions/lab/schemas/assignment.py +71 -0
- bytegrader-0.0.1/bytegrader/extensions/lab/schemas/base.py +19 -0
- bytegrader-0.0.1/bytegrader/extensions/lab/schemas/course.py +0 -0
- bytegrader-0.0.1/bytegrader/extensions/lab/services/__init__.py +0 -0
- bytegrader-0.0.1/bytegrader/extensions/lab/services/assignment.py +282 -0
- bytegrader-0.0.1/bytegrader/extensions/lab/services/course.py +55 -0
- bytegrader-0.0.1/bytegrader/extensions/lab/services/submission.py +49 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/package.json +109 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/1085.dc408e20ed2d9ee54892.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/1771.6e5b0dbc3185aee48a98.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/1823.3d59abf2896ee4fb04e0.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/2441.30be75ff1225a7950f2f.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/272.60e4a6c8e09cd5fd49c3.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/3101.6d720003514448f0e979.js +2 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/3101.6d720003514448f0e979.js.LICENSE.txt +9 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/3129.60e4a6c8e09cd5fd49c3.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/4503.7738a06ba93515200fbb.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/4647.b2bd10008ba24c4df62f.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/4822.30be75ff1225a7950f2f.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/7501.97321ae6ff1ccbe26561.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/8665.a11cd4fecd79704e5e2b.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/9302.e53051a75dedfc1e9fc0.js +2 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/9302.e53051a75dedfc1e9fc0.js.LICENSE.txt +31 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/b59f626d291d9ab058ef.png +0 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/remoteEntry.6cdfe86ba207c2e4ba69.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/style.js +4 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/third-party-licenses.json +130 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-ar.9befbee1a30b9800ccb1.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-ar_EG.6fc79d7646abdac64457.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-ar_SA.ae95f9770d346c4556da.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-bg.f777c725093de5982133.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-ca.de0b61b882b40a2dde89.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-cnr.37ded5746082c0e5445c.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-cs.30aa2e3656128d550434.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-da.d8030fa546f431d7e7f0.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-de.68aeacb3c6a1abc95926.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-de_AT.694562ca6779449618ff.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-de_CH.9f4eec6522e07f7e7dd2.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-el.d03e4a02c788c9475dbf.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-el_CY.790542740c5c52c4221d.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-en.6fef2fad741f780de3dd.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-en_AU.5fc4d774640357a0aeaf.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-en_GB.702f6cb2ec5c0245027f.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-en_HK.06c9b40f0644c6036f11.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-en_IE.e5f1ff8bfe1f344a7ac6.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-en_IN.d387e684f6849760df74.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-en_NZ.f84de83cdf3cc69376af.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-en_PG.ca3b83bce0a28515268c.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-en_SG.9310bdccf1d3edf9195d.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-en_ZA.ac57b8a30fe57a946de2.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-es.aa176b8245718c90be27.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-es_AR.00652b7345290c2c2295.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-es_BO.38ec793be6a72e96bf43.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-es_CL.ab611b3d9749f30e0bba.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-es_CO.aa56bfd1df654e48fde0.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-es_MX.b8e176c41f8badd93833.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-es_PE.e27c594266c499fefec9.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-es_UY.d7494ca9d2f25165e14d.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-es_VE.ec877cb30ae6213551da.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-et.d5c8d117f1eb93bb42d6.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-fa.d5bb2ff0c146811b0bbb.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-fi.a41f03a0b8d492cf8c2b.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-fr.2bad4804c43135b4c56f.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-fr_BE.19f7e05a092828a5e7d9.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-fr_CA.eb8ca732fbd0df06b8fe.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-fr_CH.af392165a220e0d2dcd8.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-fr_LU.3e5c2e8e11e02eb2285a.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-he.2c75729cc185cb1dbe3e.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-hi.1918fccfb218bc8d81aa.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-hr.bc8a1189630fa130b903.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-hu.75cc464cc95c6fcb5b01.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-id.cdd314d2391b7795ddbf.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-it.c9f87954383699401ea4.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-it_CH.c8be744ce1da4b38cd95.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-ja.e4dd6d08d309978b0e01.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-kk.071139f5668b699cc9ab.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-ko.08db4a8ed9f70802c533.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-lt.84fd718554d23618318d.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-lv.5554e5dc1409c66225b9.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-mk.45ebaa60228c9aad578d.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-ms.793981efa442577bc9eb.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-nb.d61997ecccb96ee24a8b.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-nl.1ea671fc9162f043488b.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-nl_BE.e53372f328766bba4504.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-pl.9126923bd22358ba5b0a.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-pt.cc0d31f9ac7ff0d47127.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-pt_PT.e63ef3bffd2a61bc50f1.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-ro.322c3e65ffac34f24002.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-ru.2b57343e1255e67b9de1.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-ru_UA.16f3e059aa2247adb392.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-sk.9f770ed8538a8fa22c39.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-sl.eea95b8dcc5afb5a86e3.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-sr.71085a5bc2643db67e26.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-sr_Latn.65fb4e2ecaf05b3240fb.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-sv.852ccd91466c2d60a344.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-th.c180311e6bdb2b3fe233.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-tr.fd31e344cfecb41bfb65.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-uk.e7a9e03c60056efe934b.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-vi.aa41bba5b03133cf5554.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-zh_CN.ad969267700a7a667784.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-zh_HK.aeaa1288277c65922055.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-zh_SG.51a48b2d961bea43eec6.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-cldr-zh_TW.b4b60e68c5a5e1f6fd77.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-fiori-messagebundle-ar.357455ff5aac56b0dd58.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-fiori-messagebundle-bg.aff32eb19c382cabab70.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-fiori-messagebundle-ca.9ef0f8b24e237fa2dd36.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-fiori-messagebundle-cnr.84f8040441344906f05e.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-fiori-messagebundle-cs.ddae052856a456963ef6.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-fiori-messagebundle-cy.68c76deed4fe746b136e.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-fiori-messagebundle-da.5565ec60b72e442bcd2d.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-fiori-messagebundle-de.f150190c0e8cb500392b.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-fiori-messagebundle-el.0cdc81d67b906007b72e.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-fiori-messagebundle-en.9b3490585a78bee0042f.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-fiori-messagebundle-en_GB.1b1a26fe9a38d9ab3481.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-fiori-messagebundle-en_US_sappsd.fe13fb3a09adcdf0a5a4.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-fiori-messagebundle-en_US_saprigi.f99d1a854c60ea8fcf58.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-fiori-messagebundle-en_US_saptrc.32b55c34ae32203fbac2.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-fiori-messagebundle-es.3ef82b441b2c4defeb5c.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-fiori-messagebundle-es_MX.11e4a84ec97b8a9078f9.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-fiori-messagebundle-et.ca62adf0bb547aa69188.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-fiori-messagebundle-fi.93d3028b54a0ec0d782f.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-fiori-messagebundle-fr.fca72bf2da703efb277c.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-fiori-messagebundle-fr_CA.6d7a44795d6b7a3359b3.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-fiori-messagebundle-hi.1f680cb6b7783cb54194.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-fiori-messagebundle-hr.5c1fd471461cc0d51e40.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-fiori-messagebundle-hu.4203f41f4f5b5e94d21b.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-fiori-messagebundle-id.74d01a59af1b0013db86.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-fiori-messagebundle-it.4120e64093ce2fbe2b44.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-fiori-messagebundle-iw.cc64831a14c6cf8c275e.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-fiori-messagebundle-ja.ebd784d49c51faf506e8.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-fiori-messagebundle-kk.c441b67530102a269dbd.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-fiori-messagebundle-ko.f1ca659f6fac640104d5.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-fiori-messagebundle-lt.8396ded359866fd13fe2.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-fiori-messagebundle-lv.2fbc815768b9e804d34a.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-fiori-messagebundle-mk.91c34e14ae7aa8b6feaa.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-fiori-messagebundle-ms.3a411ede82665d08b3db.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-fiori-messagebundle-nl.3ad3f3b413e6f2a81355.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-fiori-messagebundle-no.ac0f2ccd4fdbf363aa6a.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-fiori-messagebundle-pl.cc5949d9e75580d17ff5.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-fiori-messagebundle-pt.f3f758f61774db934475.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-fiori-messagebundle-pt_PT.2153649e80b433bd812f.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-fiori-messagebundle-ro.d8c9fb0a790d1e36de70.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-fiori-messagebundle-ru.4ed4fd0d809c405ef611.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-fiori-messagebundle-sh.22b638460c0c4f08d855.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-fiori-messagebundle-sk.1514f034f6729b07f4dd.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-fiori-messagebundle-sl.90b1a374fa1b561e91e6.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-fiori-messagebundle-sr.d52096f5983ef996575e.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-fiori-messagebundle-sv.8a51ce1fc144bb489768.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-fiori-messagebundle-th.20a629329cb610a18d3c.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-fiori-messagebundle-tr.399b34b46028a97623ff.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-fiori-messagebundle-uk.e6b4015062d2cfb53874.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-fiori-messagebundle-vi.8be8132898bd075738bb.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-fiori-messagebundle-zh_CN.d6e104a57fa44fe85696.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-fiori-messagebundle-zh_TW.0b0e369ac4f2779f302c.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-fiori-sap-fiori_3-parameters-bundle.adf840de658ee9a9c8bf.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-fiori-sap-fiori_3_dark-parameters-bundle.59594fa90ccff9c1dec8.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-fiori-sap-fiori_3_hcb-parameters-bundle.100b5c9a68a6526d659e.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-fiori-sap-fiori_3_hcw-parameters-bundle.53f581c8f7889130eda0.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-fiori-sap-horizon-parameters-bundle.1754dba466c75692808f.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-fiori-sap-horizon_dark-parameters-bundle.66de2310d34754e5e77d.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-fiori-sap-horizon_hcb-parameters-bundle.a15717fa6e5dea27d167.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-fiori-sap-horizon_hcw-parameters-bundle.73270417a10081b71271.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-icons-messagebundle-ar.1a15554f382aebc172fb.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-icons-messagebundle-bg.37a534842be88b0e3f9c.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-icons-messagebundle-ca.2315c9626c75fcc95baf.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-icons-messagebundle-cnr.4a69d82fad437ab7f154.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-icons-messagebundle-cs.2d454106c57de50887cd.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-icons-messagebundle-cy.119bf8134c42303c1d58.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-icons-messagebundle-da.9f936f8934bffc8603b3.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-icons-messagebundle-de.509206257d4bac977747.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-icons-messagebundle-el.d85525a9f4c958b6d36c.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-icons-messagebundle-en.1040492ccb4e6685a158.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-icons-messagebundle-en_GB.6600819640f7327f8ea7.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-icons-messagebundle-en_US_sappsd.eef6a834bd7dc15f2063.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-icons-messagebundle-en_US_saprigi.4901cb6a4ef3eed141b2.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-icons-messagebundle-en_US_saptrc.f6d624eaded75892ecd5.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-icons-messagebundle-es.d1e274d334902fb75276.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-icons-messagebundle-es_MX.db283461202212a4eb38.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-icons-messagebundle-et.87b23ae19c674daa7480.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-icons-messagebundle-fi.47d4c95ac9a2387dd389.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-icons-messagebundle-fr.e3899a21d1e29c5f5c22.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-icons-messagebundle-fr_CA.0eeb8d9a259f388a6cd3.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-icons-messagebundle-hi.b610afdd07016edec6a5.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-icons-messagebundle-hr.4a137507a879e64f1ea6.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-icons-messagebundle-hu.24491a7cc029d4aaf57c.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-icons-messagebundle-id.a30d661abec52cbb0f30.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-icons-messagebundle-it.860be474cdc1fd14bec3.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-icons-messagebundle-iw.97439b47e4681461e1e8.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-icons-messagebundle-ja.6feed16a28098576d9c2.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-icons-messagebundle-kk.be4beaad88f2cdccc38d.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-icons-messagebundle-ko.b8a39a28be739492017a.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-icons-messagebundle-lt.de4e418184f1b51a4bc4.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-icons-messagebundle-lv.cf87032707d05b3052f2.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-icons-messagebundle-mk.bd23676970628cbc6be1.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-icons-messagebundle-ms.f7966aee9cf19b22bb92.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-icons-messagebundle-nl.7efdc96d57be3e90599a.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-icons-messagebundle-no.847d82952b7a5a17d7f6.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-icons-messagebundle-pl.61ebab20728c8505a7d9.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-icons-messagebundle-pt.0ede1f92fdc96034756b.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-icons-messagebundle-pt_PT.575712e240be2ae51f48.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-icons-messagebundle-ro.b403a0eb0cba0ef874ff.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-icons-messagebundle-ru.10d719f93960f2fd5852.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-icons-messagebundle-sh.69a59f7c1502bdfda10f.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-icons-messagebundle-sk.c633882a763f8a657fe2.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-icons-messagebundle-sl.57625f117f14560fd61a.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-icons-messagebundle-sr.ff3e42e35a2329952010.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-icons-messagebundle-sv.1c2005c32decfafd0284.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-icons-messagebundle-th.0d0034ee4e3becd5e8c2.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-icons-messagebundle-tr.331572c13d5848224ecb.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-icons-messagebundle-uk.d9fda8db63ac154ba60d.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-icons-messagebundle-vi.93ebff200cbad28591ea.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-icons-messagebundle-zh_CN.2723b9fdf1f54f07fd10.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-icons-messagebundle-zh_TW.3b5aaa9b0a95b1ae2f96.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-messagebundle-ar.f4562fac44162da35d8d.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-messagebundle-bg.4530ef67e5ae14e5ae76.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-messagebundle-ca.523a07dcde4ea4e73aed.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-messagebundle-cnr.0282ab671851f605700a.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-messagebundle-cs.5eabfbacb62cfe85a70e.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-messagebundle-cy.2cd86dcfce6b89785d41.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-messagebundle-da.b1c7da9d287f32142a29.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-messagebundle-de.fcc577ad779c45971376.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-messagebundle-el.7ea007b917265a0c76cc.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-messagebundle-en.ef8e12fc01e3fedf0798.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-messagebundle-en_GB.917233806f2bd6b1c45b.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-messagebundle-en_US_sappsd.ed683c7c592185326dc8.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-messagebundle-en_US_saprigi.69820f8808d1daeec3da.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-messagebundle-en_US_saptrc.397b4f3475068adb952a.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-messagebundle-es.951108d12a7a5fa90476.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-messagebundle-es_MX.8efae291c930b2f0ddd1.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-messagebundle-et.2c8d9b088f2f9392bf3d.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-messagebundle-fi.f0cbd6d9346fcbbba7cb.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-messagebundle-fr.4408bd4773b4876e5722.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-messagebundle-fr_CA.ca968af088e1aa81b1af.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-messagebundle-hi.4183c05b6118947ff953.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-messagebundle-hr.1ed52826cac98f3ff5c3.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-messagebundle-hu.2f6df0c09ada554bcadb.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-messagebundle-id.fc4fd542a2eca7572232.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-messagebundle-it.06df6846fd6eb525ce6e.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-messagebundle-iw.dfa816d61c08e84652bf.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-messagebundle-ja.e527c3bfcd22a1a7ad16.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-messagebundle-kk.177c6cd81cefab9bf5c3.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-messagebundle-ko.a8f6e1fd978c8fc691c3.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-messagebundle-lt.59dd3e42f1745188a4d1.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-messagebundle-lv.0ccfaaef7c6851cbce58.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-messagebundle-mk.dd3ff580eda49f5345d3.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-messagebundle-ms.89680c721352ad2fe9cf.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-messagebundle-nl.7f050485016902ace16a.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-messagebundle-no.940e82acb3eb6ab9e869.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-messagebundle-pl.a7900292b470d9c6de3b.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-messagebundle-pt.c0caa8b0cb42a710ffdd.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-messagebundle-pt_PT.6427b86e404aed0ffbf1.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-messagebundle-ro.ef878fb667fc38d1a38b.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-messagebundle-ru.b94146989bc3e44cabcb.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-messagebundle-sh.f5752a076411d5544bdf.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-messagebundle-sk.26fdc0e11cee8e8232ec.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-messagebundle-sl.ff95669381b0cd7fec27.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-messagebundle-sr.132292190513af6fbcfd.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-messagebundle-sv.b0f5b9b414141df2a2c6.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-messagebundle-th.354ae41c19b4b0944aea.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-messagebundle-tr.08c5f9a5e435547c8c7b.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-messagebundle-uk.84058ca559d7cf0dc5ca.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-messagebundle-vi.baa4e49543c2ac43dc0f.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-messagebundle-zh_CN.b357897853c52e38ebd9.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-messagebundle-zh_TW.34ccd79f944bad950b26.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-react-messagebundle-ar.e38d563d90a758b45fab.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-react-messagebundle-bg.cdc9797fb7092348ce51.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-react-messagebundle-ca.8836407f8ff00446fb45.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-react-messagebundle-cnr.91b38c40260ad7adead6.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-react-messagebundle-cs.d508e1c66958ea3789f9.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-react-messagebundle-cy.30ac76f58b95aa2ee0d9.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-react-messagebundle-da.b0c2ed1a1ca8fb705fbb.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-react-messagebundle-de.78243ddc941afe4d3832.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-react-messagebundle-el.a5a85777de59c08547ea.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-react-messagebundle-en.a3e6be3babf819124d3b.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-react-messagebundle-en_GB.5f3c8a4f93b4231e0710.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-react-messagebundle-en_US_sappsd.d446a41642c8afbd70c8.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-react-messagebundle-en_US_saprigi.75de99f4c3c07901f306.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-react-messagebundle-en_US_saptrc.b7318629248773efa913.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-react-messagebundle-es.bf1e6faceea5c4f0e55e.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-react-messagebundle-es_MX.fe393ba94a77cdf89f57.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-react-messagebundle-et.2638e6a2266895b18de6.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-react-messagebundle-fi.e4525cf711f7488431a8.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-react-messagebundle-fr.88e45929e9617f947470.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-react-messagebundle-fr_CA.8dd1787e24087daed9e2.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-react-messagebundle-hi.9ad2a174fb91ffebd800.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-react-messagebundle-hr.6874358de932eb8d91bf.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-react-messagebundle-hu.68a989de994a9d3033b6.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-react-messagebundle-id.58a4456e90bfe0a2887c.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-react-messagebundle-it.9ae0c94f42a0a667b26e.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-react-messagebundle-iw.5d920829d145d7e4b414.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-react-messagebundle-ja.33ab9b41bb1d36cfba54.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-react-messagebundle-kk.3bb299bfe29ff7982f57.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-react-messagebundle-ko.b038311ab6195606ddd0.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-react-messagebundle-lt.289448dc578b56ddad98.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-react-messagebundle-lv.8920c42448d0ac1136e4.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-react-messagebundle-mk.2da0bf14c36f84247541.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-react-messagebundle-ms.01efa0043cd052c998fb.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-react-messagebundle-nl.75b644bc207438a59c25.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-react-messagebundle-no.48d24797e9a6989f72c1.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-react-messagebundle-pl.915a2b47404ccf2f7760.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-react-messagebundle-pt.0e8ff42f4804a66dba82.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-react-messagebundle-pt_PT.6ea9945b12fda9bb8bfc.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-react-messagebundle-ro.18e81eb69f4b6627c922.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-react-messagebundle-ru.f4e7daeb32deac764f85.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-react-messagebundle-sh.bbbd3f3c428b40dc0fa3.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-react-messagebundle-sk.29f8b3868369da831ab9.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-react-messagebundle-sl.ff961061c1ec0e03bb61.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-react-messagebundle-sr.9505f8a48efadd4b6d53.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-react-messagebundle-sv.e5bbdef4d4ea030690f1.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-react-messagebundle-th.32ef958e0cc289287462.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-react-messagebundle-tr.46468cd816ee1763d2f8.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-react-messagebundle-uk.6be975093a4d2cf57827.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-react-messagebundle-vi.ab9154ca9554db1a1d4d.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-react-messagebundle-zh_CN.670ebd5ba4ef6922c0e9.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-react-messagebundle-zh_TW.066d49c5cf4bd5bd9432.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-sap-fiori_3-parameters-bundle.251210baf2410d206456.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-sap-fiori_3_dark-parameters-bundle.8cd7aa3b709a48fdfdc6.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-sap-fiori_3_hcb-parameters-bundle.ff0b98433dd2a1097692.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-sap-fiori_3_hcw-parameters-bundle.95bb6768ccae003bb0f3.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-sap-horizon-parameters-bundle.98020dab350f22c517ab.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-sap-horizon_dark-parameters-bundle.24f746693597e30d4333.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-sap-horizon_hcb-parameters-bundle.c9da60e1ed7a95221652.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-sap-horizon_hcw-parameters-bundle.5f57a6411399526872a8.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-theming-sap-fiori_3-parameters-bundle.e10239aeeedd50ab4991.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-theming-sap-fiori_3_dark-parameters-bundle.82055f8ae72d247dd004.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-theming-sap-fiori_3_hcb-parameters-bundle.910e84291bb9eff48aa7.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-theming-sap-fiori_3_hcw-parameters-bundle.ef67aec16223787a0f24.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-theming-sap-horizon-parameters-bundle.35eee23640b71ddb0b83.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-theming-sap-horizon_dark-parameters-bundle.50832da11252eef60733.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-theming-sap-horizon_hcb-parameters-bundle.d14a90f059d5ccc8c256.js +1 -0
- bytegrader-0.0.1/bytegrader/extensions/labextension/static/ui5-webcomponents-theming-sap-horizon_hcw-parameters-bundle.663a3455a8423e723780.js +1 -0
- bytegrader-0.0.1/bytegrader/handlers/__init__.py +0 -0
- bytegrader-0.0.1/bytegrader/handlers/assignment.py +196 -0
- bytegrader-0.0.1/bytegrader/handlers/auth.py +27 -0
- bytegrader-0.0.1/bytegrader/handlers/base.py +269 -0
- bytegrader-0.0.1/bytegrader/handlers/course.py +140 -0
- bytegrader-0.0.1/bytegrader/handlers/submission.py +45 -0
- bytegrader-0.0.1/bytegrader/hub.py +134 -0
- bytegrader-0.0.1/bytegrader/preprocessors/__init__.py +0 -0
- bytegrader-0.0.1/bytegrader/preprocessors/base.py +38 -0
- bytegrader-0.0.1/bytegrader/preprocessors/factory.py +60 -0
- bytegrader-0.0.1/bytegrader/preprocessors/transform/__init__.py +9 -0
- bytegrader-0.0.1/bytegrader/preprocessors/transform/clear_markingscheme.py +73 -0
- bytegrader-0.0.1/bytegrader/preprocessors/transform/clear_solutions.py +99 -0
- bytegrader-0.0.1/bytegrader/preprocessors/transform/clear_tests.py +66 -0
- bytegrader-0.0.1/bytegrader/preprocessors/transform/lockcells.py +45 -0
- bytegrader-0.0.1/bytegrader/preprocessors/validate/__init__.py +0 -0
- bytegrader-0.0.1/bytegrader/repositories/__init__.py +16 -0
- bytegrader-0.0.1/bytegrader/repositories/asset.py +13 -0
- bytegrader-0.0.1/bytegrader/repositories/assignment.py +37 -0
- bytegrader-0.0.1/bytegrader/repositories/base.py +77 -0
- bytegrader-0.0.1/bytegrader/repositories/course.py +45 -0
- bytegrader-0.0.1/bytegrader/repositories/submission.py +33 -0
- bytegrader-0.0.1/bytegrader/repositories/user.py +95 -0
- bytegrader-0.0.1/bytegrader/schemas/__init__.py +0 -0
- bytegrader-0.0.1/bytegrader/schemas/assignment.py +74 -0
- bytegrader-0.0.1/bytegrader/schemas/base.py +25 -0
- bytegrader-0.0.1/bytegrader/schemas/course.py +60 -0
- bytegrader-0.0.1/bytegrader/services/__init__.py +0 -0
- bytegrader-0.0.1/bytegrader/services/assignment.py +337 -0
- bytegrader-0.0.1/bytegrader/services/course.py +83 -0
- bytegrader-0.0.1/bytegrader/services/submission.py +175 -0
- bytegrader-0.0.1/bytegrader/tasks/__init__.py +0 -0
- bytegrader-0.0.1/bytegrader/tasks/lti_sync.py +425 -0
- bytegrader-0.0.1/bytegrader/tasks/scheduler.py +126 -0
- bytegrader-0.0.1/docker-compose.yml +225 -0
- bytegrader-0.0.1/etc/jupyter/jupyter_server_config.d/bytegrader.json +7 -0
- bytegrader-0.0.1/install.json +5 -0
- bytegrader-0.0.1/mypy.ini +2 -0
- bytegrader-0.0.1/package.json +104 -0
- bytegrader-0.0.1/pyproject.toml +212 -0
- bytegrader-0.0.1/requirements.txt +1 -0
- bytegrader-0.0.1/setup.py +2 -0
- bytegrader-0.0.1/src/assignment-creation/cell-strip.ts +227 -0
- bytegrader-0.0.1/src/assignment-creation/index.ts +16 -0
- bytegrader-0.0.1/src/assignment-creation/mode-manager.ts +98 -0
- bytegrader-0.0.1/src/assignment-creation/model.ts +165 -0
- bytegrader-0.0.1/src/assignment-creation/overlay.ts +121 -0
- bytegrader-0.0.1/src/components/AssignmentsList.tsx +575 -0
- bytegrader-0.0.1/src/components/CoursesListPage.tsx +521 -0
- bytegrader-0.0.1/src/components/ErrorBoundary.tsx +38 -0
- bytegrader-0.0.1/src/components/TopBar.tsx +151 -0
- bytegrader-0.0.1/src/components/dialogs/ConfirmationDialog.tsx +116 -0
- bytegrader-0.0.1/src/components/dialogs/CreateCourseDialog.tsx +170 -0
- bytegrader-0.0.1/src/components/dialogs/EditCourseDialog.tsx +161 -0
- bytegrader-0.0.1/src/components/dialogs/EnrollmentsDialog.tsx +390 -0
- bytegrader-0.0.1/src/components/dialogs/ErrorDialog.tsx +116 -0
- bytegrader-0.0.1/src/components/dialogs/FilePickerDialog.tsx +535 -0
- bytegrader-0.0.1/src/components/dialogs/WidgetModal.tsx +153 -0
- bytegrader-0.0.1/src/components/shared/AssignmentActionButtons.tsx +150 -0
- bytegrader-0.0.1/src/components/shared/Badges.tsx +168 -0
- bytegrader-0.0.1/src/components/shared/DueDateDisplay.tsx +24 -0
- bytegrader-0.0.1/src/components/shared/LoadingStates.tsx +57 -0
- bytegrader-0.0.1/src/components/shared/NotebookList.tsx +48 -0
- bytegrader-0.0.1/src/components/wizards/CreateAssignmentWizard.tsx +1224 -0
- bytegrader-0.0.1/src/constants/index.ts +98 -0
- bytegrader-0.0.1/src/hooks/useAssignmentPermissions.ts +19 -0
- bytegrader-0.0.1/src/hooks/useErrorHandler.ts +49 -0
- bytegrader-0.0.1/src/hooks/usePermissions.ts +29 -0
- bytegrader-0.0.1/src/hooks/useScrollDetection.ts +21 -0
- bytegrader-0.0.1/src/i18n/de.json +3 -0
- bytegrader-0.0.1/src/i18n/en.json +3 -0
- bytegrader-0.0.1/src/index.ts +215 -0
- bytegrader-0.0.1/src/services/api.ts +83 -0
- bytegrader-0.0.1/src/stores/assignmentsStore.ts +151 -0
- bytegrader-0.0.1/src/stores/coursesStore.ts +74 -0
- bytegrader-0.0.1/src/stores/userStore.ts +41 -0
- bytegrader-0.0.1/src/types/api.ts +118 -0
- bytegrader-0.0.1/src/types/assets.d.ts +34 -0
- bytegrader-0.0.1/src/utils/themeSync.tsx +117 -0
- bytegrader-0.0.1/src/utils.ts +50 -0
- bytegrader-0.0.1/src/widgets/AssignmentsListWidget.tsx +342 -0
- bytegrader-0.0.1/src/widgets/CoursesListWidget.tsx +68 -0
- bytegrader-0.0.1/style/assignment-creation.css +97 -0
- bytegrader-0.0.1/style/index.css +1 -0
- bytegrader-0.0.1/style/logo.png +0 -0
- bytegrader-0.0.1/tsconfig.json +33 -0
- bytegrader-0.0.1/uv.lock +3374 -0
- bytegrader-0.0.1/yarn.lock +8614 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"image":"mcr.microsoft.com/devcontainers/base:ubuntu"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# Git
|
|
2
|
+
.git
|
|
3
|
+
.gitignore
|
|
4
|
+
.github
|
|
5
|
+
|
|
6
|
+
# Documentation
|
|
7
|
+
*.md
|
|
8
|
+
!README.md
|
|
9
|
+
docs/
|
|
10
|
+
|
|
11
|
+
# Tests
|
|
12
|
+
tests/
|
|
13
|
+
*.test.ts
|
|
14
|
+
*.test.py
|
|
15
|
+
*.spec.ts
|
|
16
|
+
pytest.ini
|
|
17
|
+
.pytest_cache/
|
|
18
|
+
htmlcov/
|
|
19
|
+
.coverage
|
|
20
|
+
|
|
21
|
+
# Development files
|
|
22
|
+
.env
|
|
23
|
+
.env.local
|
|
24
|
+
.env.*.local
|
|
25
|
+
*.log
|
|
26
|
+
|
|
27
|
+
# IDE
|
|
28
|
+
.idea/
|
|
29
|
+
.vscode/
|
|
30
|
+
*.swp
|
|
31
|
+
*.swo
|
|
32
|
+
*~
|
|
33
|
+
|
|
34
|
+
# Python
|
|
35
|
+
__pycache__/
|
|
36
|
+
*.py[cod]
|
|
37
|
+
*$py.class
|
|
38
|
+
*.so
|
|
39
|
+
.Python
|
|
40
|
+
build/
|
|
41
|
+
develop-eggs/
|
|
42
|
+
dist/
|
|
43
|
+
downloads/
|
|
44
|
+
eggs/
|
|
45
|
+
.eggs/
|
|
46
|
+
lib64/
|
|
47
|
+
parts/
|
|
48
|
+
sdist/
|
|
49
|
+
var/
|
|
50
|
+
wheels/
|
|
51
|
+
*.egg-info/
|
|
52
|
+
.installed.cfg
|
|
53
|
+
*.egg
|
|
54
|
+
.mypy_cache/
|
|
55
|
+
.dmypy.json
|
|
56
|
+
dmypy.json
|
|
57
|
+
|
|
58
|
+
# Node
|
|
59
|
+
node_modules/
|
|
60
|
+
npm-debug.log*
|
|
61
|
+
yarn-debug.log*
|
|
62
|
+
yarn-error.log*
|
|
63
|
+
.npm
|
|
64
|
+
|
|
65
|
+
# JupyterHub
|
|
66
|
+
jupyterhub.sqlite
|
|
67
|
+
jupyterhub_cookie_secret
|
|
68
|
+
jupyterhub-proxy.pid
|
|
69
|
+
|
|
70
|
+
# Docker
|
|
71
|
+
docker/keys/
|
|
72
|
+
docker/scripts/*.log
|
|
73
|
+
|
|
74
|
+
# Temporary files
|
|
75
|
+
*.tmp
|
|
76
|
+
*.temp
|
|
77
|
+
.DS_Store
|
|
78
|
+
Thumbs.db
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
# Byte-compiled / optimized / DLL files
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
|
|
5
|
+
# C extensions
|
|
6
|
+
*.so
|
|
7
|
+
|
|
8
|
+
# Distribution / packaging
|
|
9
|
+
.Python
|
|
10
|
+
env/
|
|
11
|
+
build/
|
|
12
|
+
develop-eggs/
|
|
13
|
+
dist/
|
|
14
|
+
downloads/
|
|
15
|
+
eggs/
|
|
16
|
+
lib/
|
|
17
|
+
lib64/
|
|
18
|
+
parts/
|
|
19
|
+
sdist/
|
|
20
|
+
var/
|
|
21
|
+
*.egg-info/
|
|
22
|
+
.installed.cfg
|
|
23
|
+
*.egg
|
|
24
|
+
|
|
25
|
+
# built labextension
|
|
26
|
+
tsconfig.tsbuildinfo
|
|
27
|
+
bytegrader/extensions/labextension/
|
|
28
|
+
# Yarn cache
|
|
29
|
+
.yarn/
|
|
30
|
+
|
|
31
|
+
# PyInstaller
|
|
32
|
+
# Usually these files are written by a python script from a template
|
|
33
|
+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
|
34
|
+
*.manifest
|
|
35
|
+
*.spec
|
|
36
|
+
|
|
37
|
+
# Installer logs
|
|
38
|
+
pip-log.txt
|
|
39
|
+
pip-delete-this-directory.txt
|
|
40
|
+
|
|
41
|
+
# Unit test / coverage reports
|
|
42
|
+
htmlcov/
|
|
43
|
+
.tox/
|
|
44
|
+
.coverage
|
|
45
|
+
.cache
|
|
46
|
+
nosetests.xml
|
|
47
|
+
coverage.xml
|
|
48
|
+
|
|
49
|
+
# Translations
|
|
50
|
+
*.mo
|
|
51
|
+
*.pot
|
|
52
|
+
|
|
53
|
+
# Django stuff:
|
|
54
|
+
*.log
|
|
55
|
+
|
|
56
|
+
# Sphinx documentation
|
|
57
|
+
nbgrader/docs/_build/
|
|
58
|
+
|
|
59
|
+
# PyBuilder
|
|
60
|
+
target/
|
|
61
|
+
|
|
62
|
+
# Jupyter notebook checkpoints
|
|
63
|
+
.ipynb_checkpoints/
|
|
64
|
+
|
|
65
|
+
# Coverage files
|
|
66
|
+
.coverage.*
|
|
67
|
+
|
|
68
|
+
# components stuff
|
|
69
|
+
node_modules
|
|
70
|
+
bytegrader/server_extensions/formgrader/static/components/
|
|
71
|
+
|
|
72
|
+
conda-bld
|
|
73
|
+
gh_api.sqlite
|
|
74
|
+
MANIFEST
|
|
75
|
+
README
|
|
76
|
+
.pytest_cache
|
|
77
|
+
venv/
|
|
78
|
+
gradebook.db
|
|
79
|
+
.buildconfig
|
|
80
|
+
*~
|
|
81
|
+
.vscode/
|
|
82
|
+
package-lock.json
|
|
83
|
+
.goutputstream*
|
|
84
|
+
.idea
|
|
85
|
+
.mypy_cache
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
# playwright output tests directory
|
|
89
|
+
playwright-tests/
|
|
90
|
+
playwright-report
|
|
91
|
+
test-results
|
|
92
|
+
/test-results/
|
|
93
|
+
/playwright-report/
|
|
94
|
+
/dist-pw/
|
|
95
|
+
|
|
96
|
+
.pnpm-store/
|
|
97
|
+
|
|
98
|
+
# Tests
|
|
99
|
+
test/
|
|
100
|
+
test_env/
|
|
101
|
+
testenv/
|
|
102
|
+
|
|
103
|
+
.venv/
|
|
104
|
+
|
|
105
|
+
# Docker secrets
|
|
106
|
+
.env
|
|
107
|
+
docker/keys/*.pem
|
|
108
|
+
docker/lti-config/
|
bytegrader-0.0.1/.npmrc
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.10
|
bytegrader-0.0.1/.yarnrc
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
network-timeout 300000
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
nodeLinker: node-modules
|
bytegrader-0.0.1/LICENSE
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
BSD 3-Clause License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026, Kamuyin
|
|
4
|
+
|
|
5
|
+
Redistribution and use in source and binary forms, with or without
|
|
6
|
+
modification, are permitted provided that the following conditions are met:
|
|
7
|
+
|
|
8
|
+
1. Redistributions of source code must retain the above copyright notice, this
|
|
9
|
+
list of conditions and the following disclaimer.
|
|
10
|
+
|
|
11
|
+
2. Redistributions in binary form must reproduce the above copyright notice,
|
|
12
|
+
this list of conditions and the following disclaimer in the documentation
|
|
13
|
+
and/or other materials provided with the distribution.
|
|
14
|
+
|
|
15
|
+
3. Neither the name of the copyright holder nor the names of its
|
|
16
|
+
contributors may be used to endorse or promote products derived from
|
|
17
|
+
this software without specific prior written permission.
|
|
18
|
+
|
|
19
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
20
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
21
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
22
|
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
23
|
+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
24
|
+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
25
|
+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
26
|
+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
27
|
+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
28
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: bytegrader
|
|
3
|
+
Version: 0.0.1
|
|
4
|
+
Summary: BYTEGrader - JupyterHub assignment grading service
|
|
5
|
+
License-File: LICENSE
|
|
6
|
+
Keywords: Grading,Homework,Jupyter,JupyterLab,Notebooks
|
|
7
|
+
Classifier: Framework :: Jupyter
|
|
8
|
+
Classifier: Framework :: Jupyter :: JupyterLab
|
|
9
|
+
Classifier: Framework :: Jupyter :: JupyterLab :: 4
|
|
10
|
+
Classifier: Framework :: Jupyter :: JupyterLab :: Extensions
|
|
11
|
+
Classifier: Framework :: Jupyter :: JupyterLab :: Extensions :: Prebuilt
|
|
12
|
+
Classifier: License :: OSI Approved :: BSD License
|
|
13
|
+
Classifier: Programming Language :: Python
|
|
14
|
+
Classifier: Programming Language :: Python :: 3
|
|
15
|
+
Requires-Python: >=3.10
|
|
16
|
+
Requires-Dist: aiohttp>=3.8.0
|
|
17
|
+
Requires-Dist: apscheduler>=3.11.0
|
|
18
|
+
Requires-Dist: cachetools>=5.0.0
|
|
19
|
+
Requires-Dist: colorama>=0.4.6
|
|
20
|
+
Requires-Dist: cryptography>=3.4.8
|
|
21
|
+
Requires-Dist: ipython>=8.10.0
|
|
22
|
+
Requires-Dist: ipywidgets>=7.6
|
|
23
|
+
Requires-Dist: jinja2>=3
|
|
24
|
+
Requires-Dist: jupyter-client<9
|
|
25
|
+
Requires-Dist: jupyter-server>=2
|
|
26
|
+
Requires-Dist: jupyterhub-systemdspawner>=1.0.2
|
|
27
|
+
Requires-Dist: jupyterlab-server
|
|
28
|
+
Requires-Dist: jupyterlab<5,>=4.2.0
|
|
29
|
+
Requires-Dist: nbclient>=0.6.1
|
|
30
|
+
Requires-Dist: nbconvert>=6
|
|
31
|
+
Requires-Dist: notebook<8,>=7.2.0
|
|
32
|
+
Requires-Dist: pydantic>=2.11.2
|
|
33
|
+
Requires-Dist: pyjwt
|
|
34
|
+
Requires-Dist: python-dateutil>=2.8
|
|
35
|
+
Requires-Dist: pyyaml>=6.0
|
|
36
|
+
Requires-Dist: rapidfuzz>=1.8
|
|
37
|
+
Requires-Dist: requests>=2.26
|
|
38
|
+
Requires-Dist: rich>=14.0.0
|
|
39
|
+
Requires-Dist: setuptools
|
|
40
|
+
Requires-Dist: sqlalchemy<3,>=1.4
|
|
41
|
+
Requires-Dist: tomli>=2.2.1
|
|
42
|
+
Requires-Dist: traitlets>=5.14.3
|
|
43
|
+
Provides-Extra: opentelemetry
|
|
44
|
+
Requires-Dist: opentelemetry-exporter-otlp>=1.26.0; extra == 'opentelemetry'
|
|
45
|
+
Requires-Dist: opentelemetry-instrumentation-requests>=0.49b0; extra == 'opentelemetry'
|
|
46
|
+
Requires-Dist: opentelemetry-instrumentation-sqlalchemy>=0.49b0; extra == 'opentelemetry'
|
|
47
|
+
Requires-Dist: opentelemetry-instrumentation-tornado>=0.49b0; extra == 'opentelemetry'
|
|
48
|
+
Requires-Dist: opentelemetry-sdk>=1.26.0; extra == 'opentelemetry'
|
|
49
|
+
Provides-Extra: sentry
|
|
50
|
+
Requires-Dist: sentry-sdk>=2.0.0; extra == 'sentry'
|
|
51
|
+
Provides-Extra: systemd
|
|
52
|
+
Requires-Dist: bytegrader-executor-systemd; extra == 'systemd'
|
|
53
|
+
Provides-Extra: wasm-executor
|
|
54
|
+
Requires-Dist: wasmtime>=35.0.0; extra == 'wasm-executor'
|
|
File without changes
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
# BYTEGrader
|
|
2
|
+
|
|
3
|
+
BYTE Grader is an autograding service designed for educational environments. It integrates with JupyterHub and Learning Management Systems through LTI 1.3, providing automated grading capabilities for Jupyter notebooks with support for custom test cases and modular execution environments. It's inspired of [nbgrader](https://github.com/jupyter/nbgrader) which is great but lacks support of LMS synchronization and isolated execution environments for the autograding.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
BYTEGrader consists of two main components:
|
|
8
|
+
|
|
9
|
+
- **Backend Service**: A Tornado application that provides RESTful APIs for managing courses, assignments, and submissions with automated grading capabilities
|
|
10
|
+
- **JupyterLab Extension**: A TypeScript/React frontend that extends JupyterLab with an interface for instructors and students
|
|
11
|
+
|
|
12
|
+
The system supports LTI 1.3 integration with platforms like Moodle, allowing grade synchronization and user provisioning through LTI Advantage services (Assignment and Grade Services, Names and Role Provisioning Service).
|
|
13
|
+
|
|
14
|
+
## Showcase
|
|
15
|
+
|
|
16
|
+
### Courses
|
|
17
|
+
|
|
18
|
+

|
|
19
|
+
|
|
20
|
+
### Assignments
|
|
21
|
+
|
|
22
|
+

|
|
23
|
+
|
|
24
|
+
### Create Assignment (Step 1)
|
|
25
|
+
|
|
26
|
+

|
|
27
|
+
|
|
28
|
+
### Create Assignment (Step 2)
|
|
29
|
+
|
|
30
|
+

|
|
31
|
+
|
|
32
|
+
### Create Assignment (Step 3)
|
|
33
|
+
|
|
34
|
+

|
|
35
|
+
|
|
36
|
+
### Graded Submission
|
|
37
|
+
|
|
38
|
+

|
|
39
|
+
|
|
40
|
+
## Key Features
|
|
41
|
+
|
|
42
|
+
### Assignment Management
|
|
43
|
+
|
|
44
|
+
- Create and manage programming assignments with multiple notebook files
|
|
45
|
+
- Configure automated tests and grading criteria
|
|
46
|
+
- Set due dates, late submission policies, and point allocations
|
|
47
|
+
- Allow students to fetch solutions for an assignment with conditions.
|
|
48
|
+
|
|
49
|
+
### Automated Grading
|
|
50
|
+
|
|
51
|
+
- Execute student submissions in isolated environments
|
|
52
|
+
- Run automated test suites with timeout and resource limits
|
|
53
|
+
- Aggregate scores across multiple notebooks and test cases
|
|
54
|
+
|
|
55
|
+
### LTI 1.3 Integration
|
|
56
|
+
|
|
57
|
+
- Secure authentication via LTI launch from LMS platforms
|
|
58
|
+
- Automatic course and user synchronization through NRPS
|
|
59
|
+
- Grade passback to LMS via Assignment and Grade Service (AGS)
|
|
60
|
+
- Support for deep linking and resource selection
|
|
61
|
+
|
|
62
|
+
## Installation
|
|
63
|
+
|
|
64
|
+
### Prerequisites
|
|
65
|
+
|
|
66
|
+
- Python 3.11 or higher
|
|
67
|
+
- Node.js 18 or higher
|
|
68
|
+
- Database (SQLite, PostgreSQL, etc.)
|
|
69
|
+
- JupyterHub
|
|
70
|
+
|
|
71
|
+
### Setup
|
|
72
|
+
|
|
73
|
+
1. Install the package
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
uv sync
|
|
77
|
+
uv pip install -e .
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
2. Set up BYTEGrader configuration
|
|
81
|
+
Please see [example/bytegrader_config.py](example/bytegrader_config.py) for an example configuration.
|
|
82
|
+
|
|
83
|
+
3. Add the service to JupyterHub (managed or external)
|
|
84
|
+
|
|
85
|
+
```python
|
|
86
|
+
c.JupyterHub.services = [
|
|
87
|
+
{
|
|
88
|
+
"name": "bytegrader",
|
|
89
|
+
"api_token": "1442555d6d82d96fc8a69776f19978e442873859c6a003f7be15e61d669e2e1c", # generate via `openssl rand -hex 32`
|
|
90
|
+
"url": "http://127.0.0.1:10101",
|
|
91
|
+
}
|
|
92
|
+
]
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
4. Start the service
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
export JUPYTERHUB_SERVICE_PREFIX="/services/bytegrader/"
|
|
99
|
+
export JUPYTERHUB_API_TOKEN="1442555d6d82d96fc8a69776f19978e442873859c6a003f7be15e61d669e2e1c"
|
|
100
|
+
export JUPYTERHUB_API_URL="http://127.0.0.1:8000/hub/api"
|
|
101
|
+
export JUPYTERHUB_SERVICE_NAME="bytegrader"
|
|
102
|
+
export JUPYTERHUB_SERVICE_URL="http://0.0.0.0:10101"
|
|
103
|
+
export BYTEGRADER_LOG_LEVEL="DEBUG"
|
|
104
|
+
bytegrader serve --config bytegrader_config.py
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### Docker Deployment
|
|
108
|
+
|
|
109
|
+
WIP, currently broken.
|
|
110
|
+
|
|
111
|
+
## Usage
|
|
112
|
+
|
|
113
|
+
### For Instructors
|
|
114
|
+
|
|
115
|
+
1. **Create a Course**: Navigate to the Courses panel in JupyterLab
|
|
116
|
+
2. **Create Assignment Notebooks:**: Notebooks must be created via the `nbgrader` extension. BYTE Grader is compatible with nbgrader's notebooks format.
|
|
117
|
+
3. **Create an Assignment**: Use the assignment wizard to configure:
|
|
118
|
+
- Notebook and asset files to include
|
|
119
|
+
- Due dates and late policies
|
|
120
|
+
- Solution policies
|
|
121
|
+
4. **Distribute to Students**: Assignment notebooks are automatically preprocessed and distributed
|
|
122
|
+
5. **Review Submissions**: View automated grades and provide manual feedback
|
|
123
|
+
|
|
124
|
+
### For Students
|
|
125
|
+
|
|
126
|
+
1. **Access Assignments**: Launch JupyterLab via LTI from your LMS
|
|
127
|
+
2. **Fetch Assignment**: Open the assignment and get the starter notebook
|
|
128
|
+
3. **Complete Work**: Write code in designated solution cells
|
|
129
|
+
4. **Submit**: Click submit to send for automated grading
|
|
130
|
+
5. **View Results**: See test results after autograding
|
|
131
|
+
|
|
132
|
+
## Development
|
|
133
|
+
|
|
134
|
+
### Building the Extension
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
jlpm build
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
## Project Structure
|
|
141
|
+
|
|
142
|
+
```
|
|
143
|
+
bytegrader/
|
|
144
|
+
├── bytegrader/ # Python backend
|
|
145
|
+
│ ├── autograde/ # Grading queue and workers
|
|
146
|
+
│ ├── cli/ # Command-line interface
|
|
147
|
+
│ ├── config/ # Configuration system
|
|
148
|
+
│ ├── core/ # Core models, auth, database
|
|
149
|
+
│ ├── extensions/ # JupyterLab server extension
|
|
150
|
+
│ ├── handlers/ # Tornado request handlers
|
|
151
|
+
│ ├── preprocessors/ # Notebook preprocessors
|
|
152
|
+
│ ├── repositories/ # Data access layer
|
|
153
|
+
│ ├── schemas/ # Pydantic request/response schemas
|
|
154
|
+
│ ├── services/ # Business logic
|
|
155
|
+
│ └── tasks/ # Background tasks
|
|
156
|
+
├── src/ # TypeScript frontend
|
|
157
|
+
│ ├── components/ # React components
|
|
158
|
+
│ ├── hooks/ # Custom React hooks
|
|
159
|
+
│ ├── services/ # API client
|
|
160
|
+
│ ├── stores/ # State management
|
|
161
|
+
│ └── widgets/ # JupyterLab widgets
|
|
162
|
+
├── docker/ # Docker configurations
|
|
163
|
+
├── tests/ # Test suite (TBD)
|
|
164
|
+
└── docs/ # Documentation (TBD)
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
## License
|
|
168
|
+
|
|
169
|
+
This project is licensed under the BSD 3-Clause License. See the LICENSE file for details.
|
|
170
|
+
|
|
171
|
+
## Acknowledgments
|
|
172
|
+
|
|
173
|
+
Developed as part of the BYTE Challenge initiative to enhance computer science education for students.
|
|
174
|
+
|
|
175
|
+
BYTE Grader builds upon the work of the [nbgrader](https://github.com/jupyter/nbgrader) project. The core project architecture, notebook format, preprocessor patterns, and notebook manipulation strategies were inspired by nbgrader's approach. I am grateful to the nbgrader team for providing their software as open source. Without them this project would have never existed.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import json
|
|
2
|
+
from pathlib import Path
|
|
3
|
+
from typing import List, Dict
|
|
4
|
+
|
|
5
|
+
from .extensions.lab import load_jupyter_server_extension as load_lab_extension
|
|
6
|
+
|
|
7
|
+
__version__ = '0.0.1'
|
|
8
|
+
|
|
9
|
+
HERE = Path(__file__).parent.resolve()
|
|
10
|
+
|
|
11
|
+
if not (HERE / "extensions" / "labextension").exists():
|
|
12
|
+
with (HERE / "extensions" / "labextension" / "package.json").open() as fid:
|
|
13
|
+
data = json.load(fid)
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def _jupyter_labextension_paths():
|
|
17
|
+
return [{
|
|
18
|
+
"src": "labextension",
|
|
19
|
+
"dest": data["name"]
|
|
20
|
+
}]
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def _jupyter_server_extension_points() -> List[Dict[str, str]]:
|
|
24
|
+
return [{
|
|
25
|
+
"module": "bytegrader",
|
|
26
|
+
}]
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def _load_jupyter_server_extension(app):
|
|
30
|
+
load_lab_extension(app)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
__all__ = [
|
|
34
|
+
'__version__',
|
|
35
|
+
'_jupyter_labextension_paths',
|
|
36
|
+
'_jupyter_server_extension_points',
|
|
37
|
+
'_load_jupyter_server_extension',
|
|
38
|
+
]
|
|
File without changes
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
from .simple import SimpleExecutor
|
|
2
|
+
|
|
3
|
+
__all__ = ["SimpleExecutor"]
|
|
4
|
+
# _all__ = []
|
|
5
|
+
|
|
6
|
+
try:
|
|
7
|
+
from .systemd import SystemdExecutor, SystemdExecutorConfig
|
|
8
|
+
__all__.extend(["SystemdExecutor", "SystemdExecutorConfig"])
|
|
9
|
+
except ImportError:
|
|
10
|
+
pass
|
|
11
|
+
|
|
12
|
+
try:
|
|
13
|
+
from .wasm import WasmExecutor
|
|
14
|
+
__all__.append("WasmExecutor")
|
|
15
|
+
except ImportError:
|
|
16
|
+
pass
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
from abc import abstractmethod
|
|
2
|
+
|
|
3
|
+
from nbformat import NotebookNode
|
|
4
|
+
from traitlets.config import LoggingConfigurable
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class BaseExecutor(LoggingConfigurable):
|
|
8
|
+
|
|
9
|
+
@abstractmethod
|
|
10
|
+
async def execute_cell(self, cell_source, globals_dict=None):
|
|
11
|
+
pass
|
|
12
|
+
|
|
13
|
+
@abstractmethod
|
|
14
|
+
async def execute_notebook(self, notebook: NotebookNode, cell_ids=None):
|
|
15
|
+
pass
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
import traceback
|
|
3
|
+
from io import StringIO
|
|
4
|
+
from contextlib import redirect_stdout, redirect_stderr
|
|
5
|
+
import nbformat
|
|
6
|
+
from traitlets.config import Configurable
|
|
7
|
+
|
|
8
|
+
from bytegrader.autograde.executors.base import BaseExecutor
|
|
9
|
+
|
|
10
|
+
# ! Only for demonstration purposes; must not be used in production due to security risks.
|
|
11
|
+
class SimpleExecutor(BaseExecutor, Configurable):
|
|
12
|
+
|
|
13
|
+
def __init__(self, **kwargs):
|
|
14
|
+
super().__init__(**kwargs)
|
|
15
|
+
self.log = logging.getLogger("SimpleExecutor")
|
|
16
|
+
self.log.info("SimpleExecutor initialized")
|
|
17
|
+
|
|
18
|
+
async def execute_cell(self, cell_source, globals_dict=None):
|
|
19
|
+
buf = StringIO()
|
|
20
|
+
env = globals_dict if globals_dict is not None else {}
|
|
21
|
+
|
|
22
|
+
try:
|
|
23
|
+
self.log.info(f"Executing cell: {cell_source[:30]}...")
|
|
24
|
+
with redirect_stdout(buf), redirect_stderr(buf):
|
|
25
|
+
exec(cell_source, env)
|
|
26
|
+
return {
|
|
27
|
+
"success": True,
|
|
28
|
+
"output": buf.getvalue(),
|
|
29
|
+
"error": None
|
|
30
|
+
}
|
|
31
|
+
except Exception:
|
|
32
|
+
return {
|
|
33
|
+
"success": False,
|
|
34
|
+
"output": buf.getvalue(),
|
|
35
|
+
"error": {"traceback": traceback.format_exc()}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
async def execute_notebook(self, notebook: nbformat.NotebookNode, cell_ids=None):
|
|
39
|
+
nb_id = getattr(notebook, "metadata", {}).get("name", None)
|
|
40
|
+
total = len(notebook.cells)
|
|
41
|
+
self.log.info(f"Executing NotebookNode name={nb_id} with {total} cells")
|
|
42
|
+
results = {}
|
|
43
|
+
env = {}
|
|
44
|
+
|
|
45
|
+
for cell in notebook.cells:
|
|
46
|
+
cid = getattr(cell, "id", None)
|
|
47
|
+
if cell.cell_type != "code":
|
|
48
|
+
continue
|
|
49
|
+
if cell_ids and cid not in cell_ids:
|
|
50
|
+
continue
|
|
51
|
+
res = await self.execute_cell(cell.source, globals_dict=env)
|
|
52
|
+
results[cid] = res
|
|
53
|
+
|
|
54
|
+
return results
|