Feature flipper for Pyramid, Pylons, or TurboGears apps.
Project description
Switchboard
Switchboard is a Python WSGI app that makes it easy to toggle features in a variety of Python web frameworks. Created to enable A/B and user testing at SourceForge, it features an easy-to-use admin dashboard with powerful conditions for activating a particular feature.
What follows is an abbreviated version of Switchboard's full documentation.
Getting Started
Want to use Switchboard in your application? Keep reading. Interested in developing on Switchboard or running a small example locally? Take a look at the Development section.
Installing
Install Switchboard and its dependencies using pip:
pip install switchboard
Setup
Next, embed Switchboard and its admin UI within the application. Framework-specific details can be found in Switchboard's documentation.
Using Switches
Switchboard's basic unit is a switch. Every switch has a unique key associated with it and is either active (on) or inactive (off), so using it in code is simple:
>>> from switchboard import operator
>>> operator.is_active('foo')
False
In this case we checked to see if the "foo" switch was active. By default, Switchboard will auto-create any switches that don't already exist, such as "foo". Auto-created switches default to an inactive state. This just scratches the surface; there's so much more that a switch can do.
Development
These instructions cover setting Switchboard up locally for development and testing purposes. See Getting Started for notes on how to use Switchboard within a web application.
Prerequisites
- Virtualenv:
$ sudo easy_install virtualenv
Bootstrapping
- Make a virtualenv workspace:
$ virtualenv --no-site-packages .venv
- Activate the virtualenv:
$ source .venv/bin/activate
- Install all dependencies:
$ make install
Running the Example App
Switchboard includes an example application, which is handy both for doing development and for taking it for a test drive in a very simple environment. It also provides an example of setting Switchboard up to run within a Bottle-based application.
To run:
$ make example
At this point a very simple application is now running at
http://localhost:8080
and the admin UI is accessible at
http://localhost:8080/_switchboard/
. The application has one switch
(example
) and outputs text that tells you whether the switch is active.
Running Tests
Switchboard includes both unit tests and functional tests of the admin dashboard, using the example application.
To run the unit tests:
$ make test
The functional test requires both an updated Firefox and geckodriver:
$ npm install -g geckodriver
To run the functional tests:
$ make functional-test
Releasing
To distribute a new release of Switchboard:
- Update the version in
setup.py
, following Semantic Versioning. - Cut the release:
$ make release
Versioning
We use Semantic Versioning for versioning. For the versions available, see the tags on this repository.
Contributing
Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us.
Authors
- Kyle Adams - Initial work - kadams54
See also the list of contributors who participated in this project.
License
This project is licensed under the Apache License - see the LICENSE file for details.
Acknowledgments
Switchboard began life as a port of Disqus' Gargoyle, a feature flipper for Django. David Cramer's Pycon lightning talk on Gargoyle had me drooling for that same feature flipping fun in non-Django apps.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file switchboard-1.6.7.tar.gz
.
File metadata
- Download URL: switchboard-1.6.7.tar.gz
- Upload date:
- Size: 52.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.11.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | bfa9a856a59c0289ab35d39975e1a2bc498457bd843160ff35fba0f49806f172 |
|
MD5 | 6e4ac22c292310398e24980adbed2079 |
|
BLAKE2b-256 | ad85754b703574b99478e7b71e772580cbc6299d846f284c342437d8daadf0c1 |
File details
Details for the file switchboard-1.6.7-py3-none-any.whl
.
File metadata
- Download URL: switchboard-1.6.7-py3-none-any.whl
- Upload date:
- Size: 59.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.11.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 60efa2255d450491129eb073c32a42bd56136d32af57ec2fb357ffda41b817d4 |
|
MD5 | f7d86923661ae173324bb9139ff5db9b |
|
BLAKE2b-256 | 1b69f9c4eabcbc83edccfd8a0c19ad93464c062819c18361dc042ca36074461c |