Metadata-Version: 2.1
Name: featuretoggles
Version: 1.0.1
Summary: A package to configure feature flags and log the use of the toggles
Home-page: https://github.com/vwt-digital/feature-toggles
Author: VWT Digital
Author-email: support@vwt.digital
License: GPLv3+
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3.7
Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
Classifier: Operating System :: OS Independent
Classifier: Intended Audience :: Developers
Classifier: Natural Language :: English
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.7
Description-Content-Type: text/markdown
Requires-Dist: pyyaml (==5.3.1)

# Feature Toggles

This repo provides functionality for feature toggles in python code.


## What does this package do?

1. It allows to access the configured toggles like `toggles.feature1`
2. It logs all uses of the toggle
3. It logs a warning when toggles have exceeded their maximum lifetime

## How to use

### Configure the toggles
The toggles are configured in yaml.
```yaml
feature1:
    value: true
    name: New Thing Toggler
    description: This toggles the new thing on
    jira: DAN-123
    creation_date: 2020-10-12
    max_lifetime: 14
```
Required fields:
* `value`: a boolean setting the value of the toggle
* `name`: a human readable name for the toggle
* `jira`: the JIRA ticket that this toggle is linked to.
* `creation_date`: the date this toggle is introduced.

Optional fields:
* `description`: A description of the purpose and use of the toggle
* `max_lifetime`: The number of days this toggle is supposed to be in the code. 
A warning will be logged when this lifetime is exceeded. The default is 14 days.


### Declare the toggles
To use the configured toggles they need to be declared in the code like this:

```python
from featuretoggles import TogglesList

class ReleaseToggles(TogglesList):
    feature1: bool
    feature2: bool


toggles = ReleaseToggles('toggles.yaml')
```

The toggle can be used to gate particular bits of code like this:

```python
if toggles.feature1:
    print("Feature One Activated")
else:
    print("Feature One Deactivated")
```

## Demo
See [demo](demo/main.py) for a working example


