edx-completion


Nameedx-completion JSON
Version 4.6.0 PyPI version JSON
download
home_pagehttps://github.com/openedx/completion
SummaryA library for tracking completion of blocks by learners in edX courses.
upload_time2024-04-16 15:41:14
maintainerNone
docs_urlNone
authoredX
requires_pythonNone
licenseAGPL 3.0
keywords django edx
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage
            completion
##########

|pypi-badge| |ci-badge| |codecov-badge| |doc-badge| |pyversions-badge|
|license-badge| |status-badge|

Purpose
*******

A library for tracking completion of blocks by learners in Open edX courses.

This repository provides a Django model `BlockCompletion` that is intended to be plugged into ``edx-platform``.  It
provides various handlers and services for the recording of completion data.  It also provides a DRF API for submitting
completion data in batches.

Enabling in the LMS
*******************

By default, the Open edX LMS does not use this library. To turn it on, go to http://your.lms.site/admin/waffle/switch/, and add a new switch with Name ``completion.enable_completion_tracking`` and Active selected.

See `Completion Tool <https://edx.readthedocs.io/projects/open-edx-building-and-running-a-course/en/latest/exercises_tools/completion.html>`_ in the Open edX documentation for details on what will happen once enabled.

Getting Started with Development
********************************

Please see the Open edX documentation for `guidance on Python development <https://docs.openedx.org/en/latest/developers/how-tos/get-ready-for-python-dev.html>`_ in this repo.

To install the ``completion`` app, run these commands from the `completion` root directory:

.. code:: bash

    pip install -e


To run the test suite:

.. code:: bash

    pip install tox
    tox # to run only a single environment, do e.g. tox -e py38-django42-drflatest


To use a Django shell to test commands:

.. code:: bash

    make install
    python manage.py migrate
    python manage.py shell
    >>> from completion.models import BlockCompletion
    >>> <other commands...>


Deploying
*********

Tagged versions of the completion library are released to pypi.org.

To use the latest release in your project, add the following to your pip requirements file:

.. code:: bash

    edx-completion

Getting Help
************

Documentation
=============

Start by going through `the documentation`_ (generated from `/docs </docs/index.rst>`_).  If you need more help see below.

.. _the documentation: https://docs.openedx.org/projects/completion

License
*******

The code in this repository is licensed under version 3 of the AGPL unless
otherwise noted.

Please see `LICENSE <LICENSE>`_ for details.

Contributing
************

Contributions are very welcome.
Please read `How To Contribute <https://openedx.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://openedx.org/code-of-conduct/

People
******

The assigned maintainers for this component and other project details may be
found in `Backstage`_. Backstage pulls this data from the ``catalog-info.yaml``
file in this repo.

.. _Backstage: https://backstage.openedx.org/catalog/default/component/completion

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/edx-completion.svg
    :target: https://pypi.python.org/pypi/edx-completion/
    :alt: PyPI

.. |ci-badge| image:: https://github.com/openedx/completion/actions/workflows/ci.yml/badge.svg?branch=master
    :target: https://github.com/openedx/completion/actions/workflows/ci.yml?branch=master
    :alt: CI

.. |codecov-badge| image:: http://codecov.io/github/edx/completion/coverage.svg?branch=master
    :target: http://codecov.io/github/edx/completion?branch=master
    :alt: Codecov

.. |doc-badge| image:: https://readthedocs.org/projects/completion/badge/?version=latest
    :target: https://docs.openedx.org/projects/completion
    :alt: Documentation

.. |pyversions-badge| image:: https://img.shields.io/pypi/pyversions/edx-completion.svg
    :target: https://pypi.python.org/pypi/edx-completion/
    :alt: Supported Python versions

.. |license-badge| image:: https://img.shields.io/github/license/edx/completion.svg
    :target: https://github.com/openedx/completion/blob/master/LICENSE.txt
    :alt: License

.. .. |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 completion will be documented
   in this file.  It adheres to the structure of http://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 (http://semver.org/).

.. There should always be an "Unreleased" section for changes pending release.

[4.6.0] - 2024-4-16
-------------------

* Add support for Python 3.11 and 3.12

[4.5.0] - 2024-3-19
--------------------
* Added ``clear_learning_context_completion`` to enable clearing a learner's
  completion for a course

[4.4.1] - 2023-10-27
--------------------
* Fix RemovedInDjango41Warning by removing `django_app_config`

[4.4.0] - 2023-10-20
--------------------
* Added tracking logs for completion events

[4.3.0]- 2023-07-26
------------------------------------------------
* Added support for Django 4.2

[4.2.1]- 2023-04-26
------------------------------------------------
* Support ``get_child_blocks`` along with ``get_child_descriptors``.
* Switch from ``edx-sphinx-theme`` to ``sphinx-book-theme`` since the former is
  deprecated

[4.1.0]- 2021-07-19
------------------------------------------------
* Add Django 3.0, 3.1 & 3.2 Support

[4.0.4]- 2021-02-04
------------------------------------------------
* Update ``get_key_to_last_completed_block`` to return ``full_block_key`` instead of ``block_key``

[4.0.2] - 2021-02-04
------------------------------------------------
* Future-proof usage of ``edx_toggles.toggles``


[4.0.1] - 2021-01-05
------------------------------------------------
* Replace reference to deprecated import path ``student.models``
  with ``common.djangoapps.student.models``.
* Updated the build status badge in README.rst to point to travis-ci.com instead of travis-ci.org


[4.0.0] - 2020-11-05
------------------------------------------------
* Remove soon-to-be-deprecated WaffleSwitchNamespace class instances
* BACKWARD INCOMPATIBLE: Removes ``waffle()``, which returned a (now deprecated) WaffleSwitchNamespace. This should only affect tests in edx-platform.
* Requires edx-toggles>=1.2.0, which introduces a new API to waffle objects.
* Refactors ``ENABLE_COMPLETION_TRACKING_SWITCH`` from a ``LegacyWaffleSwitch`` to the updated ``WaffleSwitch``.  We don't expect uses of this updated switch to require changes, unless there are surprise uses of deprecated methods from ``LegacyWaffleSwitch``.

[3.2.5] - 2020-10-23
------------------------------------------------
* Fix waffle switch override in tests by relying on newest edx_toggles API

[3.2.4] - 2020-07-21
------------------------------------------------
* Fix AttributeError raised by `vertical_is_complete`.
  * by ensuring `get_completable_children` doesn't return null

[3.2.3] - 2020-07-01
------------------------------------------------
* Updated the children lookup for `vertical_is_complete` to utilize the XBlockCompletion model. There are
  three completion modes to consider: EXCLUDED, AGGREGATOR, COMPLETABLE.

  * This method will now ignore any block with XBlockCompletion.EXCLUDED.
  * This method will now recurse down any child of a vertical if that child has XBlockCompletion.AGGREGATOR.
  * This method will consider all children blocks with XBlockCompletion.COMPLETABLE as candidates to
    determine if the vertical is complete.

[3.2.2] - 2020-06-30
------------------------------------------------
* Adding recursive lookup for children of a vertical to the `vertical_is_complete` method in services.py.

  * This was added because verticals containing children that had their own children were not being properly marked
    as complete. Since the vertical was only looking one layer deep, it was possible to have children lower in the tree
    incomplete, but the vertical would still be marked as complete. Now it looks at all leaves under the vertical.

[3.1.1] - 2020-02-24
------------------------------------------------
* Remove unnecessary constraint for edx-drf-extensions<3.0.0

[3.1.0] - 2020-02-18
------------------------------------------------
* Upgrades packages, drops support for Python 2.

[3.0.1] - 2019-10-22
------------------------------------------------
* Fix the package long description to be valid rST, check this in CI.

[3.0.0] - 2019-10-22
------------------------------------------------
* Support tracking completion of XBlocks in any "learning context", such as in
  a content library, and not just in courses. To keep the code clean, this has
  been done as a **breaking change** to the python API. (The API has been
  simplified so that it's generally only necessary to pass in a block key /
  usage key rather than block key + course key.) The REST API is unchanged.

[2.1.1] - 2019-10-21
------------------------------------------------
* Updated credentials for PyPI deployment via token.

[2.1.0] - 2019-10-18
------------------------------------------------
* Switch blocks_to_mark_complete_on_view() to return a list of XBlocks instead of a set.  Many XBlocks aren't hashable;
  the old implementation allowed subtle bugs under Python 2.7 but triggers an immediate error under 3.5.

[2.0.0] - 2019-04-23
------------------------------------------------
* Unpin django-rest-framework requirements. This is a potentially **breaking change** if people were
  relying on this package to ensure the correct version of djangorestframework was being installed.
* Remove the AUTHORS file and references to it.

[1.0.2] - 2019-03-11
------------------------------------------------

* Fix the 403 error occurring for completion-batch API for requests coming from the iOS devices

[1.0.0] - 2018-10-16
------------------------------------------------
* Updated edx-drf-extensions imports. Completion will no longer work with
  outdated versions of edx-drf-extensions.

[0.1.14] - 2018-10-04
------------------------------------------------
* Added submit_completion and submit_group_completion methods on
  CompletionService.

[0.1.7] - 2018-06-18
------------------------------------------------
* Added can_mark_block_complete_on_view() and blocks_to_mark_complete_on_view()
  methods on CompletionService and renamed get_completion_by_viewing_delay_ms()
  to get_complete_on_view_delay_ms().

[0.1.6] - 2018-04-13
------------------------------------------------
* Remove usage of deprecated CourseStructure api.

[0.1.5] - 2018-04-03
------------------------------------------------
* Delete enable_visual_progress methods and checks. Deprecate ENABLE_VISUAL_PROGRESS,
  ENABLE_COURSE_VISUAL_PROGRESS, and ENABLE_SITE_VISUAL_PROGRESS waffle flags

[0.1.4] - 2018-03-28
------------------------------------------------
* Site configurations must now explicitly disable visual progress for the
  enable_visual_progress() feature gating function to return False early.

[0.1.3] - 2018-03-26
------------------------------------------------
* Added some documentation.

[0.1.2] - 2018-03-23
------------------------------------------------
* Fix management of dependency versions

[0.1.1] - 2018-03-23
------------------------------------------------
* Fixes wildly inefficient raw query in BlockCompletion.latest_blocks_completed_all_courses()
* Updates freezegun version, makes tests that use it somewhat faster.

[0.1.0] - 2018-03-20
------------------------------------------------
* Fixes https://openedx.atlassian.net/browse/EDUCATOR-2540

[0.0.11] - 2018-03-20
------------------------------------------------
* Added "subsection-completion/{username}/{course_key}/{subsection_id}" API
  endpoint, to be used with the completion milestones experiment.

[0.0.9] - 2018-02-27
------------------------------------------------
* Added "utilities.py", which houses methods for working with BlockCompletion
  data.

[0.0.8] - 2018-03-01
------------------------------------------------
* Add model method for superlative “last completed block” - for site awareness
  include every last completed block by course, for later sorting in business
  layer.

[0.0.7] - 2018-02-15
------------------------------------------------
* Add settings and service method for determining completion-by-viewing delay.

[0.0.6] - 2018-02-13
------------------------------------------------
* Add the additional completion logic into the service and models from edx-platform

[0.0.2] - 2018-01-31
------------------------------------------------
* Fix up edx-lint requirements shenanigans.

[0.0.1] - 2018-01-31
------------------------------------------------
* Initial release

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/openedx/completion",
    "name": "edx-completion",
    "maintainer": null,
    "docs_url": null,
    "requires_python": null,
    "maintainer_email": null,
    "keywords": "Django edx",
    "author": "edX",
    "author_email": "oscm@edx.org",
    "download_url": "https://files.pythonhosted.org/packages/71/3c/b801dfaf76b3f98565fa87efb90d3b993c6619a9d4e818ec341075fc516a/edx_completion-4.6.0.tar.gz",
    "platform": null,
    "description": "completion\n##########\n\n|pypi-badge| |ci-badge| |codecov-badge| |doc-badge| |pyversions-badge|\n|license-badge| |status-badge|\n\nPurpose\n*******\n\nA library for tracking completion of blocks by learners in Open edX courses.\n\nThis repository provides a Django model `BlockCompletion` that is intended to be plugged into ``edx-platform``.  It\nprovides various handlers and services for the recording of completion data.  It also provides a DRF API for submitting\ncompletion data in batches.\n\nEnabling in the LMS\n*******************\n\nBy default, the Open edX LMS does not use this library. To turn it on, go to http://your.lms.site/admin/waffle/switch/, and add a new switch with Name ``completion.enable_completion_tracking`` and Active selected.\n\nSee `Completion Tool <https://edx.readthedocs.io/projects/open-edx-building-and-running-a-course/en/latest/exercises_tools/completion.html>`_ in the Open edX documentation for details on what will happen once enabled.\n\nGetting Started with Development\n********************************\n\nPlease see the Open edX documentation for `guidance on Python development <https://docs.openedx.org/en/latest/developers/how-tos/get-ready-for-python-dev.html>`_ in this repo.\n\nTo install the ``completion`` app, run these commands from the `completion` root directory:\n\n.. code:: bash\n\n    pip install -e\n\n\nTo run the test suite:\n\n.. code:: bash\n\n    pip install tox\n    tox # to run only a single environment, do e.g. tox -e py38-django42-drflatest\n\n\nTo use a Django shell to test commands:\n\n.. code:: bash\n\n    make install\n    python manage.py migrate\n    python manage.py shell\n    >>> from completion.models import BlockCompletion\n    >>> <other commands...>\n\n\nDeploying\n*********\n\nTagged versions of the completion library are released to pypi.org.\n\nTo use the latest release in your project, add the following to your pip requirements file:\n\n.. code:: bash\n\n    edx-completion\n\nGetting Help\n************\n\nDocumentation\n=============\n\nStart by going through `the documentation`_ (generated from `/docs </docs/index.rst>`_).  If you need more help see below.\n\n.. _the documentation: https://docs.openedx.org/projects/completion\n\nLicense\n*******\n\nThe code in this repository is licensed under version 3 of the AGPL unless\notherwise noted.\n\nPlease see `LICENSE <LICENSE>`_ for details.\n\nContributing\n************\n\nContributions are very welcome.\nPlease read `How To Contribute <https://openedx.org/r/how-to-contribute>`_ for details.\n\nThis project is currently accepting all types of contributions, bug fixes,\nsecurity fixes, maintenance work, or new features.  However, please make sure\nto have a discussion about your new feature idea with the maintainers prior to\nbeginning development to maximize the chances of your change being accepted.\nYou can start a conversation by creating a new issue on this repo summarizing\nyour idea.\n\nThe Open edX Code of Conduct\n****************************\n\nAll community members are expected to follow the `Open edX Code of Conduct`_.\n\n.. _Open edX Code of Conduct: https://openedx.org/code-of-conduct/\n\nPeople\n******\n\nThe assigned maintainers for this component and other project details may be\nfound in `Backstage`_. Backstage pulls this data from the ``catalog-info.yaml``\nfile in this repo.\n\n.. _Backstage: https://backstage.openedx.org/catalog/default/component/completion\n\nReporting Security Issues\n*************************\n\nPlease do not report security issues in public. Please email security@openedx.org.\n\n.. |pypi-badge| image:: https://img.shields.io/pypi/v/edx-completion.svg\n    :target: https://pypi.python.org/pypi/edx-completion/\n    :alt: PyPI\n\n.. |ci-badge| image:: https://github.com/openedx/completion/actions/workflows/ci.yml/badge.svg?branch=master\n    :target: https://github.com/openedx/completion/actions/workflows/ci.yml?branch=master\n    :alt: CI\n\n.. |codecov-badge| image:: http://codecov.io/github/edx/completion/coverage.svg?branch=master\n    :target: http://codecov.io/github/edx/completion?branch=master\n    :alt: Codecov\n\n.. |doc-badge| image:: https://readthedocs.org/projects/completion/badge/?version=latest\n    :target: https://docs.openedx.org/projects/completion\n    :alt: Documentation\n\n.. |pyversions-badge| image:: https://img.shields.io/pypi/pyversions/edx-completion.svg\n    :target: https://pypi.python.org/pypi/edx-completion/\n    :alt: Supported Python versions\n\n.. |license-badge| image:: https://img.shields.io/github/license/edx/completion.svg\n    :target: https://github.com/openedx/completion/blob/master/LICENSE.txt\n    :alt: License\n\n.. .. |status-badge| image:: https://img.shields.io/badge/Status-Experimental-yellow\n.. |status-badge| image:: https://img.shields.io/badge/Status-Maintained-brightgreen\n.. .. |status-badge| image:: https://img.shields.io/badge/Status-Deprecated-orange\n.. .. |status-badge| image:: https://img.shields.io/badge/Status-Unsupported-red\n\n\nChange Log\n==========\n\n..\n   All enhancements and patches to completion will be documented\n   in this file.  It adheres to the structure of http://keepachangelog.com/ ,\n   but in reStructuredText instead of Markdown (for ease of incorporation into\n   Sphinx documentation and the PyPI description).\n\n   This project adheres to Semantic Versioning (http://semver.org/).\n\n.. There should always be an \"Unreleased\" section for changes pending release.\n\n[4.6.0] - 2024-4-16\n-------------------\n\n* Add support for Python 3.11 and 3.12\n\n[4.5.0] - 2024-3-19\n--------------------\n* Added ``clear_learning_context_completion`` to enable clearing a learner's\n  completion for a course\n\n[4.4.1] - 2023-10-27\n--------------------\n* Fix RemovedInDjango41Warning by removing `django_app_config`\n\n[4.4.0] - 2023-10-20\n--------------------\n* Added tracking logs for completion events\n\n[4.3.0]- 2023-07-26\n------------------------------------------------\n* Added support for Django 4.2\n\n[4.2.1]- 2023-04-26\n------------------------------------------------\n* Support ``get_child_blocks`` along with ``get_child_descriptors``.\n* Switch from ``edx-sphinx-theme`` to ``sphinx-book-theme`` since the former is\n  deprecated\n\n[4.1.0]- 2021-07-19\n------------------------------------------------\n* Add Django 3.0, 3.1 & 3.2 Support\n\n[4.0.4]- 2021-02-04\n------------------------------------------------\n* Update ``get_key_to_last_completed_block`` to return ``full_block_key`` instead of ``block_key``\n\n[4.0.2] - 2021-02-04\n------------------------------------------------\n* Future-proof usage of ``edx_toggles.toggles``\n\n\n[4.0.1] - 2021-01-05\n------------------------------------------------\n* Replace reference to deprecated import path ``student.models``\n  with ``common.djangoapps.student.models``.\n* Updated the build status badge in README.rst to point to travis-ci.com instead of travis-ci.org\n\n\n[4.0.0] - 2020-11-05\n------------------------------------------------\n* Remove soon-to-be-deprecated WaffleSwitchNamespace class instances\n* BACKWARD INCOMPATIBLE: Removes ``waffle()``, which returned a (now deprecated) WaffleSwitchNamespace. This should only affect tests in edx-platform.\n* Requires edx-toggles>=1.2.0, which introduces a new API to waffle objects.\n* Refactors ``ENABLE_COMPLETION_TRACKING_SWITCH`` from a ``LegacyWaffleSwitch`` to the updated ``WaffleSwitch``.  We don't expect uses of this updated switch to require changes, unless there are surprise uses of deprecated methods from ``LegacyWaffleSwitch``.\n\n[3.2.5] - 2020-10-23\n------------------------------------------------\n* Fix waffle switch override in tests by relying on newest edx_toggles API\n\n[3.2.4] - 2020-07-21\n------------------------------------------------\n* Fix AttributeError raised by `vertical_is_complete`.\n  * by ensuring `get_completable_children` doesn't return null\n\n[3.2.3] - 2020-07-01\n------------------------------------------------\n* Updated the children lookup for `vertical_is_complete` to utilize the XBlockCompletion model. There are\n  three completion modes to consider: EXCLUDED, AGGREGATOR, COMPLETABLE.\n\n  * This method will now ignore any block with XBlockCompletion.EXCLUDED.\n  * This method will now recurse down any child of a vertical if that child has XBlockCompletion.AGGREGATOR.\n  * This method will consider all children blocks with XBlockCompletion.COMPLETABLE as candidates to\n    determine if the vertical is complete.\n\n[3.2.2] - 2020-06-30\n------------------------------------------------\n* Adding recursive lookup for children of a vertical to the `vertical_is_complete` method in services.py.\n\n  * This was added because verticals containing children that had their own children were not being properly marked\n    as complete. Since the vertical was only looking one layer deep, it was possible to have children lower in the tree\n    incomplete, but the vertical would still be marked as complete. Now it looks at all leaves under the vertical.\n\n[3.1.1] - 2020-02-24\n------------------------------------------------\n* Remove unnecessary constraint for edx-drf-extensions<3.0.0\n\n[3.1.0] - 2020-02-18\n------------------------------------------------\n* Upgrades packages, drops support for Python 2.\n\n[3.0.1] - 2019-10-22\n------------------------------------------------\n* Fix the package long description to be valid rST, check this in CI.\n\n[3.0.0] - 2019-10-22\n------------------------------------------------\n* Support tracking completion of XBlocks in any \"learning context\", such as in\n  a content library, and not just in courses. To keep the code clean, this has\n  been done as a **breaking change** to the python API. (The API has been\n  simplified so that it's generally only necessary to pass in a block key /\n  usage key rather than block key + course key.) The REST API is unchanged.\n\n[2.1.1] - 2019-10-21\n------------------------------------------------\n* Updated credentials for PyPI deployment via token.\n\n[2.1.0] - 2019-10-18\n------------------------------------------------\n* Switch blocks_to_mark_complete_on_view() to return a list of XBlocks instead of a set.  Many XBlocks aren't hashable;\n  the old implementation allowed subtle bugs under Python 2.7 but triggers an immediate error under 3.5.\n\n[2.0.0] - 2019-04-23\n------------------------------------------------\n* Unpin django-rest-framework requirements. This is a potentially **breaking change** if people were\n  relying on this package to ensure the correct version of djangorestframework was being installed.\n* Remove the AUTHORS file and references to it.\n\n[1.0.2] - 2019-03-11\n------------------------------------------------\n\n* Fix the 403 error occurring for completion-batch API for requests coming from the iOS devices\n\n[1.0.0] - 2018-10-16\n------------------------------------------------\n* Updated edx-drf-extensions imports. Completion will no longer work with\n  outdated versions of edx-drf-extensions.\n\n[0.1.14] - 2018-10-04\n------------------------------------------------\n* Added submit_completion and submit_group_completion methods on\n  CompletionService.\n\n[0.1.7] - 2018-06-18\n------------------------------------------------\n* Added can_mark_block_complete_on_view() and blocks_to_mark_complete_on_view()\n  methods on CompletionService and renamed get_completion_by_viewing_delay_ms()\n  to get_complete_on_view_delay_ms().\n\n[0.1.6] - 2018-04-13\n------------------------------------------------\n* Remove usage of deprecated CourseStructure api.\n\n[0.1.5] - 2018-04-03\n------------------------------------------------\n* Delete enable_visual_progress methods and checks. Deprecate ENABLE_VISUAL_PROGRESS,\n  ENABLE_COURSE_VISUAL_PROGRESS, and ENABLE_SITE_VISUAL_PROGRESS waffle flags\n\n[0.1.4] - 2018-03-28\n------------------------------------------------\n* Site configurations must now explicitly disable visual progress for the\n  enable_visual_progress() feature gating function to return False early.\n\n[0.1.3] - 2018-03-26\n------------------------------------------------\n* Added some documentation.\n\n[0.1.2] - 2018-03-23\n------------------------------------------------\n* Fix management of dependency versions\n\n[0.1.1] - 2018-03-23\n------------------------------------------------\n* Fixes wildly inefficient raw query in BlockCompletion.latest_blocks_completed_all_courses()\n* Updates freezegun version, makes tests that use it somewhat faster.\n\n[0.1.0] - 2018-03-20\n------------------------------------------------\n* Fixes https://openedx.atlassian.net/browse/EDUCATOR-2540\n\n[0.0.11] - 2018-03-20\n------------------------------------------------\n* Added \"subsection-completion/{username}/{course_key}/{subsection_id}\" API\n  endpoint, to be used with the completion milestones experiment.\n\n[0.0.9] - 2018-02-27\n------------------------------------------------\n* Added \"utilities.py\", which houses methods for working with BlockCompletion\n  data.\n\n[0.0.8] - 2018-03-01\n------------------------------------------------\n* Add model method for superlative \u201clast completed block\u201d - for site awareness\n  include every last completed block by course, for later sorting in business\n  layer.\n\n[0.0.7] - 2018-02-15\n------------------------------------------------\n* Add settings and service method for determining completion-by-viewing delay.\n\n[0.0.6] - 2018-02-13\n------------------------------------------------\n* Add the additional completion logic into the service and models from edx-platform\n\n[0.0.2] - 2018-01-31\n------------------------------------------------\n* Fix up edx-lint requirements shenanigans.\n\n[0.0.1] - 2018-01-31\n------------------------------------------------\n* Initial release\n",
    "bugtrack_url": null,
    "license": "AGPL 3.0",
    "summary": "A library for tracking completion of blocks by learners in edX courses.",
    "version": "4.6.0",
    "project_urls": {
        "Homepage": "https://github.com/openedx/completion"
    },
    "split_keywords": [
        "django",
        "edx"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "8f736bd01c5fbd416cf13b46de247f1821accc0092e4ba5eef8ff01dcffb644f",
                "md5": "0725fc3763087701cd898fc09407f9a6",
                "sha256": "13e77251321d1f615e4bb1a70fd2e04d3b5a42e974a40d07ab4e944c88b3445b"
            },
            "downloads": -1,
            "filename": "edx_completion-4.6.0-py2.py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "0725fc3763087701cd898fc09407f9a6",
            "packagetype": "bdist_wheel",
            "python_version": "py2.py3",
            "requires_python": null,
            "size": 45816,
            "upload_time": "2024-04-16T15:41:12",
            "upload_time_iso_8601": "2024-04-16T15:41:12.427889Z",
            "url": "https://files.pythonhosted.org/packages/8f/73/6bd01c5fbd416cf13b46de247f1821accc0092e4ba5eef8ff01dcffb644f/edx_completion-4.6.0-py2.py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "713cb801dfaf76b3f98565fa87efb90d3b993c6619a9d4e818ec341075fc516a",
                "md5": "45d4013e9067f98fcf9d64ceb297cb4a",
                "sha256": "bc39a74837a8930b7349dfdb55ff5fc87a43f9ee178f2a3026ad3eafad1fc9aa"
            },
            "downloads": -1,
            "filename": "edx_completion-4.6.0.tar.gz",
            "has_sig": false,
            "md5_digest": "45d4013e9067f98fcf9d64ceb297cb4a",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 47420,
            "upload_time": "2024-04-16T15:41:14",
            "upload_time_iso_8601": "2024-04-16T15:41:14.026083Z",
            "url": "https://files.pythonhosted.org/packages/71/3c/b801dfaf76b3f98565fa87efb90d3b993c6619a9d4e818ec341075fc516a/edx_completion-4.6.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-04-16 15:41:14",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "openedx",
    "github_project": "completion",
    "travis_ci": false,
    "coveralls": true,
    "github_actions": true,
    "tox": true,
    "lcname": "edx-completion"
}
        
edX
Elapsed time: 0.24308s