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_statementsand- query_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 the- fetchcommand)
- 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