{ "info": { "author": "SignalFx, Inc", "author_email": "info@signalfx.com", "bugtrack_url": null, "classifiers": [ "Operating System :: OS Independent", "Programming Language :: Python" ], "description": "SignalFx SignalFlow\u2122 Analytics interactive command-line\n=======================================================\n\n``signalflow`` is a command-line client for SignalFx SignalFlow Analytics. It\nallows for executing, controlling and streaming live output from SignalFlow\nAnalytics computations, as well as batch non-streaming output.\n\nFor more information on the SignalFlow analytics language, visit the SignalFx\nDevelopers documentation at https://developers.signalfx.com.\n\nNote: The ``signalflow`` CLI is not an officially supported tool. It is\nintended to be an example of how to use the SignalFlow analytics language part \nof the ``signalfx-python`` library.\n\nInstallation\n------------\n\nTo install, along with the required dependencies, simply use ``pip``:\n\n.. code::\n\n $ pip install git+https://github.com/signalfx/signalflow-cli\n\nDemo\n----\n\n|demo|\n\n.. |demo| image:: https://asciinema.org/a/8g5vaxyjakol8onretxdqbfgv.png\n :target: https://asciinema.org/a/8g5vaxyjakol8onretxdqbfgv\n\nUsage\n-----\n\nThe ``signalflow`` command-line tool supports both interactive and\nnon-interactive operation modes. In interactive mode, it offers a prompt that\nallows for setting computation parameters and executing SignalFlow programs\nwhile visualizing their streaming output in real-time. The default display\nshows the live data, with a spark line of the last 10 values, for each received\ntime series. CSV output and graph output can also be optained by setting the\n`.output` parameter (see below \"Interactive mode usage\").\n\nIn non-interactive mode, ``signalflow`` reads the SignalFlow program text\n(either from stdin or from a file) and outputs the results the format specified\nby the ``--output`` command-line flag. By default, this uses the same live data\ndisplay as the interactive prompt. The available output modes are:\n\n- ``csv``; outputs the data in CSV format. The first column is a millisecond\n timestamp; other columns contain the value of each output time series for\n each of those times.\n\n This output will keep streaming unless a fixed stopped time has been\n specified (which can be either in the past or in the future).\n\n- ``graph``; generates CSV data and renders it as a graph in a window.\n\n- ``live``; shows the same live display as in interactive mode, just without\n the prompt around it. Computation parameters should be set via the\n appropriate command-line flags as necessary.\n\n\nFinally, the graphing can also be used from the provided standalone utility\n``csv-to-plot``, which reads CSV data from a file (or stdin) and renders the\ngraph. Using ``--output graph`` is the same as piping the output of ``--output\ncsv`` into ``csv-to-plot``:\n\n.. code::\n\n $ signalflow --start=-15m --stop=-1m --output=graph < program.txt\n $ signalflow --start=-15m --stop=-1m --output=csv < program.txt | csv-to-plot\n\nInteractive mode usage\n^^^^^^^^^^^^^^^^^^^^^^\n\n.. code::\n\n $ signalflow\n\nThe client will first ask you to enter your SignalFx credentials to obtain a\nsession token. If you want to avoid this everytime you use the client, write\nyour session token in `~/.sftoken`. See \"Obtaining your token\" below for\ndetails.\n\nAfter a greeting header, you should see the prompt ``->``. You can then enter\na SignalFlow program (even across multiple lines) and press ```` to\nexecute the program and visualize the results. Press ``^C`` at any time to\ninterrupt the stream, and again to exit the client.\n\nComputation parameters can be listed with the ``.`` command:\n\n.. code::\n\n -> .\n {'max_delay': None,\n 'output': 'live',\n 'resolution': None,\n 'start': '-1m',\n 'stop': None}\n\nYou can change one of those values with ``. ``:\n\n.. code::\n\n -> .start -15m\n -> .stop -1m\n -> .\n {'max_delay': None,\n 'output': 'live',\n 'resolution': None,\n 'start': '-15m',\n 'stop': '-1m'}\n\nTo reset a parameter to ``None`` (which usually means \"auto\"), use\n``.``:\n\n.. code::\n\n -> .stop\n -> .\n {'max_delay': None,\n 'output': 'live',\n 'resolution': None,\n 'start': '-15m',\n 'stop': None}\n\nShebang\n^^^^^^^\n\nWhen calling the client with the ``-x`` flag, the client will read the given\nfile as the input program and execute it directly. This allows for writing\nself-executable SignalFlow files that use a shebang to execute using the\nSignalFlow CLI client:\n\n.. code::\n\n #!signalflow -x\n data('cpu.utilization').mean().publish()\n\nObtaining your token\n--------------------\n\nTo obtain a session token, simply authenticate against the SignalFx API's\n``/v2/session`` endpoint as described in the API documentation:\nhttps://developers.signalfx.com/docs/session. Place the value of the\n`sf_accessToken` field in a file named `.sftoken` in your home directory. If\nyou don't have this file, or don't use the ``--token`` parameter, the\nSignalFlow CLI will prompt for your username and password and obtain a token\nfor you.\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/signalfx/signalflow-cli", "keywords": "", "license": "Apache Software License v2", "maintainer": "", "maintainer_email": "", "name": "signalflowcli", "package_url": "https://pypi.org/project/signalflowcli/", "platform": "", "project_url": "https://pypi.org/project/signalflowcli/", "project_urls": { "Homepage": "https://github.com/signalfx/signalflow-cli" }, "release_url": "https://pypi.org/project/signalflowcli/1.3.2/", "requires_dist": [ "ansicolor", "pandas (>=0.18.0)", "matplotlib", "requests", "prompt-toolkit (>=2.0.1)", "pygments", "pygments-signalflow (>=0.3)", "signalfx (>=1.0.14)", "tslib (>=1.5.1)", "six (>=1.10.0)" ], "requires_python": "", "summary": "SignalFx Python Library", "version": "1.3.2" }, "last_serial": 4556468, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "853e00bd740d0e72a25e9f99c9f8b254", "sha256": "a70051660fd73f60a440e112a1f6e919d98a9ee12d1bd3b50a789c9f10813585" }, "downloads": -1, "filename": "signalflowcli-1.0.0-py2-none-any.whl", "has_sig": false, "md5_digest": "853e00bd740d0e72a25e9f99c9f8b254", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 15195, "upload_time": "2016-06-03T23:13:45", "url": "https://files.pythonhosted.org/packages/1f/4b/d0284c8e9c9b577d98f8f51eb125f4bb4bf2aba46520da443b02336cd5e8/signalflowcli-1.0.0-py2-none-any.whl" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "e2b6b66ad487e5ad050794884e965c91", "sha256": "4be2eeebfdaa65443b0673d450b3d4c36fcecb7985a0347218a4ec9c34c21d28" }, "downloads": -1, "filename": "signalflowcli-1.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e2b6b66ad487e5ad050794884e965c91", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 17009, "upload_time": "2016-09-29T12:44:36", "url": "https://files.pythonhosted.org/packages/11/d6/7ae8d9f120a6d7c5ba9f8bebd6d80c06bae42764fc59e2c5842a3c6ae49d/signalflowcli-1.2.0-py2.py3-none-any.whl" } ], "1.2.1": [ { "comment_text": "", "digests": { "md5": "2ca15ff3a145aaf58ee259023b6a7d1e", "sha256": "7f5626365f724d4ffa55f98ebe5dc5d4f06d923bda52b7a2316d34512c10139c" }, "downloads": -1, "filename": "signalflowcli-1.2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2ca15ff3a145aaf58ee259023b6a7d1e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 17336, "upload_time": "2016-10-20T18:50:44", "url": "https://files.pythonhosted.org/packages/c9/e7/cd0debaa91344edf89ea911d475cf99f767b649d2f278aceea67d6d381b1/signalflowcli-1.2.1-py2.py3-none-any.whl" } ], "1.2.2": [ { "comment_text": "", "digests": { "md5": "50bea918b039e7fab53a976e06ca70e0", "sha256": "3a2d8fa0777f75ab3e86a98f95124d1f138b013447a252624997210a229fe6da" }, "downloads": -1, "filename": "signalflowcli-1.2.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "50bea918b039e7fab53a976e06ca70e0", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 17364, "upload_time": "2016-11-21T20:38:10", "url": "https://files.pythonhosted.org/packages/ab/d2/edbf7949a523a9bb580d8985bcff867bd46b45d56533207ada6a64962d54/signalflowcli-1.2.2-py2.py3-none-any.whl" } ], "1.2.3": [ { "comment_text": "", "digests": { "md5": "fabd7642362b4dd3bce661f15e7c3076", "sha256": "d8d0335fcab99edba71f6ecff30e67653affeac87a8b879e66878505e467c2c9" }, "downloads": -1, "filename": "signalflowcli-1.2.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "fabd7642362b4dd3bce661f15e7c3076", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 17407, "upload_time": "2016-12-02T21:33:10", "url": "https://files.pythonhosted.org/packages/c9/f3/4be5f66c957287bce0587bea290ed380dab1c86f21bda9b9cf759f0f1954/signalflowcli-1.2.3-py2.py3-none-any.whl" } ], "1.2.4": [ { "comment_text": "", "digests": { "md5": "7a2e97c4e99d5eb6d955320d90c414ab", "sha256": "a1902b10be68e3c5b72ad36a02b1211cafe1d47f94f5e0d431b84c674836f3ac" }, "downloads": -1, "filename": "signalflowcli-1.2.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7a2e97c4e99d5eb6d955320d90c414ab", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 17413, "upload_time": "2016-12-08T01:10:41", "url": "https://files.pythonhosted.org/packages/2e/74/56639c44ccdf0c19c56ee87459eec59eafe478a56d43d3c4005fce10dbd2/signalflowcli-1.2.4-py2.py3-none-any.whl" } ], "1.2.5": [ { "comment_text": "", "digests": { "md5": "84a2472f5f34ba7681879fd7a2302d0b", "sha256": "ddd8324d422f9d15eab41998484fa5cb9097f2214d8fc7989bafae592c45d215" }, "downloads": -1, "filename": "signalflowcli-1.2.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "84a2472f5f34ba7681879fd7a2302d0b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 17412, "upload_time": "2016-12-08T16:43:30", "url": "https://files.pythonhosted.org/packages/c7/27/502cb5dd3d35a23260abef2f3b09c8a7f631f6338caa59283aad5a6acf1c/signalflowcli-1.2.5-py2.py3-none-any.whl" } ], "1.2.6": [ { "comment_text": "", "digests": { "md5": "62ffdd6b708579644d560770a6176186", "sha256": "b360e7cba0117155850cba76830d47edee2a459396ba82738f5820dac7a3209c" }, "downloads": -1, "filename": "signalflowcli-1.2.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "62ffdd6b708579644d560770a6176186", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 17452, "upload_time": "2017-01-19T22:08:58", "url": "https://files.pythonhosted.org/packages/a5/3e/70fc0c1484ffa56334888d2c15402099cca399ba50953ee1e1a602c2ccc7/signalflowcli-1.2.6-py2.py3-none-any.whl" } ], "1.3.0": [ { "comment_text": "", "digests": { "md5": "91b1acff6b9953975553bfb9e6b3bc64", "sha256": "df7e096743f8528bb3295281937068372f75de59e75034663bacdc4190926498" }, "downloads": -1, "filename": "signalflowcli-1.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "91b1acff6b9953975553bfb9e6b3bc64", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14452, "upload_time": "2018-07-03T19:05:20", "url": "https://files.pythonhosted.org/packages/f7/b3/bf28c5fe9e29ad5c97763a4b1da11273707444b70e78ad155a10f2c6a1ea/signalflowcli-1.3.0-py2.py3-none-any.whl" } ], "1.3.1": [ { "comment_text": "", "digests": { "md5": "cd50afcd564e0bcceb47fe271b37173f", "sha256": "cbd870fa6870f141e2e4659db005718b61df49916085b32b035f8df55f823953" }, "downloads": -1, "filename": "signalflowcli-1.3.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "cd50afcd564e0bcceb47fe271b37173f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14471, "upload_time": "2018-07-26T04:04:19", "url": "https://files.pythonhosted.org/packages/45/99/288043a381b8038daf601fe36bfe8786b96529672379307ec3bcbddac4ae/signalflowcli-1.3.1-py2.py3-none-any.whl" } ], "1.3.2": [ { "comment_text": "", "digests": { "md5": "63e7f2f99e5044a5c9069749ecfb0cea", "sha256": "ccbce0d9c99c85e3ca00c2d3bec1708462b601b8b0e5cbbbe2cd46319e610837" }, "downloads": -1, "filename": "signalflowcli-1.3.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "63e7f2f99e5044a5c9069749ecfb0cea", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 18644, "upload_time": "2018-12-03T16:54:25", "url": "https://files.pythonhosted.org/packages/d6/ff/3dece1b8573948eebd764a7bf22aa4014ebba268eeabf09ec8e6625aeb80/signalflowcli-1.3.2-py2.py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "63e7f2f99e5044a5c9069749ecfb0cea", "sha256": "ccbce0d9c99c85e3ca00c2d3bec1708462b601b8b0e5cbbbe2cd46319e610837" }, "downloads": -1, "filename": "signalflowcli-1.3.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "63e7f2f99e5044a5c9069749ecfb0cea", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 18644, "upload_time": "2018-12-03T16:54:25", "url": "https://files.pythonhosted.org/packages/d6/ff/3dece1b8573948eebd764a7bf22aa4014ebba268eeabf09ec8e6625aeb80/signalflowcli-1.3.2-py2.py3-none-any.whl" } ] }