Metadata-Version: 1.1
Name: edx-toggles
Version: 4.0.0
Summary: Library and utilities for feature toggles
Home-page: https://github.com/edx/edx-toggles
Author: edX
Author-email: oscm@edx.org
License: AGPL 3.0
Description: edx-toggles
        =============================
        
        |pypi-badge| |ci-badge| |codecov-badge| |doc-badge| |pyversions-badge|
        |license-badge|
        
        Library and utilities for implementing and reporting on feature toggles.
        
        Documentation is on `Read the Docs`_.  Code repository is on `GitHub`_.
        
        .. _Read the Docs: https://edx.readthedocs.io/projects/edx-toggles/en/latest/readme.html
        .. _GitHub: https://github.com/edx/edx-toggles
        
        See the `scripts README`_ for more information on the scripts for reporting on the status of
        feature toggles.
        
        .. _scripts README: https://github.com/edx/edx-toggles/blob/master/scripts/README.rst
        
        License
        -------
        
        The code in this repository is licensed under the AGPL 3.0 unless
        otherwise noted.
        
        Please see ``LICENSE.txt`` for details.
        
        How To Contribute
        -----------------
        
        Contributions are very welcome.
        
        Please read `How To Contribute <https://github.com/edx/edx-platform/blob/master/CONTRIBUTING.rst>`_ for details.
        
        Even though they were written with ``edx-platform`` in mind, the guidelines
        should be followed for Open edX code in general.
        
        PR description template should be automatically applied if you are sending PR from github interface; otherwise you
        can find it it at `PULL_REQUEST_TEMPLATE.md <https://github.com/edx/edx-toggles/blob/master/.github/PULL_REQUEST_TEMPLATE.md>`_
        
        Issue report template should be automatically applied if you are sending it from github UI as well; otherwise you
        can find it at `ISSUE_TEMPLATE.md <https://github.com/edx/edx-toggles/blob/master/.github/ISSUE_TEMPLATE.md>`_
        
        Reporting Security Issues
        -------------------------
        
        Please do not report security issues in public. Please email security@edx.org.
        
        Getting Help
        ------------
        
        Have a question about this repository, or about Open edX in general?  Please
        refer to this `list of resources`_ if you need any assistance.
        
        .. _list of resources: https://open.edx.org/getting-help
        
        
        .. |pypi-badge| image:: https://img.shields.io/pypi/v/edx-toggles.svg
            :target: https://pypi.python.org/pypi/edx-toggles/
            :alt: PyPI
        
        .. |ci-badge| image:: https://github.com/edx/edx-toggles/workflows/Python%20CI/badge.svg?branch=master
            :target: https://github.com/edx/edx-toggles/actions?query=workflow%3A%22Python+CI%22
            :alt: Github CI
        
        .. |codecov-badge| image:: http://codecov.io/github/edx/edx-toggles/coverage.svg?branch=master
            :target: http://codecov.io/github/edx/edx-toggles?branch=master
            :alt: Codecov
        
        .. |doc-badge| image:: https://readthedocs.org/projects/edx-toggles/badge/?version=latest
            :target: http://edx-toggles.readthedocs.io/en/latest/
            :alt: Documentation
        
        .. |pyversions-badge| image:: https://img.shields.io/pypi/pyversions/edx-toggles.svg
            :target: https://pypi.python.org/pypi/edx-toggles/
            :alt: Supported Python versions
        
        .. |license-badge| image:: https://img.shields.io/github/license/edx/edx-toggles.svg
            :target: https://github.com/edx/edx-toggles/blob/master/LICENSE.txt
            :alt: License
        
        
        Change Log
        ----------
        
        ..
           All enhancements and patches to edx_toggles 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
        ~~~~~~~~~~
        
        [4.0.0] - 2021-01-24
        ~~~~~~~~~~~~~~~~~~~~
        
        * BREAKING CHANGE: Remove now unnecessary ``edx_toggles.toggles.__future__`` module.
        * BREAKING CHANGE: Remove the following methods and properties: ``LegacyWaffleFlagNamespace.set_monitor_value``,  ``LegacyWaffleSwitch.switch_name``, ``LegacyWaffleSwitch.namespaced_switch_name``, ``LegacyWaffleFlag.flag_name``, ``LegacyWaffleFlag.namespaced_flag_name``, ``LegacyWaffleFlag.waffle_namespace``.
        * BREAKING CHANGE: Remove ``LegacyWaffleFlagNamespace._set_monitor_value`` method
        * Monitoring:
        
            * Add the following custom attribute: "deprecated_legacy_waffle_class"
            * Remove the following custom attributes: "deprecated_module_not_supplied", "warn_flag_no_request_return_value", "deprecated_waffle_method", "deprecated_waffle_legacy_method", "deprecated_compatible_legacy_waffle_class".
        * Rename ``toggles.internal.legacy.Waffle*`` classes to ``toggles.internal.legacy.LegacyWaffle*``.
        
        [3.1.0] - 2021-01-18
        ~~~~~~~~~~~~~~~~~~~~
        
        * Dropped support for ``Python3.5``.
        * Fix ``toggle_type`` column value from the toggle state report for the ``SettingToggle`` and ``SettingDictToggle`` classes: the column is now set to "django_settings".
        
        [2.1.0] - 2021-01-12
        ~~~~~~~~~~~~~~~~~~~~
        
        * Stop monitoring waffle flag values via ``WaffleFlag.set_monitor_value`` calls. The deprecated method is preserved for backward compatibility.
        
        
        [2.0.0] - 2020-11-05
        ~~~~~~~~~~~~~~~~~~~~
        
        * BREAKING CHANGE: The ``WaffleFlagNamespace`` and ``WaffleSwitchNamespace`` classes have been removed. You can either rename to ``LegacyWaffleFlagNamespace`` and ``LegacyWaffleSwitchNamespace``, which are deprecated, or you can move to the newer waffle classes that no longer use these Namespace classes (see below).
        * BREAKING CHANGE: The ``WaffleFlag`` and ``WaffleSwitch`` classes exposed in ``toggles`` no longer use the Namespace classes and are now the classes which were previously only available in ``toggles.__future__``.
        
            * If you were importing from ``edx_toggles.toggles.__future__`` before, then you simply need to import from ``edx_toggles.toggles``. Importing from ``__future__`` will continue to work but will trigger a deprecation warning.
            * If you were importing from ``edx_toggles.toggles``, then you either need to:
        
                * Migrate your legacy namespaced classes to the new-style classes (see the new behaviour below), or
                * Import ``LegacyWaffleFlag`` instead of ``WaffleFlag`` and ``LegacyWaffleSwitch`` instead of ``WaffleSwitch``. Note that these classes will be removed soon, so it's preferable to migrate to the new classes already.
        
            * The new Waffle classes introduce the following changes:
        
                * They no longer use Namespace classes like ``WaffleSwitchNamespace`` or ``WaffleFlagNamespace``.
                * The ``WaffleSwitchNamespace._namespaced_name`` and ``WaffleFlagNamespace._namespaced_name`` methods are replaced by the ``WaffleSwitch.name`` and ``WaffleFlag.name`` attributes.
                * The ``WaffleSwitchNamespace.is_enabled`` method is replaced by the ``WaffleSwitch.is_enabled`` method.
                * The ``WaffleSwitchNamespace.set_request_cache_with_short_name`` method has no replacement because an alternative solution should be found.  You could (but really shouldn't) use the ``WaffleSwitch._cached_switches`` property.
                * The ``WaffleSwitch.switch_name`` attribute is deprecated: switches should only ever be referred to using their fully namespaced names.
                * The ``WaffleSwitch.switch_name`` attribute no longer exists. Switches should only ever be referred to using their fully namespaced names.  If you need the non-namespaced name, it must be parsed from the namespaced name.
                * The ``WaffleFlagNamespace.is_flag_active`` method is replaced by ``WaffleFlag.is_enabled``.
                * The ``WaffleFlagNamespace._monitor_value`` method is replaced by ``WaffleFlag.set_monitor_value``.
                * The ``WaffleFlagNamespace._cached_flags`` attribute is replaced by the ``WaffleFlag.cached_flags`` method.
                * The ``WaffleFlag`` and ``WaffleSwitch`` ``module_name`` constructor argument is now mandatory.
                * The ``WaffleFlag.flag_name`` attribute is deprecated.
                * The ``WaffleFlag.flag_name`` attribute no longer exists. Flags should only ever be referred to using their fully namespaced names.  If you need the non-namespaced name, it must be parsed from the namespaced name.
                * The ``WaffleFlag.waffle_namespace`` attribute no longer exists, since there is no longer a separate namespace object.
        
        [1.2.2] - 2020-12-22
        ~~~~~~~~~~~~~~~~~~~~
        
        More improvements to monitoring of legacy waffle class imports.
        
        * Add ``deprecated_incompatible_legacy_waffle_class`` custom attribute to any class (including subclasses), using the backward-incompatible imports that will be removed in 2.0.0.
        * Add ``deprecated_compatible_legacy_waffle_class`` custom attribute to any class (including subclasses) using the legacy classes compatible with 2.0.0 imports, but which should be removed in 3.0.0 (or some future major version).
        * Remove ``deprecated_edx_toggles_waffle`` custom attribute. In two cases, it was replaced by the new ``*_legacy_waffle_class`` custom attributes.  In one case, it was replaced with the already existing and more appropriate ``deprecated_waffle_legacy_method`` custom attribute.
        
        [1.2.1] - 2020-12-17
        ~~~~~~~~~~~~~~~~~~~~
        
        * Improve monitoring of legacy Waffle class imports. We should watch for "edx_toggles.toggles.internal.waffle.legacy.WaffleSwitch" custom attributes.
        
        [1.2.0] - 2020-11-05
        ~~~~~~~~~~~~~~~~~~~~
        
        * Start the deprecation process of the waffle namespace classes:
        
          * Introduce LegacyWaffleFlag, LegacyWaffleSwitch for use with namespaces.
          * Begin deprecation/refactoring of namespacing code, including deprecation monitoring and warnings.
          * Note: WaffleFlag and WaffleSwitch still use namespaces as well (for now).
          * Introduce the ``toggles.__future__`` module for applications that need to be forward-compatible right away.
        
        [1.1.1] - 2020-10-27
        ~~~~~~~~~~~~~~~~~~~~
        
        * Fix cache-checking in WaffleSwitchNamespace
        
        [1.1.0] - 2020-10-23
        ~~~~~~~~~~~~~~~~~~~~
        
        * Backport ``override_waffle_switch`` test utility function from edx-platform
        
        [1.0.0] - 2020-10-13
        ~~~~~~~~~~~~~~~~~~~~
        
        * Fix missing ``module_name`` argument in ``SettingDictToggle`` constructor.
        * Extract waffle classes from edx-platform and move them here following ADR `#2 <docs/decisions/0002-application-toggle-state.rst>`__, `#3 <docs/decisions/0003-django-setting-toggles.rst>`__, `#4 <docs/decisions/0004-toggle-api.rst>`__. This does not introduce backward-incompatible changes, *yet*.
        * Fix pinned requirements and incorrect root url that overrode edx-platform's.
        
        [0.3.0] - 2020-09-23
        ~~~~~~~~~~~~~~~~~~~~
        
        First release to PyPI (2020-10-02)
        
        * Implement ``SettingToggle`` and ``SettingDictToggle``.
        
        [0.2.2] - 2020-09-11
        ~~~~~~~~~~~~~~~~~~~~
        
        * Document the writing of feature toggles annotations.
        
        [0.2.1] - 2020-08-03
        ~~~~~~~~~~~~~~~~~~~~
        
        * Add ADR for the purpose of this repository.
        * Add ADR for implementing a Toggle State endpoint.
        * Add toggles report with CSV output using new CsvRenderer.
        * Add CourseWaffleFlag and course override data to toggle report.
        * Add output for waffle flag course overrides to data gatherer
        * Add additional options to scripts/feature_toggle_report_generator
        
            * filter toggle types and envs, add github_url, and change name of ida in report
        
        * Modified scripts/feature_toggle_report_generator to work based on envs
        * Removed confluence integration
        * Moved HtmlRenderer to its own file
        * Add ADR for new SettingToggle. (see 0003-django-setting-toggles.rst)
        
        [0.2.0] - 2020-05-27
        ~~~~~~~~~~~~~~~~~~~~
        
        * Removed caniusepython3.
        
        [0.2.0] - 2020-05-05
        ~~~~~~~~~~~~~~~~~~~~
        
        * Added support for python 3.8 and dropped support Django versions older than 2.2
        
        [0.1.0] - 2019-04-08
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        
        * Initial version
        
Keywords: Django edx
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Framework :: Django
Classifier: Framework :: Django :: 2.2
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
