skill-tagging


Nameskill-tagging JSON
Version 0.3.0 PyPI version JSON
download
home_pagehttps://github.com/openedx/xblock-skill-tagging
SummaryDjango app plugin for fetching and verifying tags for xblock skills.
upload_time2024-11-15 15:19:07
maintainerNone
docs_urlNone
authoredX
requires_python>=3.11
licenseAGPL 3.0
keywords python edx
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage
            skill_tagging
#############################

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

Overview
********

Django app for fetching and verifying tags/skills for video and vertical/unit
XBlocks. It implements two openedx_filters pipelines to inject a form into the end
unit XBlocks and video XBlocks.

.. image:: https://user-images.githubusercontent.com/10894099/210078679-3cbac3d1-55a7-4fba-b841-7fb4468f32c5.png
   :target: https://user-images.githubusercontent.com/10894099/210078679-3cbac3d1-55a7-4fba-b841-7fb4468f32c5.png
   :alt: vertical block verification form

.. image:: https://user-images.githubusercontent.com/10894099/212285572-efa5cfd5-e9c5-411d-8d15-541c43445ec0.png
   :target: https://user-images.githubusercontent.com/10894099/212285572-efa5cfd5-e9c5-411d-8d15-541c43445ec0.png
   :alt: video block verification form

More information about the XBlock skill tagging design can be found in this
`ADR`_.

.. _ADR: https://github.com/openedx/taxonomy-connector/blob/master/docs/decisions/0001-xblock-skill-tagging-design.rst


Getting Started
***************

To install ``skill_tagging`` in `edx-platform`_, run

.. code-block::

   pip install skill_tagging

   # to install a development version locally in devstack
   # clone this repo in `<devstack_base_dir>/src` directory and run
   pip install -e /edx/src/xblock-skill-tagging

.. _edx-platform: https://github.com/openedx/edx-platform

This repo depends on discovery service for fetching skills/tags for a given
XBlock which depends on `taxonomy-connector`_ plugin for generating and serving these
tags. Setup ``taxonomy-connector`` plugin in `course-discovery`_ by installing it
via pip:

.. code-block::

   pip install taxonomy-connector

   # to install a development version locally in devstack
   # clone this repo in `<devstack_base_dir>/src` directory and run
   pip install -e /edx/src/taxonomy_connector

.. _taxonomy-connector: https://github.com/openedx/taxonomy-connector
.. _course-discovery: https://github.com/openedx/course-discovery

Whenever a user verifies tags/skills for an XBlock, ``skill_tagging`` `emits`_ an
openedx_event called ``XBLOCK_SKILL_VERIFIED``. This event needs to be consumed
by course discovery to make sure that the verification count is incremented for
that skill/tag.

To produce and consume this event, setup an implementation of event bus
like `event_bus_kafka`_ or `event_bus_redis`_. `How to start using the Event Bus`_
has detailed information on setting up event bus. The host would be
``edx-platform`` while ``course-discovery`` will be the consumer for the event
bus.

.. _emits: https://github.com/openedx/xblock-skill-tagging/blob/main/skill_tagging/handlers.py
.. _event_bus_kafka: https://github.com/openedx/event-bus-kafka
.. _event_bus_redis: https://github.com/openedx/event-bus-redis
.. _How to start using the Event Bus: https://openedx.atlassian.net/wiki/spaces/AC/pages/3508699151/How+to+start+using+the+Event+Bus

Configuration
=============

Add following configuration values to the host django settings, i.e. LMS
settings: ``lms/envs/common.py``

.. code-block:: python

   from .common import XBLOCK_MIXINS
   # Below mixin adds the ability to fetch skills/tags from discovery and update them.
   XBLOCK_MIXINS += ('skill_tagging.skill_tagging_mixin.SkillTaggingMixin',)
   # Set below url to point to discovery service.
   TAXONOMY_API_BASE_URL='http://edx.devstack.discovery:18381'
   # Configure the maximum number skills/tags to display in the form for a given xblock.
   TAXONOMY_API_SKILL_PAGE_SIZE=20
   # Copy this as is, this configures the required openedx_filters.
   OPEN_EDX_FILTERS_CONFIG = {
       "org.openedx.learning.vertical_block.render.completed.v1": {
           "fail_silently": False,
           "pipeline": [
               "skill_tagging.pipeline.AddVerticalBlockSkillVerificationSection",
           ]
       },
       "org.openedx.learning.vertical_block_child.render.started.v1": {
           "fail_silently": False,
           "pipeline": [
               "skill_tagging.pipeline.AddVideoBlockSkillVerificationComponent",
           ]
       }
   }
   # helps to configure probability of displaying the verification forms. Values in range 0 to 1 are allowed, where 0
   # means never and 1 means always display. Default value is 0.5 i.e. 50% chance of displaying the form.
   SHOW_SKILL_VERIFICATION_PROBABILITY = 0.5
   # Optionally update topic name for verification event emitted when a user verifies tags for an xblock.
   EVENT_BUS_XBLOCK_VERIFICATION_TOPIC = "learning-custom-xblock-skill-verfied"


Developing
==========

One Time Setup
--------------
.. code-block::

  # Clone the repository
  git clone git@github.com:openedx/xblock-skill-tagging.git
  cd xblock-skill-tagging

  # Set up a virtualenv using virtualenvwrapper with the same name as the repo and activate it
  mkvirtualenv -p python3.12 xblock-skill-tagging


Every time you develop something in this repo
---------------------------------------------
.. code-block::

  # Activate the virtualenv
  workon xblock-skill-tagging

  # Grab the latest code
  git checkout main
  git pull

  # 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.
  vim ...

  # 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.


Deploying
=========

This package is automatically published to pypi whenever a new tag is pushed to the repository.

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

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

Published documentation is not available.

More Help
=========

If you're having trouble, we have discussion forums at
https://discuss.openedx.org where you can connect with others in the
community.

Our real-time conversations are on Slack. You can request a `Slack
invitation`_, then join our `community Slack workspace`_.

For anything non-trivial, the best path is to open an issue in this
repository with as many details about the issue you are facing as you
can provide.

https://github.com/openedx/xblock-skill-tagging/issues

For more information about these options, see the `Getting Help`_ page.

.. _Slack invitation: https://openedx.org/slack
.. _community Slack workspace: https://openedx.slack.com/
.. _Getting Help: https://openedx.org/getting-help

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://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://open-edx-backstage.herokuapp.com/catalog/default/component/xblock-skill-tagging

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

.. |ci-badge| image:: https://github.com/openedx/xblock-skill-tagging/workflows/Python%20CI/badge.svg?branch=main
    :target: https://github.com/openedx/xblock-skill-tagging/actions
    :alt: CI

.. |codecov-badge| image:: https://codecov.io/github/openedx/xblock-skill-tagging/coverage.svg?branch=main
    :target: https://codecov.io/github/openedx/xblock-skill-tagging?branch=main
    :alt: Codecov

.. |doc-badge| image:: https://readthedocs.org/projects/xblock-skill-tagging/badge/?version=latest
    :target: https://xblock-skill-tagging.readthedocs.io/en/latest/
    :alt: Documentation

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

.. |license-badge| image:: https://img.shields.io/github/license/openedx/xblock-skill-tagging.svg
    :target: https://github.com/openedx/xblock-skill-tagging/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 skill_tagging 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
**********

[0.3.0] - 2024-10-16
************************************************

Changed
=======

* Drop support for python 3.8
* Adds support for python 3.11 & 3.12


[0.2.0] - 2024-04-23
************************************************

Changed
=======

* Applied updates required for XBlock 3.0


[0.1.10] - 2024-03-22
************************************************

Changed
=======

* Remove log statement


[0.1.9] - 2024-03-20
************************************************

Changed
=======

* Pass course key as query param to taxonomy skills api


[0.1.8] - 2024-03-14
************************************************

Changed
=======

* Verification pipeline filter not run for proctored exam units


[0.1.7] - 2024-01-31
************************************************

Changed
=======

* Removed temporary logs


[0.1.6] - 2024-01-29
************************************************

Changed
=======

* Refactored logging and default run probability


[0.1.5] - 2024-01-25
************************************************

Changed
=======

* Logging aborted runs of the filter


[0.1.4] - 2024-01-22
************************************************

Changed
=======

* Added debug logs for filter runs


[0.1.3] - 2023-09-27
************************************************

Changed
=======

* Gate skills API call behind probablity check to reduce traffic.


[0.1.2] - 2023-08-18
************************************************

Added
=====

* Define Metaclass for XblockSkillTagging Mixin


[0.1.1] - 2023-06-14
************************************************

Added
=====

* Add temporary option to configure topic name for skill-verified event.

[0.1.0] - 2022-12-01
************************************************

Added
=====

* First release on PyPI.

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/openedx/xblock-skill-tagging",
    "name": "skill-tagging",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.11",
    "maintainer_email": null,
    "keywords": "Python edx",
    "author": "edX",
    "author_email": "oscm@edx.org",
    "download_url": "https://files.pythonhosted.org/packages/49/06/5dcce5e00bca377be3d163e9e70593976617245aadd0e98b5870608fb7a2/skill_tagging-0.3.0.tar.gz",
    "platform": null,
    "description": "skill_tagging\n#############################\n\n|pypi-badge| |ci-badge| |codecov-badge| |doc-badge| |pyversions-badge|\n|license-badge| |status-badge|\n\nOverview\n********\n\nDjango app for fetching and verifying tags/skills for video and vertical/unit\nXBlocks. It implements two openedx_filters pipelines to inject a form into the end\nunit XBlocks and video XBlocks.\n\n.. image:: https://user-images.githubusercontent.com/10894099/210078679-3cbac3d1-55a7-4fba-b841-7fb4468f32c5.png\n   :target: https://user-images.githubusercontent.com/10894099/210078679-3cbac3d1-55a7-4fba-b841-7fb4468f32c5.png\n   :alt: vertical block verification form\n\n.. image:: https://user-images.githubusercontent.com/10894099/212285572-efa5cfd5-e9c5-411d-8d15-541c43445ec0.png\n   :target: https://user-images.githubusercontent.com/10894099/212285572-efa5cfd5-e9c5-411d-8d15-541c43445ec0.png\n   :alt: video block verification form\n\nMore information about the XBlock skill tagging design can be found in this\n`ADR`_.\n\n.. _ADR: https://github.com/openedx/taxonomy-connector/blob/master/docs/decisions/0001-xblock-skill-tagging-design.rst\n\n\nGetting Started\n***************\n\nTo install ``skill_tagging`` in `edx-platform`_, run\n\n.. code-block::\n\n   pip install skill_tagging\n\n   # to install a development version locally in devstack\n   # clone this repo in `<devstack_base_dir>/src` directory and run\n   pip install -e /edx/src/xblock-skill-tagging\n\n.. _edx-platform: https://github.com/openedx/edx-platform\n\nThis repo depends on discovery service for fetching skills/tags for a given\nXBlock which depends on `taxonomy-connector`_ plugin for generating and serving these\ntags. Setup ``taxonomy-connector`` plugin in `course-discovery`_ by installing it\nvia pip:\n\n.. code-block::\n\n   pip install taxonomy-connector\n\n   # to install a development version locally in devstack\n   # clone this repo in `<devstack_base_dir>/src` directory and run\n   pip install -e /edx/src/taxonomy_connector\n\n.. _taxonomy-connector: https://github.com/openedx/taxonomy-connector\n.. _course-discovery: https://github.com/openedx/course-discovery\n\nWhenever a user verifies tags/skills for an XBlock, ``skill_tagging`` `emits`_ an\nopenedx_event called ``XBLOCK_SKILL_VERIFIED``. This event needs to be consumed\nby course discovery to make sure that the verification count is incremented for\nthat skill/tag.\n\nTo produce and consume this event, setup an implementation of event bus\nlike `event_bus_kafka`_ or `event_bus_redis`_. `How to start using the Event Bus`_\nhas detailed information on setting up event bus. The host would be\n``edx-platform`` while ``course-discovery`` will be the consumer for the event\nbus.\n\n.. _emits: https://github.com/openedx/xblock-skill-tagging/blob/main/skill_tagging/handlers.py\n.. _event_bus_kafka: https://github.com/openedx/event-bus-kafka\n.. _event_bus_redis: https://github.com/openedx/event-bus-redis\n.. _How to start using the Event Bus: https://openedx.atlassian.net/wiki/spaces/AC/pages/3508699151/How+to+start+using+the+Event+Bus\n\nConfiguration\n=============\n\nAdd following configuration values to the host django settings, i.e. LMS\nsettings: ``lms/envs/common.py``\n\n.. code-block:: python\n\n   from .common import XBLOCK_MIXINS\n   # Below mixin adds the ability to fetch skills/tags from discovery and update them.\n   XBLOCK_MIXINS += ('skill_tagging.skill_tagging_mixin.SkillTaggingMixin',)\n   # Set below url to point to discovery service.\n   TAXONOMY_API_BASE_URL='http://edx.devstack.discovery:18381'\n   # Configure the maximum number skills/tags to display in the form for a given xblock.\n   TAXONOMY_API_SKILL_PAGE_SIZE=20\n   # Copy this as is, this configures the required openedx_filters.\n   OPEN_EDX_FILTERS_CONFIG = {\n       \"org.openedx.learning.vertical_block.render.completed.v1\": {\n           \"fail_silently\": False,\n           \"pipeline\": [\n               \"skill_tagging.pipeline.AddVerticalBlockSkillVerificationSection\",\n           ]\n       },\n       \"org.openedx.learning.vertical_block_child.render.started.v1\": {\n           \"fail_silently\": False,\n           \"pipeline\": [\n               \"skill_tagging.pipeline.AddVideoBlockSkillVerificationComponent\",\n           ]\n       }\n   }\n   # helps to configure probability of displaying the verification forms. Values in range 0 to 1 are allowed, where 0\n   # means never and 1 means always display. Default value is 0.5 i.e. 50% chance of displaying the form.\n   SHOW_SKILL_VERIFICATION_PROBABILITY = 0.5\n   # Optionally update topic name for verification event emitted when a user verifies tags for an xblock.\n   EVENT_BUS_XBLOCK_VERIFICATION_TOPIC = \"learning-custom-xblock-skill-verfied\"\n\n\nDeveloping\n==========\n\nOne Time Setup\n--------------\n.. code-block::\n\n  # Clone the repository\n  git clone git@github.com:openedx/xblock-skill-tagging.git\n  cd xblock-skill-tagging\n\n  # Set up a virtualenv using virtualenvwrapper with the same name as the repo and activate it\n  mkvirtualenv -p python3.12 xblock-skill-tagging\n\n\nEvery time you develop something in this repo\n---------------------------------------------\n.. code-block::\n\n  # Activate the virtualenv\n  workon xblock-skill-tagging\n\n  # Grab the latest code\n  git checkout main\n  git pull\n\n  # Install/update the dev requirements\n  make requirements\n\n  # Run the tests and quality checks (to verify the status before you make any changes)\n  make validate\n\n  # Make a new branch for your changes\n  git checkout -b <your_github_username>/<short_description>\n\n  # Using your favorite editor, edit the code to make your change.\n  vim ...\n\n  # Run your new tests\n  pytest ./path/to/new/tests\n\n  # Run all the tests and quality checks\n  make validate\n\n  # Commit all your changes\n  git commit ...\n  git push\n\n  # Open a PR and ask for review.\n\n\nDeploying\n=========\n\nThis package is automatically published to pypi whenever a new tag is pushed to the repository.\n\nGetting Help\n************\n\nDocumentation\n=============\n\nPublished documentation is not available.\n\nMore Help\n=========\n\nIf you're having trouble, we have discussion forums at\nhttps://discuss.openedx.org where you can connect with others in the\ncommunity.\n\nOur real-time conversations are on Slack. You can request a `Slack\ninvitation`_, then join our `community Slack workspace`_.\n\nFor anything non-trivial, the best path is to open an issue in this\nrepository with as many details about the issue you are facing as you\ncan provide.\n\nhttps://github.com/openedx/xblock-skill-tagging/issues\n\nFor more information about these options, see the `Getting Help`_ page.\n\n.. _Slack invitation: https://openedx.org/slack\n.. _community Slack workspace: https://openedx.slack.com/\n.. _Getting Help: https://openedx.org/getting-help\n\nLicense\n*******\n\nThe code in this repository is licensed under the AGPL 3.0 unless\notherwise noted.\n\nPlease see `LICENSE.txt <LICENSE.txt>`_ 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://open-edx-backstage.herokuapp.com/catalog/default/component/xblock-skill-tagging\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/skill_tagging.svg\n    :target: https://pypi.python.org/pypi/skill_tagging/\n    :alt: PyPI\n\n.. |ci-badge| image:: https://github.com/openedx/xblock-skill-tagging/workflows/Python%20CI/badge.svg?branch=main\n    :target: https://github.com/openedx/xblock-skill-tagging/actions\n    :alt: CI\n\n.. |codecov-badge| image:: https://codecov.io/github/openedx/xblock-skill-tagging/coverage.svg?branch=main\n    :target: https://codecov.io/github/openedx/xblock-skill-tagging?branch=main\n    :alt: Codecov\n\n.. |doc-badge| image:: https://readthedocs.org/projects/xblock-skill-tagging/badge/?version=latest\n    :target: https://xblock-skill-tagging.readthedocs.io/en/latest/\n    :alt: Documentation\n\n.. |pyversions-badge| image:: https://img.shields.io/pypi/pyversions/skill_tagging.svg\n    :target: https://pypi.python.org/pypi/skill_tagging/\n    :alt: Supported Python versions\n\n.. |license-badge| image:: https://img.shields.io/github/license/openedx/xblock-skill-tagging.svg\n    :target: https://github.com/openedx/xblock-skill-tagging/blob/main/LICENSE.txt\n    :alt: License\n\n.. TODO: Choose one of the statuses below and remove the other status-badge lines.\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 skill_tagging will be documented\n   in this file.  It adheres to the structure of https://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 (https://semver.org/).\n\n.. There should always be an \"Unreleased\" section for changes pending release.\n\nUnreleased\n**********\n\n[0.3.0] - 2024-10-16\n************************************************\n\nChanged\n=======\n\n* Drop support for python 3.8\n* Adds support for python 3.11 & 3.12\n\n\n[0.2.0] - 2024-04-23\n************************************************\n\nChanged\n=======\n\n* Applied updates required for XBlock 3.0\n\n\n[0.1.10] - 2024-03-22\n************************************************\n\nChanged\n=======\n\n* Remove log statement\n\n\n[0.1.9] - 2024-03-20\n************************************************\n\nChanged\n=======\n\n* Pass course key as query param to taxonomy skills api\n\n\n[0.1.8] - 2024-03-14\n************************************************\n\nChanged\n=======\n\n* Verification pipeline filter not run for proctored exam units\n\n\n[0.1.7] - 2024-01-31\n************************************************\n\nChanged\n=======\n\n* Removed temporary logs\n\n\n[0.1.6] - 2024-01-29\n************************************************\n\nChanged\n=======\n\n* Refactored logging and default run probability\n\n\n[0.1.5] - 2024-01-25\n************************************************\n\nChanged\n=======\n\n* Logging aborted runs of the filter\n\n\n[0.1.4] - 2024-01-22\n************************************************\n\nChanged\n=======\n\n* Added debug logs for filter runs\n\n\n[0.1.3] - 2023-09-27\n************************************************\n\nChanged\n=======\n\n* Gate skills API call behind probablity check to reduce traffic.\n\n\n[0.1.2] - 2023-08-18\n************************************************\n\nAdded\n=====\n\n* Define Metaclass for XblockSkillTagging Mixin\n\n\n[0.1.1] - 2023-06-14\n************************************************\n\nAdded\n=====\n\n* Add temporary option to configure topic name for skill-verified event.\n\n[0.1.0] - 2022-12-01\n************************************************\n\nAdded\n=====\n\n* First release on PyPI.\n",
    "bugtrack_url": null,
    "license": "AGPL 3.0",
    "summary": "Django app plugin for fetching and verifying tags for xblock skills.",
    "version": "0.3.0",
    "project_urls": {
        "Homepage": "https://github.com/openedx/xblock-skill-tagging"
    },
    "split_keywords": [
        "python",
        "edx"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "961f556ddfc36b99d5aea17482af9ad3f449612d4a40456ca32589c446366936",
                "md5": "745f27573556601f7f681368ef8c064a",
                "sha256": "33e4bca06307296fc12131e3ecbc7c822d0c0d5991a12550bc91f6aebb0cab59"
            },
            "downloads": -1,
            "filename": "skill_tagging-0.3.0-py2.py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "745f27573556601f7f681368ef8c064a",
            "packagetype": "bdist_wheel",
            "python_version": "py2.py3",
            "requires_python": ">=3.11",
            "size": 45785,
            "upload_time": "2024-11-15T15:19:06",
            "upload_time_iso_8601": "2024-11-15T15:19:06.239136Z",
            "url": "https://files.pythonhosted.org/packages/96/1f/556ddfc36b99d5aea17482af9ad3f449612d4a40456ca32589c446366936/skill_tagging-0.3.0-py2.py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "49065dcce5e00bca377be3d163e9e70593976617245aadd0e98b5870608fb7a2",
                "md5": "133f8a76a21d750decff9447a7d59580",
                "sha256": "453d6fd1fdacb2c0ab66df5adae491caf3bf155dca4f4809add2ee3bb68abe41"
            },
            "downloads": -1,
            "filename": "skill_tagging-0.3.0.tar.gz",
            "has_sig": false,
            "md5_digest": "133f8a76a21d750decff9447a7d59580",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.11",
            "size": 49778,
            "upload_time": "2024-11-15T15:19:07",
            "upload_time_iso_8601": "2024-11-15T15:19:07.950972Z",
            "url": "https://files.pythonhosted.org/packages/49/06/5dcce5e00bca377be3d163e9e70593976617245aadd0e98b5870608fb7a2/skill_tagging-0.3.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-11-15 15:19:07",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "openedx",
    "github_project": "xblock-skill-tagging",
    "travis_ci": false,
    "coveralls": true,
    "github_actions": true,
    "tox": true,
    "lcname": "skill-tagging"
}
        
edX
Elapsed time: 0.94331s