Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
ee69eaf
adjusted update from google api to use async generator
bradley-erickson Oct 25, 2024
0bac912
fixed small bug in yield statements
bradley-erickson Oct 25, 2024
5127ea7
fixed possible create_task bug (#192)
bradley-erickson Oct 30, 2024
5ad48ab
Bump rollup from 2.79.1 to 2.79.2 in /modules/lo_dash_react_component…
dependabot[bot] Nov 4, 2024
45d1c38
Bump cookie and express in /modules/lo_dash_react_components (#183)
dependabot[bot] Nov 4, 2024
fdf00ea
Bump elliptic from 6.5.7 to 6.6.0 in /modules/lo_dash_react_component…
dependabot[bot] Nov 4, 2024
0105345
added communication protocol readme to documentation
bradley-erickson Nov 4, 2024
22bf450
updated npm packages for lo_event
pbrost Nov 6, 2024
4ff4f3a
Abstracted current gpt responders to their own module (#178)
bradley-erickson Nov 7, 2024
cc3a4b7
small installation fixes
bradley-erickson Nov 7, 2024
78723f9
Update to redux-thunk and compile error fix
pbrost Nov 8, 2024
e6a922c
import thunk statement change
pbrost Nov 8, 2024
d413030
Make sure b.storage defaults to thunk if not sync or local
pbrost Nov 8, 2024
ad9d485
code compiling for deployment of toy-sba (#198)
bradley-erickson Nov 14, 2024
83cdafb
LO Event improvements
bradley-erickson Nov 19, 2024
7ea2abb
updated lodrc package.json and webpack config to build properly
bradley-erickson Nov 19, 2024
5e4eaca
fixed gpt dashboard flashing
bradley-erickson Nov 21, 2024
e767cae
fixed auth bug when visiting a page after session expired
bradley-erickson Nov 26, 2024
2e07dd6
Update reconstruct_doc.py
PDDeane Nov 27, 2024
ccb36fd
Update reconstruct_doc.py
PDDeane Nov 27, 2024
3eeea21
Update reconstruct_doc.py
PDDeane Nov 27, 2024
aabd807
Added additional actions for `rplc` and `rvrt`
bradley-erickson Dec 4, 2024
5020beb
extension fixes to extract document history (#204)
bradley-erickson Dec 13, 2024
b79648d
Module verioning updates and some testing next steps
bradley-erickson Dec 17, 2024
257bae3
added dashboard to demo LOConnection and helper utilities (#180)
bradley-erickson Dec 17, 2024
0ba3c08
cleaned up installation
bradley-erickson Dec 20, 2024
375103a
updated requirements (#208)
bradley-erickson Jan 2, 2025
f6cc2b2
Bump nanoid from 3.3.7 to 3.3.8 in /modules/lo_dash_react_components …
dependabot[bot] Jan 23, 2025
e6d405f
Bump path-to-regexp and express in /modules/lo_dash_react_components …
dependabot[bot] Jan 23, 2025
783c904
Save state in LO Event (#209)
bradley-erickson Feb 25, 2025
e86f39f
updated classroom text highlighter component
bradley-erickson Feb 26, 2025
5544fa8
Merge branch 'master' of github.com:ETS-Next-Gen/writing_observer
bradley-erickson Feb 26, 2025
1b7b3ac
Homepage improvements (#215)
bradley-erickson Apr 1, 2025
760c5e1
added new options to llm dashboard - students per row, height, indivi…
bradley-erickson Apr 1, 2025
4470b70
Bump @babel/helpers in /modules/lo_dash_react_components (#217)
dependabot[bot] Apr 1, 2025
9eea22f
Bump @babel/runtime in /modules/lo_dash_react_components (#218)
dependabot[bot] Apr 1, 2025
7e28238
languagetool startup and highlight dashboard improvements
bradley-erickson Apr 3, 2025
c336d5d
fixed module names
bradley-erickson Apr 3, 2025
3bdcc7c
small js bug fixes for dashboards
bradley-erickson Apr 3, 2025
bee90d1
add process metrics to dashboards
bradley-erickson May 6, 2025
e4e4adf
LTI auth + Canvas/Schoology integration
bradley-erickson Jun 11, 2025
28cb3ec
Update rosters.py
bradley-erickson Jul 10, 2025
a6724ed
Workshop updates (#230)
bradley-erickson Jul 16, 2025
f61cb8b
Various improvements to serving as an LTI
bradley-erickson Aug 10, 2025
4d8e2b4
added nginx conf
bradley-erickson Aug 15, 2025
381ec66
restructured documentation (#236)
bradley-erickson Sep 19, 2025
fb5631b
Updated extension to only connect when relevant tabs are present (#235)
bradley-erickson Sep 22, 2025
eb453bf
added some tutorials
bradley-erickson Sep 23, 2025
dfa95f9
updated extension documentation
bradley-erickson Sep 23, 2025
a3fa17c
removed unused extension files
bradley-erickson Sep 23, 2025
bad6fdb
added comm protocol concept doc and updated event doc
bradley-erickson Sep 25, 2025
1c72d9e
more descriptive table of contents plus initial communication protoco…
bradley-erickson Sep 25, 2025
d604798
updated documentation for modules
bradley-erickson Sep 30, 2025
8b205d0
updated system settings documentation
bradley-erickson Oct 1, 2025
f12616b
added documentation for serving as lti
bradley-erickson Oct 1, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 20 additions & 29 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,40 +5,31 @@ on: [push]
jobs:
lint-python:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.9", "3.10"]
steps:
- uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v3
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install pycodestyle
- name: Analysing the code with pycodestyle
run: |
pycodestyle --ignore=E501,W503 $(git ls-files 'learning_observer/*.py' 'modules/*.py')
- name: Checkout code
uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.11'

- name: Install Make
run: sudo apt-get install make

- name: Lint files
run: make linting-python
lint-node:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up Node.js
uses: actions/setup-node@v2
uses: actions/checkout@v3
- name: Set up Node
uses: actions/setup-node@v4
with:
node-version: '16.x'
- name: Install dependencies
run: |
npm install

- name: List unused CSS
run: npm run find-unused-css
node-version: '22.x'

- name: Lint CSS
run: npm run lint:css
- name: Install Make
run: sudo apt-get install make

- name: Lint JS
run: npm run lint:js
- name: Lint files
run: make linting-node
14 changes: 0 additions & 14 deletions .github/workflows/pytest.yml

This file was deleted.

51 changes: 51 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
name: Test packages

on: [push]

jobs:
test-packages:
runs-on: ubuntu-latest
strategy:
matrix:
package: ['learning_observer/', 'modules/writing_observer/']
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.11'

- name: Install Make
run: sudo apt-get install make

- name: Get list of changed files
id: changes
run: |
git fetch origin master
git diff --name-only origin/master HEAD > changed_files.txt

- name: Check if package has changes
id: package_check
run: |
if grep -qE "^${{ matrix.package }}" changed_files.txt; then
echo "run_tests=true" >> $GITHUB_ENV
else
echo "run_tests=false" >> $GITHUB_ENV
fi

- name: Skip tests if no changes
if: env.run_tests == 'false'
run: echo "Skipping tests for ${{ matrix.package }} as there are no changes."

- name: Install the base Learning Observer
if: env.run_tests == 'true'
run: make install

- name: Install the package with pip
if: env.run_tests == 'true'
run: pip install -e ${{ matrix.package }}

- name: Run tests
if: env.run_tests == 'true'
run: make test PKG=${{ matrix.package }}
27 changes: 0 additions & 27 deletions .github/workflows/versioning.yml

This file was deleted.

4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -37,4 +37,6 @@ LanguageTool-5.4
package-lock.json
learning_observer/learning_observer/static_data/google/
learning_observer/learning_observer/static_data/admins.yaml
.ipynb_checkpoints/
.ipynb_checkpoints/
.eggs/
.next/
95 changes: 57 additions & 38 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,16 +1,40 @@
PACKAGES ?= wo,awe
# TODO rename these packages to something else
PACKAGES ?= wo

help:
@echo "Available commands:"
@echo ""
@echo " run Run the learning_observer Python application."
@echo " install-pre-commit-hook Install the pre-commit git hook."
@echo " install Install the learning_observer package in development mode."
@echo " install-dev Install dev dependencies (requires additional setup)."
@echo " install-packages Install specific packages: [${PACKAGES}]."
@echo " test Run tests for the specified package (PKG=<package>)."
@echo " linting-setup Setup linting tools and dependencies."
@echo " linting-python Lint Python files using pycodestyle and pylint."
@echo " linting-node Lint Node files (JS, CSS, and unused CSS detection)."
@echo " linting Perform all linting tasks (Python and Node)."
@echo " build-wo-chrome-extension Build the writing-process extension."
@echo " build-python-distribution Build a distribution for the specified package (PKG=<package>)."
@echo ""
@echo "Note: All commands are executed in the current shell environment."
@echo " Ensure your virtual environment is activated if desired, as installs and actions"
@echo " will occur in the environment where the 'make' command is run."
@echo ""
@echo "Use 'make <command>' to execute a command. For example: make run"

run:
# If you haven't done so yet, run: make install
# we need to make sure we are on the virtual env when we do this
cd learning_observer && python learning_observer

venv:
# This is unnecessary since LO installs requirements on install.
# pip install --no-cache-dir -r requirements.txt
# Install commands
install-pre-commit-hook:
# Adding pre-commit.sh to Git hooks
cp scripts/hooks/pre-commit.sh .git/hooks/pre-commit
chmod +x .git/hooks/pre-commit

# install commands
install: venv
install: install-pre-commit-hook
# The following only works with specified packages
# we need to install learning_observer in dev mode to
# more easily pass in specific files we need, such as creds
Expand All @@ -25,52 +49,28 @@ install: venv
@LODRC_CURRENT=$$(curl -s https://raw.githubusercontent.com/ETS-Next-Gen/lo_assets/main/lo_dash_react_components/lo_dash_react_components-current.tar.gz); \
pip install https://raw.githubusercontent.com/ETS-Next-Gen/lo_assets/main/lo_dash_react_components/$${LODRC_CURRENT}

install-dev: venv
install-dev:
# TODO create a dev requirements file
pip install --no-cache-dir -e learning_observer/[${PACKAGES}]
. ${HOME}/.nvm/nvm.sh && nvm use && pip install -v -e modules/lo_dash_react_components/

install-packages: venv
install-packages:
pip install -e learning_observer/[${PACKAGES}]

# Just a little bit of dependency hell...

# The AWE Components are built using a specific version of
# `spacy`. This requires an out-of-date `typing-extensions`
# package. There are few other dependecies that require a
# newer version. As far as I can tell, upgrading this package
# does not effect the functionality we receive from the AWE
# components.
# TODO remove this extra step after AWE Component's `spacy`
# is no longer version locked.
# This is no longer an issue, but we will leave until all
# dependecies can be resolved in the appropriate locations.
# pip install -U typing-extensions

# On Python3.11 with tensorflow, we get some odd errors
# regarding compatibility with `protobuf`. Some installation
# files are missing from the protobuf binary on pip.
# Using the `--no-binary` option includes all files.
pip uninstall -y protobuf
pip install --no-binary=protobuf protobuf==4.25

# testing commands
# Testing commands
test:
# this is where we run doctests
pytest modules/wo_highlight_dashboard
@if [ -z "$(PKG)" ]; then echo "No module specified, please try again with \"make test PKG=path/to/module\""; exit 1; fi
./test.sh $(PKG)

# Linting commands
linting-setup:
# Setting up linting related packages
pip install pycodestyle pylint
npm install

linting-python:
# Linting Python modules
pip install pycodestyle pylint
pycodestyle --ignore=E501,W503 $$(git ls-files 'learning_observer/*.py' 'modules/*.py')
pylint -d W0613,W0511,C0301,R0913,too-few-public-methods $$(git ls-files 'learning_observer/*.py' 'modules/*.py')

linting-node:
npm install
# TODO each of these have lots of errors and block
# the next item from running
# Starting to lint Node modules
Expand All @@ -84,8 +84,27 @@ linting-node:
linting: linting-setup linting-python linting-node
# Finished linting

build-writing-ext:
# Build commands
build-wo-chrome-extension:
# Installing LO Event
cd modules/lo_event && npm install & npm link lo_event
# Building extension
cd extension/writing-process && npm install && npm run build

build-python-distribution:
# Building distribution for package
pip install build
# Switching to package directory
cd $(PKG) && python -m build

# TODO we may want to have a separate command for uploading to testpypi
upload-python-package-to-pypi: build-python-distribution
pip install twine
# TODO we currently only upload to testpypi
# TODO we need to include `TWINE_USERNAME=__token__`
# and `TWINE_PASSWORD={ourTwineToken}` to authenticate
#
# TODO We have not fully tested the following commands.
# Try out the following steps and fix any bugs so the
# Makefile can do it automatically.
# cd $(PKG) && twine upload -r testpypi dist/*
1 change: 1 addition & 0 deletions VERSION
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0.1.0+2025.10.01T21.16.15.146Z.8b205d0c.master
1 change: 1 addition & 0 deletions autodocs/.gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
_build/
generated/
apidocs/
module_readmes/
1 change: 1 addition & 0 deletions autodocs/api.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,6 @@ API
===

.. toctree::
:maxdepth: 4

apidocs/index
49 changes: 49 additions & 0 deletions autodocs/concepts.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
Concepts
=============

Explanations of key ideas, principles, and background knowledge.
Follow this recommended sequence to build context before diving into
implementation details:

- :doc:`History <docs/concepts/history>` - establishes the background and
problem space the project is addressing.
- :doc:`System Design <docs/concepts/system_design>` - explains how the product
strategy and user needs translate into an overall system approach.
- :doc:`Architecture <docs/concepts/architecture>` - outlines the concrete
architecture that implements the system design.
- :doc:`Technologies <docs/concepts/technologies>` - surveys the primary tools
and platforms we rely on to realize the architecture.
- :doc:`System Settings <docs/concepts/system_settings>` - describes how the
system loads global and cascading settings.
- :doc:`Events <docs/concepts/events>` - introduces the event model that drives
data flowing through the system.
- :doc:`Reducers <docs/concepts/reducers>` - details how incoming events are
aggregated into the state our experiences depend on.
- :doc:`Communication Protocol <docs/concepts/communication_protocol>` - discusses how
the system queries data from reducers for dashboards.
- :doc:`Student Identity Mapping <docs/concepts/student_identity_mapping>` - explain
how learners information is mapped across integrations.
- :doc:`Scaling <docs/concepts/scaling>` - covers strategies for growing the
system once the fundamentals are in place.
- :doc:`Auth <docs/concepts/auth>` - describes authentication considerations
that secure access to the system.
- :doc:`Privacy <docs/concepts/privacy>` - documents how we protect learner data
and comply with privacy expectations.

.. toctree::
:hidden:
:maxdepth: 1
:titlesonly:

docs/concepts/history
docs/concepts/system_design
docs/concepts/architecture
docs/concepts/technologies
docs/concepts/system_settings
docs/concepts/events
docs/concepts/reducers
docs/concepts/communication_protocol
docs/concepts/student_identity_mapping
docs/concepts/scaling
docs/concepts/auth
docs/concepts/privacy
Loading
Loading