Changelog¶
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased¶
5.0.1 - 2024-07-11¶
Changed¶
- Force Elasticsearch REFRESH_AFTER_WRITE setting to be a string
Fixed¶
- Fix LaxStatement validation to prevent statements IDs modification
5.0.0 - 2024-05-02¶
Added¶
- Models: Add Webinar xAPI activity type
Changed¶
- Upgrade
pydanticto2.7.0 - Migrate model tests from hypothesis strategies to polyfactory
- Replace soon-to-be deprecated
parse_obj_aswithTypeAdapter
4.2.0 - 2024-04-08¶
Added¶
- Models: Add Edx teams-related events support
- Models: Add Edx notes events support
- Models: Add Edx certificate events support
- Models: Add Edx bookmark (renamed Course Resource) events support
- Models: Add Edx poll and survey events support
- Models: Add Edx Course Content Completion events support
- Models: Add Edx drag and drop events support
- Models: Add Edx cohort events support
- Models: Add Edx content library interaction events support
- Backends: Add
ralph.backends.dataandralph.backends.lrsentry points to discover backends from plugins.
Changed¶
- Backends: the first argument of the
get_backendsmethod now requires a list ofEntryPoints, each pointing to a backend class, instead of a tuple of packages containing backends. - API: The
RUNSERVER_BACKENDconfiguration value is no longer validated to point to an existing backend.
Fixed¶
- LRS: Fix querying on
activitywhen LRS contains statements with an object lacking aobjectTypeattribute
4.1.0 - 2024-02-12¶
Added¶
- Add LRS multitenancy support for user-specific target storage
Changed¶
query_statementsandquery_statements_by_idsmethods can now take an optional user-specific target
Fixed¶
- Backends: switch LRSStatementsQuery since/until field types to iso 8601 string
Removed¶
- Removed
event_table_nameattribute of the ClickHouse data backend
4.0.0 - 2024-01-23¶
Added¶
- Backends: Add
WritableandListableinterfaces to distinguish supported functionalities amongdatabackends - Backends: Add
max_statementsoption to data backendsreadmethod - Backends: Add
prefetchoption to async data backendsreadmethod - Backends: Add
concurrencyoption to async data backendswritemethod - Backends: Add
get_backendsfunction to automatically discover backends for CLI and LRS usage - Backends: Add client options for WSDataBackend
- Backends: Add
READ_CHUNK_SIZEandWRITE_CHUNK_SIZEdata backend settings - Models: Implement Pydantic model for LRS Statements resource query parameters
- Models: Implement xAPI LMS Profile statements validation
- Models: Add
EdXtoxAPIconverters for enrollment events - Project: Add aliases for
ralph-malphextra dependencies:backendsandfull
Changed¶
- Arnold: Add variable to override PVC name in arnold deployment
- API:
GET /statementsnow has “mine” option which matches statements that have an authority field matching that of the user - API: Invalid parameters now return 400 status code
- API: Forwarding PUT now uses PUT (instead of POST)
- API: Incoming statements are enriched with
id,timestamp,storedandauthority - API: Add
RALPH_LRS_RESTRICT_BY_AUTHORITYoption making?mine=Trueimplicit - API: Add
RALPH_LRS_RESTRICT_BY_SCOPEoption enabling endpoint access control by user scopes - API: Enhance ‘limit’ query parameter’s validation
- API: Variable
RUNSERVER_AUTH_BACKENDbecomesRUNSERVER_AUTH_BACKENDS, and multiple authentication methods are supported simultaneously - Backends: Refactor LRS Statements resource query parameters defined for
ralphAPI - Backends: Refactor
database,storage,httpandstreambackends under the unifieddatabackend interface [BC] - Backends: Refactor LRS
query_statementsandquery_statements_by_idsbackends methods under the unifiedlrsbackend interface [BC] - Backends: Update
statementIdandvoidedStatementIdto snake_case, with camelCase alias, inLRSStatementsQuery - Backends: Replace reference to a JSON column in ClickHouse with function calls on the String column [BC]
- CLI: User credentials must now include an “agent” field which can be created using the cli
- CLI: Change
pushtowriteandfetchtoread[BC] - CLI: Change
-c --chunk-sizeoption to-s --chunk-size[BC] - CLI: Change websocket backend name
-b wsto-b async_wsalong with it’s uri option--ws-urito--async-ws-uri[BC] - CLI: List cli usage strings in alphabetical order
- CLI: Change backend configuration environment variable prefixes from
RALPH_BACKENDS__{{DATABASE|HTTP|STORAGE|STREAM}}__{{BACKEND}}__{{OPTION}}toRALPH_BACKENDS__DATA__{{BACKEND}}__{{OPTION}} - Models: The xAPI
context.contextActivities.categoryfield is now mandatory in the video and virtual classroom profiles. [BC] - Upgrade base python version to 3.12 for the development stack and Docker image
- Upgrade
bcryptto4.1.2 - Upgrade
cachetoolsto5.3.2 - Upgrade
fastapito0.108.0 - Upgrade
sentry_sdkto1.39.1 - Upgrade
uvicornto0.25.0
Fixed¶
- API: Fix a typo (‘attachements’ -> ‘attachments’) to ensure compliance with the LRS specification and prevent potential silent bugs
Removed¶
- Project: Drop support for Python 3.7
- Models: Remove
school,course,modulecontext extensions in Edx to xAPI base converter - Models: Remove
namefield inVideoActivityxAPI model mistakenly used invideoprofile - CLI: Remove
DEFAULT_BACKEND_CHUNK_SIZEenvironment variable configuration
3.9.0 - 2023-07-21¶
Changed¶
- Upgrade
fastapito0.100.0 - Upgrade
sentry_sdkto1.28.1 - Upgrade
uvicornto0.23.0 - Enforce valid IRI for
activityparameter inGET /statements - Change how duplicate xAPI statements are handled for
clickhousebackend
3.8.0 - 2023-06-21¶
Added¶
- Implement edX open response assessment events pydantic models
- Implement edx peer instruction events pydantic models
- Implement xAPI VideoDownloaded pydantic model
(using xAPI TinCan
downloadedverb)
Changed¶
- Allow to use a query for HTTP backends in the CLI
3.7.0 - 2023-06-13¶
Added¶
- Implement asynchronous
async_lrsbackend - Implement synchronous
lrsbackend - Implement xAPI virtual classroom pydantic models
- Allow to insert custom endpoint url for S3 service
- Cache the HTTP Basic auth credentials to improve API response time
- Support OpenID Connect authentication method
Changed¶
- Clean xAPI pydantic models naming convention
- Upgrade
fastapito0.97.0 - Upgrade
sentry_sdkto1.25.1 - Set Clickhouse
client_optionsto a dedicated pydantic model - Upgrade
httpxto0.24.1 - Force a valid (JSON-formatted) IFI to be passed for the
/statementsGET queryagentfiltering - Upgrade
cachetoolsto5.3.1
Removed¶
verb.displayfield no longer mandatory in xAPI models and for converter
3.6.0 - 2023-05-17¶
Added¶
- Allow to ignore health check routes for Sentry transactions
Changed¶
- Upgrade
sentry_sdkto1.22.2 - Upgrade
uvicornto0.22.0 - LRS
/statementsGETmethod returns a code 400 with certain parameters as per the xAPI specification - Use batch/v1 api in cronjob_pipeline manifest
- Use autoscaling/v2 in HorizontalPodAutoscaler manifest
Fixed¶
- Fix the
moreIRL building in LRS/statementsGET requests
3.5.1 - 2023-04-18¶
Changed¶
- Upgrade
httpxto0.24.0 - Upgrade
fastapito0.95.1 - Upgrade
sentry_sdkto1.19.1 - Upgrade
uvicornto0.21.1
Fixed¶
- An issue with starting Ralph in pre-built Docker containers
- Fix double quoting in ClickHouse backend server parameters
- An issue Ralph starting when ClickHouse is down
3.5.0 - 2023-03-08¶
Added¶
- Implement PUT verb on statements endpoint
- Add ClickHouse database backend support
Changed¶
- Make trailing slashes optional on statements endpoint
- Upgrade
sentry_sdkto1.16.0
3.4.0 - 2023-03-01¶
Changed¶
- Upgrade
fastapito0.92.0 - Upgrade
sentry_sdkto1.15.0
Fixed¶
- Restore sentry integration in the LRS server
3.3.0 - 2023-02-03¶
Added¶
- Restore python 3.7+ support for library usage (models)
Changed¶
- Allow xAPI extra fields in
extensionsfields
3.2.1 - 2023-02-01¶
Changed¶
- Relax required Python version to
3.7+
3.2.0 - 2023-01-25¶
Added¶
- Add a new
authsubcommand to generate required credentials file for the LRS - Implement support for AWS S3 storage backend
- Add CLI
--versionoption
Changed¶
- Upgrade
fastapito0.89.1 - Upgrade
httpxto0.23.3 - Upgrade
sentry_sdkto1.14.0 - Upgrade
uvicornto0.20.0 - Tray: add the
ca_certspath for the ES backend client option (LRS) - Improve Sentry integration for the LRS
- Update handbook link to
https://handbook.openfun.fr - Upgrade base python version to 3.11 for the development stack and Docker image
Fixed¶
- Restore ES and Mongo backends ability to use client options
3.1.0 - 2022-11-17¶
Added¶
- EdX to xAPI converters for video events
Changed¶
- Improve Ralph’s library integration by unpinning dependencies (and prefer ranges)
- Upgrade
fastapito0.87.0
Removed¶
- ModelRules constraint
3.0.0 - 2022-10-19¶
Added¶
- Implement edX video browser events pydantic models
- Create a
postendpoint for statements implementing the LRS spec - Implement support for the MongoDB database backend
- Implement support for custom queries when using database backends
getmethod (used in thefetchcommand) - Add dotenv configuration file support and
python-dotenvdependency - Add
hostandportoptions for therunservercli command - Add support for database selection when running the Ralph LRS server
- Implement support for xAPI statement forwarding
- Add database backends
statuschecking - Add
healthLRS router - Tray: add LRS server support
Changed¶
- Migrate to
python-legacyhandler formkdocstringspackage - Upgrade
clickto8.1.3 - Upgrade
elasticsearchto8.3.3 - Upgrade
fastapito0.79.1 - Upgrade
ovhto1.0.0 - Upgrade
pydanticto1.9.2 - Upgrade
pymongoto4.2.0 - Upgrade
python-keystoneclientto5.0.0 - Upgrade
python-swiftclientto4.0.1 - Upgrade
requeststo2.28.1 - Upgrade
sentry_sdkto1.9.5 - Upgrade
uvicornto0.18.2 - Upgrade
websocketsto10.3 - Make backends yield results instead of writing to standard streams (BC)
- Use pydantic settings management instead of global variables in defaults.py
- Rename backend and parser parameter environment variables (BC)
- Make project dependencies management more modular for library usage
Removed¶
- Remove YAML configuration file support and
pyyamldependency (BC)
Fixed¶
- Tray: do not create a cronjobs list when no cronjob has been defined
- Restore history mixin logger
2.1.0 - 2022-04-13¶
Added¶
- Implement edX problem interaction events pydantic models
- Implement edX textbook interaction events pydantic models
wswebsocket stream backend (compatible with thefetchcommand)- bundle
jq,curlandwgetin thefundocker/ralphDocker image - Tray: enable ralph app deployment command configuration
- Add a
runservercommand with basic auth and aWhoamiroute - Create a
getendpoint for statements implementing the LRS spec - Add optional fields to BaseXapiModel
Changed¶
- Upgrade
uvicornto0.17.4 - Upgrade
elasticsearchto7.17.0 - Upgrade
sentry_sdkto1.5.5 - Upgrade
fastapito0.73.0 - Upgrade
pyparsingto3.0.7 - Upgrade
pydanticto1.9.0 - Upgrade
python-keystoneclientto4.4.0 - Upgrade
python-swiftclientto3.13.0 - Upgrade
pyyamlto6.0 - Upgrade
requeststo2.27.1 - Upgrade
websocketsto10.1
2.0.1 - 2021-07-15¶
Changed¶
- Upgrade
elasticsearchto7.13.3
Fixed¶
- Restore elasticsearch backend datastream compatibility for bulk operations
2.0.0 - 2021-07-09¶
Added¶
- xAPI video
interactedpydantic models - xAPI video
terminatedpydantic models - xAPI video
completedpydantic models - xAPI video
seekedpydantic models - xAPI video
initializedpydantic models - xAPI video
pausedpydantic models convertcommand to transform edX events to xAPI format- EdX to xAPI converters for page
viewedandpage_closeevents - Implement core event format converter
- xAPI video
playedpydantic models - xAPI page
viewedand pageterminatedpydantic models - Implement edX navigational events pydantic models
- Implement edX enrollment events pydantic models
- Install security updates in project Docker images
- Model selector to retrieve associated pydantic model of a given event
validatecommand to lint edX events using pydantic models- Support all available bulk operation types for the elasticsearch backend
(create, index, update, delete) using the
--es-op-typeoption
Changed¶
- Upgrade
elasticsearchto7.13.2 - Upgrade
python-swiftclientto3.12.0 - Upgrade
clickto8.0.1 - Upgrade
click-option-groupto0.5.3 - Upgrade
pydanticto1.8.2 - Upgrade
sentry_sdkto1.1.0 - Rename edX models
- Migrate model tests from factories to hypothesis strategies
- Tray: switch from openshift to k8s (BC)
- Tray: remove useless deployment probes
Fixed¶
- Tray: remove
versionimmutable field in DC selector
1.2.0 - 2021-02-26¶
Added¶
- edX server event pydantic model and factory
- edX page_close browser event pydantic model and factory
- Tray: allow to specify a self-generated elasticsearch cluster CA certificate
Fixed¶
- Tray: add missing Swift variables in the secret
- Tray: fix pods anti-affinity selector
Removed¶
pandasis no longer required
1.1.0 - 2021-02-04¶
Added¶
- Support for Swift storage backend
- Use the
pushcommand--ignore-errorsoption to ignore ES bulk import errors - The elasticsearch backend now accepts passing all supported client options
Changed¶
- Upgrade
pyyamlto5.4.1 - Upgrade
pandasto1.2.1
Removed¶
click_logis no longer required as we are able to configure logging
1.0.0 - 2021-01-13¶
Added¶
- Implement base CLI commands (list, extract, fetch & push) for supported backends
- Support for ElasticSearch database backend
- Support for LDP storage backend
- Support for FS storage backend
- Parse (gzipped) tracking logs in GELF format
- Support for application’s configuration file
- Add optional sentry integration
- Distribute Arnold’s tray to deploy Ralph in a k8s cluster as cronjobs