* INCR-239: Run python-modernize and isort on openedx/core/djangoapps/programs [tests, tasks]
* INCR-239: Grouped six package and represent unused variables with _
Allow our utility function to filter out course certs when asking
Credentials for a list of certificates. This way once we start
handing back course certs, the LMS won't be surprised by
assumptions about what the credentials service will give back.
The client-specific JWT doesn't really make any sense and only causes issues due to needing to configure both. This change updates LMS to use the standard issuer.
LEARNER-3441
This includes a representation of the user's progress towards completing each course in the program and a list of any relevant course and/or program certificates the user has earned.
ECOM-7386
This commit contains back end changes necessary to load programs from the catalog in all contexts. The existing program munging utility is applied as late as possible to avoid conflating this work with changes to the front end; those will be made separately.
ECOM-4422
These changes unify four different approaches to JWT creation, moving the core of the AccessTokenView to a general-purpose JwtBuilder class. This utility class defaults to using the system's JWT configuration, but it will allow overriding of the signing key and audience claim to support those clients which still require this. Part of ECOM-4566.
These changes improve the performance of the LMS' program certification task. They also reduce strain on the programs service, especially when attempting to award program certificates to large numbers of students. ECOM-4490.
Log a message at the info level when the task is called for a user with no completed programs, and another when the task is called for a user who is not eligible for any new program certificates. Part of ECOM-3924.
Available backends:
* django-oauth-toolkit (DOT)
* django-oauth2-provider (DOP)
* Use provided client ID to select backend for
* AccessToken requests
* third party auth-token exchange
* Create adapters to isolate library-dependent functionality
* Handle django-oauth-toolkit tokens in edX DRF authenticator class
MA-1998
MA-2000