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"
}