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.
- Fix type of
statement.result.score.scaled
fromint
toDecimal
5.0.1 - 2024-07-11
- Force Elasticsearch REFRESH_AFTER_WRITE setting to be a string
- Fix LaxStatement validation to prevent statements IDs modification
5.0.0 - 2024-05-02
- Models: Add Webinar xAPI activity type
- Upgrade
pydantic
to2.7.0
- Migrate model tests from hypothesis strategies to polyfactory
- Replace soon-to-be deprecated
parse_obj_as
withTypeAdapter
4.2.0 - 2024-04-08
- 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.data
andralph.backends.lrs
entry points to discover backends from plugins.
- Backends: the first argument of the
get_backends
method now requires a list ofEntryPoints
, each pointing to a backend class, instead of a tuple of packages containing backends. - API: The
RUNSERVER_BACKEND
configuration value is no longer validated to point to an existing backend.
- LRS: Fix querying on
activity
when LRS contains statements with an object lacking aobjectType
attribute
4.1.0 - 2024-02-12
- Add LRS multitenancy support for user-specific target storage
query_statements
andquery_statements_by_ids
methods can now take an optional user-specific target
- Backends: switch LRSStatementsQuery since/until field types to iso 8601 string
- Removed
event_table_name
attribute of the ClickHouse data backend
4.0.0 - 2024-01-23
- Backends: Add
Writable
andListable
interfaces to distinguish supported functionalities amongdata
backends - Backends: Add
max_statements
option to data backendsread
method - Backends: Add
prefetch
option to async data backendsread
method - Backends: Add
concurrency
option to async data backendswrite
method - Backends: Add
get_backends
function to automatically discover backends for CLI and LRS usage - Backends: Add client options for WSDataBackend
- Backends: Add
READ_CHUNK_SIZE
andWRITE_CHUNK_SIZE
data backend settings - Models: Implement Pydantic model for LRS Statements resource query parameters
- Models: Implement xAPI LMS Profile statements validation
- Models: Add
EdX
toxAPI
converters for enrollment events - Project: Add aliases for
ralph-malph
extra dependencies:backends
andfull
- Arnold: Add variable to override PVC name in arnold deployment
- API:
GET /statements
now 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
,stored
andauthority
- API: Add
RALPH_LRS_RESTRICT_BY_AUTHORITY
option making?mine=True
implicit - API: Add
RALPH_LRS_RESTRICT_BY_SCOPE
option enabling endpoint access control by user scopes - API: Enhance 'limit' query parameter's validation
- API: Variable
RUNSERVER_AUTH_BACKEND
becomesRUNSERVER_AUTH_BACKENDS
, and multiple authentication methods are supported simultaneously - Backends: Refactor LRS Statements resource query parameters defined for
ralph
API - Backends: Refactor
database
,storage
,http
andstream
backends under the unifieddata
backend interface [BC] - Backends: Refactor LRS
query_statements
andquery_statements_by_ids
backends methods under the unifiedlrs
backend interface [BC] - Backends: Update
statementId
andvoidedStatementId
to 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
push
towrite
andfetch
toread
[BC] - CLI: Change
-c --chunk-size
option to-s --chunk-size
[BC] - CLI: Change websocket backend name
-b ws
to-b async_ws
along with it's uri option--ws-uri
to--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.category
field 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
bcrypt
to4.1.2
- Upgrade
cachetools
to5.3.2
- Upgrade
fastapi
to0.108.0
- Upgrade
sentry_sdk
to1.39.1
- Upgrade
uvicorn
to0.25.0
- API: Fix a typo ('attachements' -> 'attachments') to ensure compliance with the LRS specification and prevent potential silent bugs
- Project: Drop support for Python 3.7
- Models: Remove
school
,course
,module
context extensions in Edx to xAPI base converter - Models: Remove
name
field inVideoActivity
xAPI model mistakenly used invideo
profile - CLI: Remove
DEFAULT_BACKEND_CHUNK_SIZE
environment variable configuration
3.9.0 - 2023-07-21
- Upgrade
fastapi
to0.100.0
- Upgrade
sentry_sdk
to1.28.1
- Upgrade
uvicorn
to0.23.0
- Enforce valid IRI for
activity
parameter inGET /statements
- Change how duplicate xAPI statements are handled for
clickhouse
backend
3.8.0 - 2023-06-21
- Implement edX open response assessment events pydantic models
- Implement edx peer instruction events pydantic models
- Implement xAPI VideoDownloaded pydantic model
(using xAPI TinCan
downloaded
verb)
- Allow to use a query for HTTP backends in the CLI
3.7.0 - 2023-06-13
- Implement asynchronous
async_lrs
backend - Implement synchronous
lrs
backend - 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
- Clean xAPI pydantic models naming convention
- Upgrade
fastapi
to0.97.0
- Upgrade
sentry_sdk
to1.25.1
- Set Clickhouse
client_options
to a dedicated pydantic model - Upgrade
httpx
to0.24.1
- Force a valid (JSON-formatted) IFI to be passed for the
/statements
GET queryagent
filtering - Upgrade
cachetools
to5.3.1
verb
.display
field no longer mandatory in xAPI models and for converter
3.6.0 - 2023-05-17
- Allow to ignore health check routes for Sentry transactions
- Upgrade
sentry_sdk
to1.22.2
- Upgrade
uvicorn
to0.22.0
- LRS
/statements
GET
method 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
- Fix the
more
IRL building in LRS/statements
GET requests
3.5.1 - 2023-04-18
- Upgrade
httpx
to0.24.0
- Upgrade
fastapi
to0.95.1
- Upgrade
sentry_sdk
to1.19.1
- Upgrade
uvicorn
to0.21.1
- 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
- Implement PUT verb on statements endpoint
- Add ClickHouse database backend support
- Make trailing slashes optional on statements endpoint
- Upgrade
sentry_sdk
to1.16.0
3.4.0 - 2023-03-01
- Upgrade
fastapi
to0.92.0
- Upgrade
sentry_sdk
to1.15.0
- Restore sentry integration in the LRS server
3.3.0 - 2023-02-03
- Restore python 3.7+ support for library usage (models)
- Allow xAPI extra fields in
extensions
fields
3.2.1 - 2023-02-01
- Relax required Python version to
3.7
+
3.2.0 - 2023-01-25
- Add a new
auth
subcommand to generate required credentials file for the LRS - Implement support for AWS S3 storage backend
- Add CLI
--version
option
- Upgrade
fastapi
to0.89.1
- Upgrade
httpx
to0.23.3
- Upgrade
sentry_sdk
to1.14.0
- Upgrade
uvicorn
to0.20.0
- Tray: add the
ca_certs
path 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
- Restore ES and Mongo backends ability to use client options
3.1.0 - 2022-11-17
- EdX to xAPI converters for video events
- Improve Ralph's library integration by unpinning dependencies (and prefer ranges)
- Upgrade
fastapi
to0.87.0
- ModelRules constraint
3.0.0 - 2022-10-19
- Implement edX video browser events pydantic models
- Create a
post
endpoint for statements implementing the LRS spec - Implement support for the MongoDB database backend
- Implement support for custom queries when using database backends
get
method (used in thefetch
command) - Add dotenv configuration file support and
python-dotenv
dependency - Add
host
andport
options for therunserver
cli command - Add support for database selection when running the Ralph LRS server
- Implement support for xAPI statement forwarding
- Add database backends
status
checking - Add
health
LRS router - Tray: add LRS server support
- Migrate to
python-legacy
handler formkdocstrings
package - Upgrade
click
to8.1.3
- Upgrade
elasticsearch
to8.3.3
- Upgrade
fastapi
to0.79.1
- Upgrade
ovh
to1.0.0
- Upgrade
pydantic
to1.9.2
- Upgrade
pymongo
to4.2.0
- Upgrade
python-keystoneclient
to5.0.0
- Upgrade
python-swiftclient
to4.0.1
- Upgrade
requests
to2.28.1
- Upgrade
sentry_sdk
to1.9.5
- Upgrade
uvicorn
to0.18.2
- Upgrade
websockets
to10.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
- Remove YAML configuration file support and
pyyaml
dependency (BC)
- Tray: do not create a cronjobs list when no cronjob has been defined
- Restore history mixin logger
2.1.0 - 2022-04-13
- Implement edX problem interaction events pydantic models
- Implement edX textbook interaction events pydantic models
ws
websocket stream backend (compatible with thefetch
command)- bundle
jq
,curl
andwget
in thefundocker/ralph
Docker image - Tray: enable ralph app deployment command configuration
- Add a
runserver
command with basic auth and aWhoami
route - Create a
get
endpoint for statements implementing the LRS spec - Add optional fields to BaseXapiModel
- Upgrade
uvicorn
to0.17.4
- Upgrade
elasticsearch
to7.17.0
- Upgrade
sentry_sdk
to1.5.5
- Upgrade
fastapi
to0.73.0
- Upgrade
pyparsing
to3.0.7
- Upgrade
pydantic
to1.9.0
- Upgrade
python-keystoneclient
to4.4.0
- Upgrade
python-swiftclient
to3.13.0
- Upgrade
pyyaml
to6.0
- Upgrade
requests
to2.27.1
- Upgrade
websockets
to10.1
2.0.1 - 2021-07-15
- Upgrade
elasticsearch
to7.13.3
- Restore elasticsearch backend datastream compatibility for bulk operations
2.0.0 - 2021-07-09
- xAPI video
interacted
pydantic models - xAPI video
terminated
pydantic models - xAPI video
completed
pydantic models - xAPI video
seeked
pydantic models - xAPI video
initialized
pydantic models - xAPI video
paused
pydantic models convert
command to transform edX events to xAPI format- EdX to xAPI converters for page
viewed
andpage_close
events - Implement core event format converter
- xAPI video
played
pydantic models - xAPI page
viewed
and pageterminated
pydantic 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
validate
command 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-type
option
- Upgrade
elasticsearch
to7.13.2
- Upgrade
python-swiftclient
to3.12.0
- Upgrade
click
to8.0.1
- Upgrade
click-option-group
to0.5.3
- Upgrade
pydantic
to1.8.2
- Upgrade
sentry_sdk
to1.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
- Tray: remove
version
immutable field in DC selector
1.2.0 - 2021-02-26
- 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
- Tray: add missing Swift variables in the secret
- Tray: fix pods anti-affinity selector
pandas
is no longer required
1.1.0 - 2021-02-04
- Support for Swift storage backend
- Use the
push
command--ignore-errors
option to ignore ES bulk import errors - The elasticsearch backend now accepts passing all supported client options
- Upgrade
pyyaml
to5.4.1
- Upgrade
pandas
to1.2.1
click_log
is no longer required as we are able to configure logging
1.0.0 - 2021-01-13
- 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