Current collected state Current
Observed since 20 Oct, 15:27 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
Client for interacting with the enterprise-subsidy service.
2u-enterprise-subsidy-client
#############################
|pypi-badge| |ci-badge| |codecov-badge| |doc-badge| |pyversions-badge|
|license-badge| |status-badge|
Purpose
*******
Client for interacting with the enterprise-subsidy service.
Getting Started
***************
Developing
==========
One Time Setup
--------------
.. code-block::
# Clone the repository into your ``[DEVSTACK]/src/`` folder
git clone git@github.com:edx/2u-enterprise-subsidy-client.git
# Use a service container that would reasonably install this client, e.g.
cd [DEVSTACK]/enterprise-subsidy && make app-shell
cd /edx/src/2u-enterprise-subsidy-client
# Set up a virtualenv in a ``venv/`` directory
# You might need to install virtualenv first:
# apt-get update
# apt-get install -y virtualenv
virtualenv venv/
make requirements
# Ensure things are looking ok by running tests
make test
Every time you develop something in this repo
---------------------------------------------
.. code-block::
# Grab the latest code
git checkout main
git pull
# Use a service container that would reasonably install this client, e.g.
cd [DEVSTACK]/enterprise-subsidy && make app-shell
cd /edx/src/2u-enterprise-subsidy-client
# Activate the virtualenv
source venv/bin/activate
# Install/update the dev requirements
make requirements
# Run the tests and quality checks (to verify the status before you make any changes)
make validate
# Make a new branch for your changes
git checkout -b <your_github_username>/<short_description>
# Using your favorite editor, edit the code to make your change.
# Run your new tests
pytest ./path/to/new/tests
# Run all the tests and quality checks
make validate
# Commit all your changes
git commit ...
git push
# Open a PR and ask for review.
License
*******
The code in this repository is licensed under the AGPL 3.0 unless
otherwise noted.
Please see `LICENSE.txt <LICENSE.txt>`_ for details.
Contributing
************
Contributions are very welcome.
Please read `How To Contribute <https://edx.org/r/how-to-contribute>`_ for details.
This project is currently accepting all types of contributions, bug fixes,
security fixes, maintenance work, or new features. However, please make sure
to have a discussion about your new feature idea with the maintainers prior to
beginning development to maximize the chances of your change being accepted.
You can start a conversation by creating a new issue on this repo summarizing
your idea.
The Open edX Code of Conduct
****************************
All community members are expected to follow the `Open edX Code of Conduct`_.
.. _Open edX Code of Conduct: https://edx.org/code-of-conduct/
Reporting Security Issues
*************************
Please do not report security issues in public. Please email security@openedx.org.
.. |pypi-badge| image:: https://img.shields.io/pypi/v/2u-enterprise-subsidy-client.svg
:target: https://pypi.python.org/pypi/2u-enterprise-subsidy-client/
:alt: PyPI
.. |ci-badge| image:: https://github.com/edx/2u-enterprise-subsidy-client/workflows/Python%20CI/badge.svg?branch=main
:target: https://github.com/edx/2u-enterprise-subsidy-client/actions
:alt: CI
.. |codecov-badge| image:: https://codecov.io/github/edx/2u-enterprise-subsidy-client/coverage.svg?branch=main
:target: https://codecov.io/github/edx/2u-enterprise-subsidy-client?branch=main
:alt: Codecov
.. |doc-badge| image:: https://readthedocs.org/projects/2u-enterprise-subsidy-client/badge/?version=latest
:target: https://2u-enterprise-subsidy-client.readthedocs.io/en/latest/
:alt: Documentation
.. |pyversions-badge| image:: https://img.shields.io/pypi/pyversions/2u-enterprise-subsidy-client.svg
:target: https://pypi.python.org/pypi/2u-enterprise-subsidy-client/
:alt: Supported Python versions
.. |license-badge| image:: https://img.shields.io/github/license/edx/2u-enterprise-subsidy-client.svg
:target: https://github.com/edx/2u-enterprise-subsidy-client/blob/main/LICENSE.txt
:alt: License
.. TODO: Choose one of the statuses below and remove the other status-badge lines.
.. |status-badge| image:: https://img.shields.io/badge/Status-Experimental-yellow
.. .. |status-badge| image:: https://img.shields.io/badge/Status-Maintained-brightgreen
.. .. |status-badge| image:: https://img.shields.io/badge/Status-Deprecated-orange
.. .. |status-badge| image:: https://img.shields.io/badge/Status-Unsupported-red
Change Log
##########
..
All enhancements and patches to edx_enterprise_subsidy_client will be documented
in this file. It adheres to the structure of https://keepachangelog.com/ ,
but in reStructuredText instead of Markdown (for ease of incorporation into
Sphinx documentation and the PyPI description).
This project adheres to Semantic Versioning (https://semver.org/).
.. There should always be an "Unreleased" section for changes pending release.
Unreleased
**********
[2.2.0]
********
* chore: Update Python Requirements
[2.1.0]
*******
* chore: Update Python Requirements, notably Django 5
[2.0.19]
********
* chore: Update Python Requirements
[2.0.18]
********
* chore: Update Python Requirements
[2.0.17]
********
* chore: Update Python Requirements
[2.0.16]
********
* chore: Update Python Requirements
[2.0.15]
********
* chore: Update Python Requirements
[2.0.14]
********
* chore: Update Python Requirements
[2.0.13]
********
* chore: Update Python Requirements
[2.0.12]
********
* chore: Update Python Requirements
[2.0.11]
********
* chore: Update Python Requirements
[2.0.10]
********
* chore: Update Python Requirements
[2.0.9]
*******
* chore: Update Python Requirements
[2.0.8]
*******
* chore: Update Python Requirements
[2.0.7]
*******
* chore: Update Python Requirements
[2.0.6]
*******
* chore: Update Python Requirements
[2.0.5]
*******
* chore: Update Python Requirements
[2.0.4]
*******
* chore: Update Python Requirements
[2.0.3]
*******
* chore: Update Python Requirements
[2.0.2]
*******
* chore: Update Python Requirements
[2.0.1]
*******
* chore: Update Python Requirements
[2.0.0]
*******
* feat: Update package version from 1.0.0 to 2.0.0
* chore: Update Python Requirements
* chore: Update upgrade-python-requirements to 3.12
[1.0.0]
*******
* fix: Remove Python 3.8 Support
* chore: Update Python Requirements
* chore: Update pylintrc
[0.4.6]
*******
* fix: Update the name of reviewers team in github flow
[0.4.5]
*******
* fix: create_subsidy_deposit - metadata is optional (ENT-9133)
[0.4.4]
*******
* feat: add support for deposit creation (ENT-9133)
[0.4.3]
*******
* feat: adding new subsidy client method to fetch subsidy aggregate data
[0.4.2]
*******
* Switch from ``edx-sphinx-theme`` to ``sphinx-book-theme`` since the former is
deprecated
* Add python 3.12 support
[0.4.1]
*******
* chore: add a unit test for ``create_subsidy_transaction()``.
[0.4.0]
*******
* feat: allow requested prices for v2 transaction creation.
[0.3.7]
*******
* feat: upgrade many python dependencies, notably Django 3.2.19
[0.3.6]
*******
* feat: pass idempotency key during transaction creation (pt. 2)
[0.3.5]
*******
* feat: pass idempotency key during transaction creation
[0.3.3]
*******
* allow additional query params, like ``page_size``, to be passed through to listing endpoints.
[0.3.3]
*******
* admin-list transactions will also be filtered by ``created`` state by default.
* Adds an ADR explaining the default states for which this client filters transactions.
[0.3.2]
*******
* admin-list transactions will ask to be filtered for only `committed` and `pending` states by default.
Caller may specify other valid states (e.g. `failed` or `created`).
[0.3.1]
*******
* fix: correctly pass ``subsidy_uuid`` to subsidy API V2 endpoint string format.
[0.3.0]
*******
* feat: add new client for v2 transaction endpoint.
[0.2.6]
*******
* feat: transaction endpoint accepts `lms_user_id` instead of `learner_id`
[0.2.5]
*******
* feat: redemption metadata.
[0.2.4]
*******
* fix: don't directly access a status code on a failed response for logging.
[0.2.3]
*******
* DON'T be flexible about settings variable names for client initialization.
[0.2.2]
*******
* str() incoming UUID arguments
[0.2.1]
*******
* Be flexible about settings variable names for client initialization.
[0.2.0]
*******
* Add implementation for many of the client methods; currently defering on unit tests.
* Add a ``scripts/e2e.py`` script for end-to-end testing between enterprise-subsidy and edx-enterprise.
[0.1.0] - 2023-02-01
********************
Added
=====
* First release on PyPI.
pypistats · 80 observations shown. Missing days are unknown. Source category: overall: without mirrors.
| Date / source period | Value | Observed at |
|---|---|---|
| 2026-10-19 – 2026-10-19 | 19 | 2026-10-20T18:47:51.3739308Z |
| 2026-10-16 – 2026-10-16 | 6 | 2026-10-20T18:47:51.3739308Z |
| 2026-10-15 – 2026-10-15 | 9 | 2026-10-20T18:47:51.3739308Z |
| 2026-10-14 – 2026-10-14 | 27 | 2026-10-20T18:47:51.3739308Z |
| 2026-10-13 – 2026-10-13 | 51 | 2026-10-20T18:47:51.3739308Z |
| 2026-10-12 – 2026-10-12 | 17 | 2026-10-20T18:47:51.3739308Z |
| 2026-10-10 – 2026-10-10 | 1 | 2026-10-20T18:47:51.3739308Z |
| 2026-10-09 – 2026-10-09 | 56 | 2026-10-20T18:47:51.3739308Z |
| 2026-10-08 – 2026-10-08 | 40 | 2026-10-20T18:47:51.3739308Z |
| 2026-10-07 – 2026-10-07 | 60 | 2026-10-20T18:47:51.3739308Z |
| 2026-10-06 – 2026-10-06 | 18 | 2026-10-20T18:47:51.3739308Z |
| 2026-10-05 – 2026-10-05 | 42 | 2026-10-20T18:47:51.3739308Z |
| 2026-10-03 – 2026-10-03 | 6 | 2026-10-20T18:47:51.3739308Z |
| 2026-10-02 – 2026-10-02 | 16 | 2026-10-20T18:47:51.3739308Z |
| 2026-10-01 – 2026-10-01 | 32 | 2026-10-20T18:47:51.3739308Z |
| 2026-09-30 – 2026-09-30 | 11 | 2026-10-20T18:47:51.3739308Z |
| 2026-09-29 – 2026-09-29 | 23 | 2026-10-20T18:47:51.3739308Z |
| 2026-09-28 – 2026-09-28 | 22 | 2026-10-20T18:47:51.3739308Z |
| 2026-09-27 – 2026-09-27 | 6 | 2026-10-20T18:47:51.3739308Z |
| 2026-09-26 – 2026-09-26 | 1 | 2026-10-20T18:47:51.3739308Z |
| 2026-09-25 – 2026-09-25 | 20 | 2026-10-20T18:47:51.3739308Z |
| 2026-09-24 – 2026-09-24 | 18 | 2026-10-20T18:47:51.3739308Z |
| 2026-09-23 – 2026-09-23 | 11 | 2026-10-20T18:47:51.3739308Z |
| 2026-09-22 – 2026-09-22 | 12 | 2026-10-20T18:47:51.3739308Z |
| 2026-09-21 – 2026-09-21 | 34 | 2026-10-20T18:47:51.3739308Z |
| 2026-09-20 – 2026-09-20 | 4 | 2026-10-20T18:47:51.3739308Z |
| 2026-09-18 – 2026-09-18 | 28 | 2026-10-20T18:47:51.3739308Z |
| 2026-09-17 – 2026-09-17 | 8 | 2026-10-20T18:47:51.3739308Z |
| 2026-09-16 – 2026-09-16 | 3 | 2026-10-20T18:47:51.3739308Z |
| 2026-09-15 – 2026-09-15 | 2 | 2026-10-20T18:47:51.3739308Z |
| 2026-09-14 – 2026-09-14 | 12 | 2026-10-20T18:47:51.3739308Z |
| 2026-09-12 – 2026-09-12 | 5 | 2026-10-20T18:47:51.3739308Z |
| 2026-09-11 – 2026-09-11 | 38 | 2026-10-20T18:47:51.3739308Z |
| 2026-09-10 – 2026-09-10 | 19 | 2026-10-20T18:47:51.3739308Z |
| 2026-09-09 – 2026-09-09 | 19 | 2026-10-20T18:47:51.3739308Z |
| 2026-09-08 – 2026-09-08 | 2 | 2026-10-20T18:47:51.3739308Z |
| 2026-09-07 – 2026-09-07 | 8 | 2026-10-20T18:47:51.3739308Z |
| 2026-09-05 – 2026-09-05 | 2 | 2026-10-20T18:47:51.3739308Z |
| 2026-09-04 – 2026-09-04 | 6 | 2026-10-20T18:47:51.3739308Z |
| 2026-09-03 – 2026-09-03 | 3 | 2026-10-20T18:47:51.3739308Z |
| 2026-09-02 – 2026-09-02 | 2 | 2026-10-20T18:47:51.3739308Z |
| 2026-09-01 – 2026-09-01 | 19 | 2026-10-20T18:47:51.3739308Z |
| 2026-08-31 – 2026-08-31 | 23 | 2026-10-20T18:47:51.3739308Z |
| 2026-08-28 – 2026-08-28 | 20 | 2026-10-20T18:47:51.3739308Z |
| 2026-08-27 – 2026-08-27 | 24 | 2026-10-20T18:47:51.3739308Z |
| 2026-08-26 – 2026-08-26 | 25 | 2026-10-20T18:47:51.3739308Z |
| 2026-08-25 – 2026-08-25 | 11 | 2026-10-20T18:47:51.3739308Z |
| 2026-08-24 – 2026-08-24 | 33 | 2026-10-20T18:47:51.3739308Z |
| 2026-08-23 – 2026-08-23 | 7 | 2026-10-20T18:47:51.3739308Z |
| 2026-08-22 – 2026-08-22 | 2 | 2026-10-20T18:47:51.3739308Z |
| 2026-08-21 – 2026-08-21 | 22 | 2026-10-20T18:47:51.3739308Z |
| 2026-08-20 – 2026-08-20 | 27 | 2026-10-20T18:47:51.3739308Z |
| 2026-08-19 – 2026-08-19 | 6 | 2026-10-20T18:47:51.3739308Z |
| 2026-08-18 – 2026-08-18 | 66 | 2026-10-20T18:47:51.3739308Z |
| 2026-08-17 – 2026-08-17 | 36 | 2026-10-20T18:47:51.3739308Z |
| 2026-08-16 – 2026-08-16 | 7 | 2026-10-20T18:47:51.3739308Z |
| 2026-08-15 – 2026-08-15 | 1 | 2026-10-20T18:47:51.3739308Z |
| 2026-08-14 – 2026-08-14 | 39 | 2026-10-20T18:47:51.3739308Z |
| 2026-08-13 – 2026-08-13 | 10 | 2026-10-20T18:47:51.3739308Z |
| 2026-08-12 – 2026-08-12 | 16 | 2026-10-20T18:47:51.3739308Z |
| 2026-08-11 – 2026-08-11 | 36 | 2026-10-20T18:47:51.3739308Z |
| 2026-08-10 – 2026-08-10 | 59 | 2026-10-20T18:47:51.3739308Z |
| 2026-08-09 – 2026-08-09 | 2 | 2026-10-20T18:47:51.3739308Z |
| 2026-08-07 – 2026-08-07 | 24 | 2026-10-20T18:47:51.3739308Z |
| 2026-08-06 – 2026-08-06 | 7 | 2026-10-20T18:47:51.3739308Z |
| 2026-08-05 – 2026-08-05 | 45 | 2026-10-20T18:47:51.3739308Z |
| 2026-08-04 – 2026-08-04 | 11 | 2026-10-20T18:47:51.3739308Z |
| 2026-08-03 – 2026-08-03 | 24 | 2026-10-20T18:47:51.3739308Z |
| 2026-08-02 – 2026-08-02 | 1 | 2026-10-20T18:47:51.3739308Z |
| 2026-08-01 – 2026-08-01 | 1 | 2026-10-20T18:47:51.3739308Z |
| 2026-07-31 – 2026-07-31 | 36 | 2026-10-20T18:47:51.3739308Z |
| 2026-07-30 – 2026-07-30 | 36 | 2026-10-20T18:47:51.3739308Z |
| 2026-07-29 – 2026-07-29 | 43 | 2026-10-20T18:47:51.3739308Z |
| 2026-07-28 – 2026-07-28 | 42 | 2026-10-20T18:47:51.3739308Z |
| 2026-07-27 – 2026-07-27 | 32 | 2026-10-20T18:47:51.3739308Z |
| 2026-07-26 – 2026-07-26 | 1 | 2026-10-20T18:47:51.3739308Z |
| 2026-07-25 – 2026-07-25 | 8 | 2026-10-20T18:47:51.3739308Z |
| 2026-07-24 – 2026-07-24 | 17 | 2026-10-20T18:47:51.3739308Z |
| 2026-07-23 – 2026-07-23 | 61 | 2026-10-20T18:47:51.3739308Z |
| 2026-07-22 – 2026-07-22 | 90 | 2026-10-20T18:47:51.3739308Z |
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 2.2.1 | 27 Feb 2026 | 1 |
This describes our collected data; it is not a security assessment.
Shared repository data · GitHub
Observed since 20 Oct, 15:27 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:1f92e0ee3f5e63f624b9e1576f494f0216aba31044bfd35e81e53fae55410669