tutor-contrib-branding


Nametutor-contrib-branding JSON
Version 19.0.3 PyPI version JSON
download
home_pagehttps://github.com/aulasneo/tutor-contrib-branding
SummaryTutor plugin that simplifies branding an Open edX instance
upload_time2025-07-21 23:26:18
maintainerNone
docs_urlNone
authorAulasneo
requires_python>=3.7
licenseAGPLv3
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            Branding plugin for `Tutor <https://docs.tutor.overhang.io>`__
===================================================================================

This plugin, inspired in `Indigo <https://github.com/overhangio/tutor-indigo>`__,
allow changing the look and feel of Open edX installations.
It can control the appearance of both legacy pages based on HTML
(like the course catalog, dashboard, login, register, etc.), as well as
MFE components.

.. image:: https://img.shields.io/badge/linting-pylint-yellowgreen
    :target: https://github.com/pylint-dev/pylint

Installation
------------

::

    pip install tutor-contrib-branding

Configuration
-------------

Customize colors
~~~~~~~~~~~~~~~~

Most Bootstrap variables can be set using settings. 
These are the available variables and their defaults:

* BRANDING_PRIMARY: #0000FF
* BRANDING_SECONDARY: #454545
* BRANDING_FONT_FAMILY: <no default>
* BRANDING_BRAND: #9D0054
* BRANDING_SUCCESS: #178253
* BRANDING_INFO: #006DAA
* BRANDING_DANGER: #C32D3A
* BRANDING_WARNING: #FFD900
* BRANDING_LIGHT: #E1DDDB
* BRANDING_DARK: #273F2F
* BRANDING_ACCENT_A: #00BBF9
* BRANDING_ACCENT_B: #FFEE88
* BRANDING_BACKGROUND: #ffffff
* BRANDING_BG_PRIMARY: #ffffff
* BRANDING_BODY: #FFFFFF
* BRANDING_HOMEPAGE_BG_IMAGE: ""

You can add these settings to the ``config.yml`` file or using the
``tutor config --set "<setting>=<value>"`` command.

These settings affect the Bootstrap's ``_variables.scss`` file in the
`comprehensive theme <https://github.com/openedx/edx-platform/blob/master/lms/static/sass/partials/lms/theme/_variables.scss>`__
and in the `MFE branding module <https://github.com/openedx/brand-openedx/blob/625ad32f9cf8247522541ee77dfd574b30245226/paragon/_variables.scss>`__.

You can also add CSS overrides using the ``BRANDING_EXTRAS`` and the ``BRANDING_OVERRIDES`` variables,
to impact the `comprehensive theme <https://github.com/openedx/edx-platform/blob/master/lms/static/sass/partials/lms/theme/_extras.scss>`__
and the `MFE branding module <https://github.com/openedx/brand-openedx/blob/625ad32f9cf8247522541ee77dfd574b30245226/paragon/_overrides.scss>`__
respectively.

E.g., this setting will add a CSS block to change the color of h1 texts in all MFE:

::

    BRANDING_OVERRIDES: >-
      h1 {
            color: red;
      }

Managing fonts
~~~~~~~~~~~~~~

Set ``BRANDING_FONTS_URLS`` to a list of URLS pointing to a zipped set of font files.

E.g., to add Roboto Flex font, set:

::

    BRANDING_FONTS_URLS:
    - https://fonts.google.com/download?family=Roboto%20Flex

Then add a specific font definition, use the ``BRANDING_FONTS`` setting, e.g.:

::

    BRANDING_FONTS: >-
        @font-face {
            font-family: 'Roboto Flex';
            src: url('RobotoFlex-VF.woff2') format('woff2 supports variations'),
               url('RobotoFlex-VF.woff2') format('woff2-variations');
        }

Learn more about using flex fonts `here <https://web.dev/variable-fonts/>`__.

Finally, set the font family using the ``BRANDING_FONT_FAMILY`` variable:

::

    BRANDING_FONT_FAMILY: Roboto Flex


Downloading images
~~~~~~~~~~~~~~~~~~

CMS and LMS images can be included as long as they can be accessed through a HTTP(S) request.
Most important images are:

LMS:

- favicon.ico
- logo.png
- banner.png

CMS:

- studio-logo.png

A banner can also be added to the homepage.

E.g., to add custom logos and banner set the following:

::

    BRANDING_LMS_IMAGES:
    - filename: banner.png
      url: https://url/to/banner.png
    - filename: favicon.ico
      url: https://url/to/favicon.ico
    - filename: logo.png
      url: https://url/to/logo.png
    BRANDING_CMS_IMAGES:
    - filename: studio-logo.png
      url: https://url/to/studio-logo.png
    BRANDING_HOMEPAGE_BG_IMAGE: banner.png


Customize MFE logos
~~~~~~~~~~~~~~~~~~~~

By default, the MFEs will take the logos from the theme assets' main logo.
However you can now customize the MFE logos by using these variables:

- BRANDING_MFE_LOGO_URL: Main logo used in the headers
- BRANDING_MFE_LOGO_TRADEMARK_URL: This is a URL to a logo for use in the footer.
  This is a different environment variable than LOGO_URL (used in frontend-component-header)
  to accommodate sites that would like to have additional trademark information on a logo
  in the footer, such as a (tm) or (r) symbol.
- BRANDING_MFE_LOGO_WHITE_URL: White logo over transparent background intended for
  the login page and other sites where it printed over images or dark background.

The value of these settings must be a public accessible URL containing the image.


Custom HTML block in home page
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

You can add a custom HTML code to be rendered in the home page after the banner
and before the list of courses by setting ``BRANDING_INDEX_ADDITIONAL_HTML``.

Customize HTML certificate
~~~~~~~~~~~~~~~~~~~~~~~~~~

By setting ``BRANDING_CERTIFICATE_HTML`` you can override the standard certificate with
your own HTML code.

Tip: Create a file with the HTML code (e.g., ``branding_certificate_html.html``)
and then update the configuration from the file.

::

    tutor config save --set BRANDING_CERTIFICATE_HTML="$(cat branding_certificate_html.html)"


Customizing static pages
~~~~~~~~~~~~~~~~~~~~~~~~

You can set your own HTML content to the typical static pages by setting the corresponding
variable:

- BRANDING_STATIC_TEMPLATE_404
- BRANDING_STATIC_TEMPLATE_429
- BRANDING_STATIC_TEMPLATE_ABOUT
- BRANDING_STATIC_TEMPLATE_BLOG
- BRANDING_STATIC_TEMPLATE_CONTACT
- BRANDING_STATIC_TEMPLATE_DONATE
- BRANDING_STATIC_TEMPLATE_EMBARGO
- BRANDING_STATIC_TEMPLATE_FAQ
- BRANDING_STATIC_TEMPLATE_HELP
- BRANDING_STATIC_TEMPLATE_HONOR
- BRANDING_STATIC_TEMPLATE_JOBS
- BRANDING_STATIC_TEMPLATE_MEDIA_KIT
- BRANDING_STATIC_TEMPLATE_NEWS
- BRANDING_STATIC_TEMPLATE_PRESS
- BRANDING_STATIC_TEMPLATE_PRIVACY
- BRANDING_STATIC_TEMPLATE_SERVER_DOWN
- BRANDING_STATIC_TEMPLATE_SERVER_ERROR
- BRANDING_STATIC_TEMPLATE_SERVER_OVERLOADED
- BRANDING_STATIC_TEMPLATE_SITEMAP
- BRANDING_STATIC_TEMPLATE_TOS

Use custom MFEs
~~~~~~~~~~~~~~~

You can create alternate versions of existing MFEs or new ones.
Starting from Palm, Tutor will not accept MFE repo overrides in the configuration file.
This plugin brings back that functionality, allowing you to specify the repo, port and
version of the MFEs to override in the configuration file without the need to create
a plugin just for this.

To override the MFE repo information, set the `BRANDING_MFE` variable as in this example:

::

    BRANDING_MFE:
      authn:
        port: 2001
        repository: https://github.com/myorg/myfork
        version: mybranch


Customizing MFE header and footer
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

To use a custom header or footer, clone `frontend-component-header <https://github.com/openedx/frontend-component-header>`_
and/or `frontend-component-footer <https://github.com/openedx/frontend-component-footer>`_,
push to your custom repository and set the repository URL in the variables:

- BRANDING_FRONTEND_COMPONENT_HEADER_REPO
- BRANDING_FRONTEND_COMPONENT_FOOTER_REPO


Using a custom frontend-platform
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Some advanced users might want to customize frontend-platform. This repo is imported by
most MFEs and brings some features common to all.
A typical use case is to add a script in the <head> of all pages.

To use a custom repo for frontend-platform, set :code:`BRANDING_MFE_PLATFORM_REPO`. Use the same
format as would be used by :code:`npm install`. Add a :code:`#` and a branch name or version number.

E.g.,

::

    BRANDING_MFE_PLATFORM_REPO: https://github.com/openedx/frontend-platform#v7.1.4

Note that the version of frontend_platform must contain a "prepare" script with the same value as the
"build" script in package.json. Also set the version to the actual version number of the upstream repo,
instead of the default "1.0.0-semantically-released". Finally, update package-lock.json with :code:`npm install`
to match the latest changes before pushing.


Downloading custom themes from a git repo
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

It is now possible to store one or more whole comprehensive themes in git repositories and download to the 
Open edX instance. To do this, add the following configuration to config.yml:

::

    BRANDING_THEME_REPOS:
      - name: <theme name>
        url: <theme git URL, ending in .git>
        version: <git branch or tag>
      ...

You can add as many themes as you want, however only one can be active at a time.
After adding this, save the configuration and rebuild the openedx image.
Then run `tutor <variant> do init [--limit branding]` to enable the first theme.

Notes: 

- theme repos are not templates; it means that other BRANDING\_ settings, logos and fonts  will have no effect.
  Include your own fonts, images, CSS and variables in the repo.
- Do not use `theme` as a theme name. This is reserved for the base theme created from the branding template.
- To change templates, go to `<LMS URL>/admin/theming/sitetheme/` and set the theme name to all sites.
  Use `theme` as theme name to use the base theme.
- MFE logos are taken by default from the theme logo. Restart the MFE service if you changed your logo in the theme
  to make it available to the MFEs.


Customizing the Learner Dashboard
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Since Quince release, the new learner-dashboard MFE includes a number of features that might not
be part of your use cases, and cannot be disabled with settings.

- Hide the sidebar
    The sidebar with the "Looking for new challenges" text can be hidden by setting
    `BRANDING_HIDE_DASHBOARD_SIDEBAR` to True.

- Hide the `Looking for a new challenge?` sidebar widget
    You can leave the sidebar visible and hide only the widget by setting
    `BRANDING_HIDE_LOOKING_FOR_CHALLENGE_WIDGET` to True.

- Make the course image fit into the course card
    By default, the images is clipped.

Usage
-----

::

    tutor plugins enable branding
    tutor images build openedx
    tutor images build mfe
    tutor local do init --limit branding

In K8s deployments, you will need to push the docker images and restart Tutor.

License
-------

This software is licensed under the terms of the AGPLv3.

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/aulasneo/tutor-contrib-branding",
    "name": "tutor-contrib-branding",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": null,
    "keywords": null,
    "author": "Aulasneo",
    "author_email": "andres@aulasneo.com",
    "download_url": "https://files.pythonhosted.org/packages/5d/c0/d35beb18545304be6b82495fd6f2f7ac86543646d8b275d78628e6bac6c7/tutor_contrib_branding-19.0.3.tar.gz",
    "platform": null,
    "description": "Branding plugin for `Tutor <https://docs.tutor.overhang.io>`__\n===================================================================================\n\nThis plugin, inspired in `Indigo <https://github.com/overhangio/tutor-indigo>`__,\nallow changing the look and feel of Open edX installations.\nIt can control the appearance of both legacy pages based on HTML\n(like the course catalog, dashboard, login, register, etc.), as well as\nMFE components.\n\n.. image:: https://img.shields.io/badge/linting-pylint-yellowgreen\n    :target: https://github.com/pylint-dev/pylint\n\nInstallation\n------------\n\n::\n\n    pip install tutor-contrib-branding\n\nConfiguration\n-------------\n\nCustomize colors\n~~~~~~~~~~~~~~~~\n\nMost Bootstrap variables can be set using settings. \nThese are the available variables and their defaults:\n\n* BRANDING_PRIMARY: #0000FF\n* BRANDING_SECONDARY: #454545\n* BRANDING_FONT_FAMILY: <no default>\n* BRANDING_BRAND: #9D0054\n* BRANDING_SUCCESS: #178253\n* BRANDING_INFO: #006DAA\n* BRANDING_DANGER: #C32D3A\n* BRANDING_WARNING: #FFD900\n* BRANDING_LIGHT: #E1DDDB\n* BRANDING_DARK: #273F2F\n* BRANDING_ACCENT_A: #00BBF9\n* BRANDING_ACCENT_B: #FFEE88\n* BRANDING_BACKGROUND: #ffffff\n* BRANDING_BG_PRIMARY: #ffffff\n* BRANDING_BODY: #FFFFFF\n* BRANDING_HOMEPAGE_BG_IMAGE: \"\"\n\nYou can add these settings to the ``config.yml`` file or using the\n``tutor config --set \"<setting>=<value>\"`` command.\n\nThese settings affect the Bootstrap's ``_variables.scss`` file in the\n`comprehensive theme <https://github.com/openedx/edx-platform/blob/master/lms/static/sass/partials/lms/theme/_variables.scss>`__\nand in the `MFE branding module <https://github.com/openedx/brand-openedx/blob/625ad32f9cf8247522541ee77dfd574b30245226/paragon/_variables.scss>`__.\n\nYou can also add CSS overrides using the ``BRANDING_EXTRAS`` and the ``BRANDING_OVERRIDES`` variables,\nto impact the `comprehensive theme <https://github.com/openedx/edx-platform/blob/master/lms/static/sass/partials/lms/theme/_extras.scss>`__\nand the `MFE branding module <https://github.com/openedx/brand-openedx/blob/625ad32f9cf8247522541ee77dfd574b30245226/paragon/_overrides.scss>`__\nrespectively.\n\nE.g., this setting will add a CSS block to change the color of h1 texts in all MFE:\n\n::\n\n    BRANDING_OVERRIDES: >-\n      h1 {\n            color: red;\n      }\n\nManaging fonts\n~~~~~~~~~~~~~~\n\nSet ``BRANDING_FONTS_URLS`` to a list of URLS pointing to a zipped set of font files.\n\nE.g., to add Roboto Flex font, set:\n\n::\n\n    BRANDING_FONTS_URLS:\n    - https://fonts.google.com/download?family=Roboto%20Flex\n\nThen add a specific font definition, use the ``BRANDING_FONTS`` setting, e.g.:\n\n::\n\n    BRANDING_FONTS: >-\n        @font-face {\n            font-family: 'Roboto Flex';\n            src: url('RobotoFlex-VF.woff2') format('woff2 supports variations'),\n               url('RobotoFlex-VF.woff2') format('woff2-variations');\n        }\n\nLearn more about using flex fonts `here <https://web.dev/variable-fonts/>`__.\n\nFinally, set the font family using the ``BRANDING_FONT_FAMILY`` variable:\n\n::\n\n    BRANDING_FONT_FAMILY: Roboto Flex\n\n\nDownloading images\n~~~~~~~~~~~~~~~~~~\n\nCMS and LMS images can be included as long as they can be accessed through a HTTP(S) request.\nMost important images are:\n\nLMS:\n\n- favicon.ico\n- logo.png\n- banner.png\n\nCMS:\n\n- studio-logo.png\n\nA banner can also be added to the homepage.\n\nE.g., to add custom logos and banner set the following:\n\n::\n\n    BRANDING_LMS_IMAGES:\n    - filename: banner.png\n      url: https://url/to/banner.png\n    - filename: favicon.ico\n      url: https://url/to/favicon.ico\n    - filename: logo.png\n      url: https://url/to/logo.png\n    BRANDING_CMS_IMAGES:\n    - filename: studio-logo.png\n      url: https://url/to/studio-logo.png\n    BRANDING_HOMEPAGE_BG_IMAGE: banner.png\n\n\nCustomize MFE logos\n~~~~~~~~~~~~~~~~~~~~\n\nBy default, the MFEs will take the logos from the theme assets' main logo.\nHowever you can now customize the MFE logos by using these variables:\n\n- BRANDING_MFE_LOGO_URL: Main logo used in the headers\n- BRANDING_MFE_LOGO_TRADEMARK_URL: This is a URL to a logo for use in the footer.\n  This is a different environment variable than LOGO_URL (used in frontend-component-header)\n  to accommodate sites that would like to have additional trademark information on a logo\n  in the footer, such as a (tm) or (r) symbol.\n- BRANDING_MFE_LOGO_WHITE_URL: White logo over transparent background intended for\n  the login page and other sites where it printed over images or dark background.\n\nThe value of these settings must be a public accessible URL containing the image.\n\n\nCustom HTML block in home page\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nYou can add a custom HTML code to be rendered in the home page after the banner\nand before the list of courses by setting ``BRANDING_INDEX_ADDITIONAL_HTML``.\n\nCustomize HTML certificate\n~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nBy setting ``BRANDING_CERTIFICATE_HTML`` you can override the standard certificate with\nyour own HTML code.\n\nTip: Create a file with the HTML code (e.g., ``branding_certificate_html.html``)\nand then update the configuration from the file.\n\n::\n\n    tutor config save --set BRANDING_CERTIFICATE_HTML=\"$(cat branding_certificate_html.html)\"\n\n\nCustomizing static pages\n~~~~~~~~~~~~~~~~~~~~~~~~\n\nYou can set your own HTML content to the typical static pages by setting the corresponding\nvariable:\n\n- BRANDING_STATIC_TEMPLATE_404\n- BRANDING_STATIC_TEMPLATE_429\n- BRANDING_STATIC_TEMPLATE_ABOUT\n- BRANDING_STATIC_TEMPLATE_BLOG\n- BRANDING_STATIC_TEMPLATE_CONTACT\n- BRANDING_STATIC_TEMPLATE_DONATE\n- BRANDING_STATIC_TEMPLATE_EMBARGO\n- BRANDING_STATIC_TEMPLATE_FAQ\n- BRANDING_STATIC_TEMPLATE_HELP\n- BRANDING_STATIC_TEMPLATE_HONOR\n- BRANDING_STATIC_TEMPLATE_JOBS\n- BRANDING_STATIC_TEMPLATE_MEDIA_KIT\n- BRANDING_STATIC_TEMPLATE_NEWS\n- BRANDING_STATIC_TEMPLATE_PRESS\n- BRANDING_STATIC_TEMPLATE_PRIVACY\n- BRANDING_STATIC_TEMPLATE_SERVER_DOWN\n- BRANDING_STATIC_TEMPLATE_SERVER_ERROR\n- BRANDING_STATIC_TEMPLATE_SERVER_OVERLOADED\n- BRANDING_STATIC_TEMPLATE_SITEMAP\n- BRANDING_STATIC_TEMPLATE_TOS\n\nUse custom MFEs\n~~~~~~~~~~~~~~~\n\nYou can create alternate versions of existing MFEs or new ones.\nStarting from Palm, Tutor will not accept MFE repo overrides in the configuration file.\nThis plugin brings back that functionality, allowing you to specify the repo, port and\nversion of the MFEs to override in the configuration file without the need to create\na plugin just for this.\n\nTo override the MFE repo information, set the `BRANDING_MFE` variable as in this example:\n\n::\n\n    BRANDING_MFE:\n      authn:\n        port: 2001\n        repository: https://github.com/myorg/myfork\n        version: mybranch\n\n\nCustomizing MFE header and footer\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nTo use a custom header or footer, clone `frontend-component-header <https://github.com/openedx/frontend-component-header>`_\nand/or `frontend-component-footer <https://github.com/openedx/frontend-component-footer>`_,\npush to your custom repository and set the repository URL in the variables:\n\n- BRANDING_FRONTEND_COMPONENT_HEADER_REPO\n- BRANDING_FRONTEND_COMPONENT_FOOTER_REPO\n\n\nUsing a custom frontend-platform\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nSome advanced users might want to customize frontend-platform. This repo is imported by\nmost MFEs and brings some features common to all.\nA typical use case is to add a script in the <head> of all pages.\n\nTo use a custom repo for frontend-platform, set :code:`BRANDING_MFE_PLATFORM_REPO`. Use the same\nformat as would be used by :code:`npm install`. Add a :code:`#` and a branch name or version number.\n\nE.g.,\n\n::\n\n    BRANDING_MFE_PLATFORM_REPO: https://github.com/openedx/frontend-platform#v7.1.4\n\nNote that the version of frontend_platform must contain a \"prepare\" script with the same value as the\n\"build\" script in package.json. Also set the version to the actual version number of the upstream repo,\ninstead of the default \"1.0.0-semantically-released\". Finally, update package-lock.json with :code:`npm install`\nto match the latest changes before pushing.\n\n\nDownloading custom themes from a git repo\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIt is now possible to store one or more whole comprehensive themes in git repositories and download to the \nOpen edX instance. To do this, add the following configuration to config.yml:\n\n::\n\n    BRANDING_THEME_REPOS:\n      - name: <theme name>\n        url: <theme git URL, ending in .git>\n        version: <git branch or tag>\n      ...\n\nYou can add as many themes as you want, however only one can be active at a time.\nAfter adding this, save the configuration and rebuild the openedx image.\nThen run `tutor <variant> do init [--limit branding]` to enable the first theme.\n\nNotes: \n\n- theme repos are not templates; it means that other BRANDING\\_ settings, logos and fonts  will have no effect.\n  Include your own fonts, images, CSS and variables in the repo.\n- Do not use `theme` as a theme name. This is reserved for the base theme created from the branding template.\n- To change templates, go to `<LMS URL>/admin/theming/sitetheme/` and set the theme name to all sites.\n  Use `theme` as theme name to use the base theme.\n- MFE logos are taken by default from the theme logo. Restart the MFE service if you changed your logo in the theme\n  to make it available to the MFEs.\n\n\nCustomizing the Learner Dashboard\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nSince Quince release, the new learner-dashboard MFE includes a number of features that might not\nbe part of your use cases, and cannot be disabled with settings.\n\n- Hide the sidebar\n    The sidebar with the \"Looking for new challenges\" text can be hidden by setting\n    `BRANDING_HIDE_DASHBOARD_SIDEBAR` to True.\n\n- Hide the `Looking for a new challenge?` sidebar widget\n    You can leave the sidebar visible and hide only the widget by setting\n    `BRANDING_HIDE_LOOKING_FOR_CHALLENGE_WIDGET` to True.\n\n- Make the course image fit into the course card\n    By default, the images is clipped.\n\nUsage\n-----\n\n::\n\n    tutor plugins enable branding\n    tutor images build openedx\n    tutor images build mfe\n    tutor local do init --limit branding\n\nIn K8s deployments, you will need to push the docker images and restart Tutor.\n\nLicense\n-------\n\nThis software is licensed under the terms of the AGPLv3.\n",
    "bugtrack_url": null,
    "license": "AGPLv3",
    "summary": "Tutor plugin that simplifies branding an Open edX instance",
    "version": "19.0.3",
    "project_urls": {
        "Code": "https://github.com/aulasneo/tutor-contrib-brandingh",
        "Homepage": "https://github.com/aulasneo/tutor-contrib-branding",
        "Issue tracker": "https://github.com/aulasneo/tutor-contrib-branding/issues"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "0b42bcd1c4d024132eef70b3c9f8220eb7885c195b0e341a9b565dbb7750a3f5",
                "md5": "1cc76ceb39666b94a5ff9fbbc24727de",
                "sha256": "f77c228ad411bd1bedf780406556c9ed06346fe171a6d1a1f7e4a1b76cf5204d"
            },
            "downloads": -1,
            "filename": "tutor_contrib_branding-19.0.3-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "1cc76ceb39666b94a5ff9fbbc24727de",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7",
            "size": 108341,
            "upload_time": "2025-07-21T23:26:17",
            "upload_time_iso_8601": "2025-07-21T23:26:17.365511Z",
            "url": "https://files.pythonhosted.org/packages/0b/42/bcd1c4d024132eef70b3c9f8220eb7885c195b0e341a9b565dbb7750a3f5/tutor_contrib_branding-19.0.3-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "5dc0d35beb18545304be6b82495fd6f2f7ac86543646d8b275d78628e6bac6c7",
                "md5": "d12e690a89e405cd1643efff85847143",
                "sha256": "458e06192aa0265637d2a5c026b1cf094f4a390e302c33e470d7d067c028b22f"
            },
            "downloads": -1,
            "filename": "tutor_contrib_branding-19.0.3.tar.gz",
            "has_sig": false,
            "md5_digest": "d12e690a89e405cd1643efff85847143",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 78797,
            "upload_time": "2025-07-21T23:26:18",
            "upload_time_iso_8601": "2025-07-21T23:26:18.836695Z",
            "url": "https://files.pythonhosted.org/packages/5d/c0/d35beb18545304be6b82495fd6f2f7ac86543646d8b275d78628e6bac6c7/tutor_contrib_branding-19.0.3.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-21 23:26:18",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "aulasneo",
    "github_project": "tutor-contrib-branding",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "tutor-contrib-branding"
}
        
Elapsed time: 1.48991s