{ "info": { "author": "Solid State Group", "author_email": "bullettrain@solidstategroup.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: BSD License", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.0", "Programming Language :: Python :: 3.1", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "\n\n# Bullet Train Client\n\nThe SDK clients for Python [https://bullet-train.io/](https://www.bullet-train.io/). Bullet Train allows you to manage feature flags and remote config across multiple projects, environments and organisations.\n\n## Getting Started\n\nThese instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See running in production for notes on how to deploy the project on a live system.\n\n## Installing\n\n### VIA pip\n\n```\npip install bullet-train\n```\n\n## Usage\n**Retrieving feature flags for your project**\n\n**For full documentation visit [https://docs.bullet-train.io](https://docs.bullet-train.io)**\n\n```\nfrom bullet_train import BulletTrain;\n\nbt = BulletTrain(environment_id=\"\")\n\nif bt.has_feature(\"header\", ''):\n if bt.feature_enabled(\"header\"):\n # Show my awesome cool new feature to the world\n\nif bt.has_feature(\"header\"):\n if bt.feature_enabled(\"header\"):\n # Show my awesome cool new feature to the world\n\nvalue = bt.get_value(\"header\", '')\n\nvalue = bt.get_value(\"header\")\n\nbt.set_trait(\"accept-cookies\", \"true\", \"ben@bullet-train.io\"))\nbt.get_trait(\"accept-cookies\", \"ben@bullet-train.io\"))\n```\n\n**Available Options**\n\n| Property | Description | Required | Default Value |\n| ----- |:-------------| -----:| -----:|\n| ```environment_id``` | Defines which project environment you wish to get flags for. *example ACME Project - Staging.* | **YES** | None\n| ```api``` | Use this property to define where you're getting feature flags from, e.g. if you're self hosting. | **NO** | https://api.bullet-train.io/api/\n\n**Available Functions**\n\n| Function | Description | \n| ------------- |:-------------:|\n| ```has_feature(key)``` | Get the value of a particular feature e.g. ```bt.has_feature(\"powerUserFeature\") // true```\n| ```has_feature(key, user_id)``` | Get the value of a particular feature for a user e.g. ```bt.has_feature(\"powerUserFeature\", 1234) // true```\n| ```get_value(key)``` | Get the value of a particular feature e.g. ```bt.get_value(\"font_size\") // 10```\n| ```get_value(key, userId)``` | Get the value of a particular feature for a specified user e.g. ```bt.get_value(\"font_size\", 1234) // 15```\n| ```get_flags()``` | Trigger a manual fetch of the environment features, returns a list of flag objects, see below for returned data\n| ```get_flags_for_user(1234)``` | Trigger a manual fetch of the environment features with a given user id, returns a list of flag objects, see below for returned data\n\n\n**Identifying users**\n\nIdentifying users allows you to target specific users from the [Bullet Train dashboard](https://www.bullet-train.io/).\nYou can include an optional user identifier as part of the `has_feature` and `get_value` methods to retrieve unique user flags and variables.\n\n**Flags data structure**\n\n| Field | Description | Type |\n| ---- | ------------ | ---- |\n| id | Internal id of feature state | Integer |\n| enabled | Whether feature is enabled or not | Boolean |\n| environment | Internal ID of environment | Integer | \n| feature_state_value | Value of the feature | Any - determined based on data input on [bullet-train.io](https://bullet-train.io). |\n| feature | Feature object - see below for details | Object |\n\n\n**Feature data structure**\n\n| Field | Description | Type |\n| ---- | --------------- | --- |\n| id | Internal id of feature | Integer |\n| name | Name of the feature (sometimes referred to as key or ID) | String |\n| description | Description of the feature | String |\n| type | Feature Type. Can be FLAG or CONFIG | String |\n| created_date | Date feature was created | Datetime |\n| inital_value | The initial / default value set for all feature states on creation | String |\n| project | Internal ID of the associated project | Integer | \n\n\n## Contributing\n\nPlease read [CONTRIBUTING.md](https://gist.github.com/kyle-ssg/c36a03aebe492e45cbd3eefb21cb0486) for details on our code of conduct, and the process for submitting pull requests to us.\n\n## Getting Help\n\nIf you encounter a bug or feature request we would like to hear about it. Before you submit an issue please search existing issues in order to prevent duplicates. \n\n## Get in touch\n\nIf you have any questions about our projects you can email projects@solidstategroup.com.\n\n## Useful links\n\n[Website](https://bullet-train.io)\n\n[Documentation](https://docs.bullet-train.io/)\n\n[Code Examples](https://github.com/SolidStateGroup/bullet-train-docs)\n\n[Youtube Tutorials](https://www.youtube.com/channel/UCki7GZrOdZZcsV9rAIRchCw)\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/solidstategroup/bullet-train-python-client", "keywords": "feature,flag,bullet,train,remote,config", "license": "BSD3", "maintainer": "", "maintainer_email": "", "name": "bullet-train", "package_url": "https://pypi.org/project/bullet-train/", "platform": "", "project_url": "https://pypi.org/project/bullet-train/", "project_urls": { "Homepage": "https://github.com/solidstategroup/bullet-train-python-client" }, "release_url": "https://pypi.org/project/bullet-train/1.0.4/", "requires_dist": [ "requests (>=2.19.1)" ], "requires_python": "", "summary": "Bullet Train Python SDK", "version": "1.0.4" }, "last_serial": 5782680, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "f158f5ab11bd155340039a281fcfef94", "sha256": "e0a6106f53afadbbf4f04d8cf6424be7e791c783d76e6be626e61061e8d3bf16" }, "downloads": -1, "filename": "bullet_train-1.0.0-py2-none-any.whl", "has_sig": false, "md5_digest": "f158f5ab11bd155340039a281fcfef94", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 2882, "upload_time": "2018-06-19T10:40:28", "url": "https://files.pythonhosted.org/packages/9a/ea/9af4e03273e71ed25ff41879813726cd819c36d1c65c4c8ba33b7881a654/bullet_train-1.0.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5aa1a69d51f4e63f0525467688a05d6d", "sha256": "38e99340d3467392c1d367a86aee2f0b3d7d9b5e3252db54357a217e283b262d" }, "downloads": -1, "filename": "bullet_train-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "5aa1a69d51f4e63f0525467688a05d6d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3789, "upload_time": "2018-06-19T10:40:29", "url": "https://files.pythonhosted.org/packages/4d/31/9258abe8fc1d91f6f51f60c1addd64ac657fe9c4d86405436d5fb1fa0456/bullet_train-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "338a851013d9bb69813f148f4fc085d2", "sha256": "0408328ea1321de3f96b817163fd3b8f6e62962e6256dcf229a1deb324d2bd10" }, "downloads": -1, "filename": "bullet-train-1.0.0.tar.gz", "has_sig": false, "md5_digest": "338a851013d9bb69813f148f4fc085d2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2318, "upload_time": "2018-06-19T10:40:31", "url": "https://files.pythonhosted.org/packages/4b/d9/263c858a3350826aad9dcea2cf8ec0934120c494ed61688e14cf6f8f3905/bullet-train-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "f97a58261f58819e7173f51c5a9e7b29", "sha256": "ac07ead73591de9e9567fec9cfc6e38a2405059285a5ac95de8a7993371df487" }, "downloads": -1, "filename": "bullet_train-1.0.1-py2-none-any.whl", "has_sig": false, "md5_digest": "f97a58261f58819e7173f51c5a9e7b29", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 4594, "upload_time": "2018-06-19T11:01:35", "url": "https://files.pythonhosted.org/packages/eb/e4/8b196692cf7f2b4440efd4668d001c2b3191d8ecc3830b85cb319671de4b/bullet_train-1.0.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8db39c84e13c69f5c24f43558bc1df96", "sha256": "38f14c9d52cc2275a794b29a8931e3788dff8ada5d9993367360fb918aa7531b" }, "downloads": -1, "filename": "bullet_train-1.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "8db39c84e13c69f5c24f43558bc1df96", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7243, "upload_time": "2018-06-19T11:01:36", "url": "https://files.pythonhosted.org/packages/d5/6a/bc09c87338aa02b9bf72c1b71db4a14b0d9b03d97dbcb47406d8af563246/bullet_train-1.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "259209f647f31361ab31e538ac5aa0ba", "sha256": "a3e89af73c64f3521c68e4fce7d0e263576126f6214945b64a90f7d35d9e11cb" }, "downloads": -1, "filename": "bullet-train-1.0.1.tar.gz", "has_sig": false, "md5_digest": "259209f647f31361ab31e538ac5aa0ba", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4115, "upload_time": "2018-06-19T11:01:38", "url": "https://files.pythonhosted.org/packages/6d/db/df659ee3fc937d6620971993d049fae7e3e4eae6b364432b13ca2871256f/bullet-train-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "5940446af0ae5e920975d9ca871389b1", "sha256": "819927067b8205bd30783ab62c8c74ad57f9fff5117a37e2a0fc07fb9940ba98" }, "downloads": -1, "filename": "bullet_train-1.0.2-py2-none-any.whl", "has_sig": false, "md5_digest": "5940446af0ae5e920975d9ca871389b1", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 4645, "upload_time": "2018-06-20T10:18:59", "url": "https://files.pythonhosted.org/packages/ba/cd/e304db72dad44665c88a20a72ce839836697dad9370eb2556e0f7a1935ad/bullet_train-1.0.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c42528e2adbf62ed9e329f726ebd38dc", "sha256": "a0b721ed3a29db0903299583334672ba99553dc841ff8e5cabb90529369fc02b" }, "downloads": -1, "filename": "bullet_train-1.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "c42528e2adbf62ed9e329f726ebd38dc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7291, "upload_time": "2018-06-20T10:19:00", "url": "https://files.pythonhosted.org/packages/d6/a1/767c7d76eeac0575f536db7d1bf5e6a5c826b09e26b1e268fb71fa76d000/bullet_train-1.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6e305848a65bd780a1e1a784c87b4453", "sha256": "ccf1981ccb3f5a446c5d7cd1124c021794c5e02de01ff4f36ce8ccb958570152" }, "downloads": -1, "filename": "bullet-train-1.0.2.tar.gz", "has_sig": false, "md5_digest": "6e305848a65bd780a1e1a784c87b4453", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4209, "upload_time": "2018-06-20T10:19:03", "url": "https://files.pythonhosted.org/packages/bc/b8/9b1e056400a271383a7f2747f51acc9f2b885af2853f7ea490259befc8d6/bullet-train-1.0.2.tar.gz" } ], "1.0.4": [ { "comment_text": "", "digests": { "md5": "32eba826c89465510ebebfb503d8197f", "sha256": "82ffee1edf0790b35eba3f0e145a6afc562d4d40840e5c2f70c29d5367f4ebc8" }, "downloads": -1, "filename": "bullet_train-1.0.4-py2-none-any.whl", "has_sig": false, "md5_digest": "32eba826c89465510ebebfb503d8197f", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 5210, "upload_time": "2019-09-04T17:42:45", "url": "https://files.pythonhosted.org/packages/90/aa/37a82d79c3cea716372ee8431c765d572d548392b47cd0ca8b5cde0d4117/bullet_train-1.0.4-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "df5091dd4c8d60517beb05e226cc3aa1", "sha256": "5e449189ce3f44517013df013f3fd67277db517804d493d73ffe561aba76906c" }, "downloads": -1, "filename": "bullet_train-1.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "df5091dd4c8d60517beb05e226cc3aa1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5209, "upload_time": "2019-09-04T17:42:47", "url": "https://files.pythonhosted.org/packages/f4/2a/e7049e8834952a5f17e953a45be91ffd5eeb890894bf33a79f40854b3f28/bullet_train-1.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b36720ffd20d193022e65fb23f3e9843", "sha256": "7b588a8d7b29675f1a14287f2db1fd3765e8cd75158a2f81b2444884a5801ec3" }, "downloads": -1, "filename": "bullet-train-1.0.4.tar.gz", "has_sig": false, "md5_digest": "b36720ffd20d193022e65fb23f3e9843", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4787, "upload_time": "2019-09-04T17:42:49", "url": "https://files.pythonhosted.org/packages/01/6d/ca74ee7df923755323af68e580eebf6febff1c1cdb10a99f1507d3835ded/bullet-train-1.0.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "32eba826c89465510ebebfb503d8197f", "sha256": "82ffee1edf0790b35eba3f0e145a6afc562d4d40840e5c2f70c29d5367f4ebc8" }, "downloads": -1, "filename": "bullet_train-1.0.4-py2-none-any.whl", "has_sig": false, "md5_digest": "32eba826c89465510ebebfb503d8197f", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 5210, "upload_time": "2019-09-04T17:42:45", "url": "https://files.pythonhosted.org/packages/90/aa/37a82d79c3cea716372ee8431c765d572d548392b47cd0ca8b5cde0d4117/bullet_train-1.0.4-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "df5091dd4c8d60517beb05e226cc3aa1", "sha256": "5e449189ce3f44517013df013f3fd67277db517804d493d73ffe561aba76906c" }, "downloads": -1, "filename": "bullet_train-1.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "df5091dd4c8d60517beb05e226cc3aa1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5209, "upload_time": "2019-09-04T17:42:47", "url": "https://files.pythonhosted.org/packages/f4/2a/e7049e8834952a5f17e953a45be91ffd5eeb890894bf33a79f40854b3f28/bullet_train-1.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b36720ffd20d193022e65fb23f3e9843", "sha256": "7b588a8d7b29675f1a14287f2db1fd3765e8cd75158a2f81b2444884a5801ec3" }, "downloads": -1, "filename": "bullet-train-1.0.4.tar.gz", "has_sig": false, "md5_digest": "b36720ffd20d193022e65fb23f3e9843", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4787, "upload_time": "2019-09-04T17:42:49", "url": "https://files.pythonhosted.org/packages/01/6d/ca74ee7df923755323af68e580eebf6febff1c1cdb10a99f1507d3835ded/bullet-train-1.0.4.tar.gz" } ] }