# FIXations!
## A set of tools to handle FIX protocol data
- **fix_tags** - _explore FIX tags and their associated values either as CLI output or a GUI-like textual interface_
- **fix_parse_log** - _extract FIX lines from a (log) file and present them in a nicely formatted grid_
- **webfix** - _present copy-n-paste'd FIX lines into a nicely formatted grid_
### Installation
`pip3 install fixations`
### Examples of running these applications
#### fix_tags
_Click on the link below since it was too small to asciicast in this page_
[![asciicast](https://asciinema.org/a/551910.svg)](https://asciinema.org/a/551910?autoplay=1&t=2)
#### fix_parse_log
![fix_parse_log_demo](images/fix_parse_log_demo.gif)
#### webfix
Webfix needs to be used with either Flask (for dev purposes)
```commandline
$ python -m flask --app fixations.webfix run
* Serving Flask app 'fixations.webfix'
* Debug mode: off
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Running on http://127.0.0.1:5000
Press CTRL+C to quit
```
or something like gunicorn (or other WSGI servers) for production uses:
```commandline
$ gunicorn fixations.wsgi:app
[2023-01-16 19:55:31 -0500] [3380019] [INFO] Starting gunicorn 20.1.0
[2023-01-16 19:55:31 -0500] [3380019] [INFO] Listening at: http://127.0.0.1:8000 (3380019)
[2023-01-16 19:55:31 -0500] [3380019] [INFO] Using worker: sync
[2023-01-16 19:55:31 -0500] [3380028] [INFO] Booting worker with pid: 3380028
```
![webfix_session](images/webfix_session.png)
## FIX reference data source
The data is extracted from the FIX specs available here:
> https://www.fixtrading.org/packages/fix-repository-2010/
(see fix_repository_2010_edition_20200402.zip).
NOTE: it requires the creation of a login/password to access it.
## TODO:
1. create a hyperlink to FIX specs for each tag based on FIX version :white_check_mark:
2. add more info to README.md. Use rule80A and 47 as example for fix_args :white_check_mark:
3. add more example(s)
4. add some pytest to detect the FIX version for example :white_check_mark:
5. add "direction" to columns to show whether it's a request or a response
6. catch exceptions and display them on the webpage
7. deploy to https://vercel.com/
8. allow creating an ASCII table equivalent suitable to be cut-n-paste into a document for example
9. add a short link ala tinyurl and save it into a sqlite3 db store :white_check_mark:
10. black theme?
11. allow to have no leading timestamp and use the timestamp FIX tags instead :white_check_mark:
12. add proper Logger
13. add DB stats
14. pypi.org can't display the ASCII screencast images. Need to reference GitHub's full path?
15. Give the option to remove or hide/obfuscate some sensitive fields such as tag55 or senderCompId/targetComPid :white_check_mark:
16. Show the delta between each timestamp (below each timestamp) :white_check_mark:
17. Transpose the grid/matrix :white_check_mark:
18. Shift-Enter = pressing on [Parse FIX] button :white_check_mark:
19. Support FIX Repeating Groups :white_check_mark:
20. When using fix_parse_log.py, also upload the same data to the webfix app to generate a tiny URL :white_check_mark:
Raw data
{
"_id": null,
"home_page": "https://github.com/jeromegit/fixations",
"name": "fixations",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": "",
"keywords": "fix,fix-protocol",
"author": "Jerome Provensal",
"author_email": "jeromegit@provensal.com",
"download_url": "https://files.pythonhosted.org/packages/b3/85/ba1b802564312ed941bb0d8188e68d3762bddad35ceaa81005be0deb0faf/fixations-0.2.36.tar.gz",
"platform": null,
"description": "# FIXations!\n## A set of tools to handle FIX protocol data\n - **fix_tags** - _explore FIX tags and their associated values either as CLI output or a GUI-like textual interface_\n - **fix_parse_log** - _extract FIX lines from a (log) file and present them in a nicely formatted grid_\n - **webfix** - _present copy-n-paste'd FIX lines into a nicely formatted grid_\n\n### Installation\n`pip3 install fixations`\n\n### Examples of running these applications\n#### fix_tags\n_Click on the link below since it was too small to asciicast in this page_\n[![asciicast](https://asciinema.org/a/551910.svg)](https://asciinema.org/a/551910?autoplay=1&t=2)\n\n#### fix_parse_log\n![fix_parse_log_demo](images/fix_parse_log_demo.gif)\n\n#### webfix\nWebfix needs to be used with either Flask (for dev purposes) \n```commandline\n$ python -m flask --app fixations.webfix run\n * Serving Flask app 'fixations.webfix'\n * Debug mode: off\nWARNING: This is a development server. Do not use it in a production deployment. \nUse a production WSGI server instead.\n * Running on http://127.0.0.1:5000\nPress CTRL+C to quit\n```\n\nor something like gunicorn (or other WSGI servers) for production uses:\n```commandline\n$ gunicorn fixations.wsgi:app\n[2023-01-16 19:55:31 -0500] [3380019] [INFO] Starting gunicorn 20.1.0\n[2023-01-16 19:55:31 -0500] [3380019] [INFO] Listening at: http://127.0.0.1:8000 (3380019)\n[2023-01-16 19:55:31 -0500] [3380019] [INFO] Using worker: sync\n[2023-01-16 19:55:31 -0500] [3380028] [INFO] Booting worker with pid: 3380028\n```\n\n![webfix_session](images/webfix_session.png)\n\n\n## FIX reference data source\nThe data is extracted from the FIX specs available here: \n\n> https://www.fixtrading.org/packages/fix-repository-2010/ \n(see fix_repository_2010_edition_20200402.zip).\n\nNOTE: it requires the creation of a login/password to access it.\n\n## TODO:\n 1. create a hyperlink to FIX specs for each tag based on FIX version :white_check_mark:\n 2. add more info to README.md. Use rule80A and 47 as example for fix_args :white_check_mark:\n 3. add more example(s)\n 4. add some pytest to detect the FIX version for example :white_check_mark:\n 5. add \"direction\" to columns to show whether it's a request or a response\n 6. catch exceptions and display them on the webpage\n 7. deploy to https://vercel.com/\n 8. allow creating an ASCII table equivalent suitable to be cut-n-paste into a document for example\n 9. add a short link ala tinyurl and save it into a sqlite3 db store :white_check_mark:\n 10. black theme?\n 11. allow to have no leading timestamp and use the timestamp FIX tags instead :white_check_mark:\n 12. add proper Logger\n 13. add DB stats\n 14. pypi.org can't display the ASCII screencast images. Need to reference GitHub's full path?\n 15. Give the option to remove or hide/obfuscate some sensitive fields such as tag55 or senderCompId/targetComPid :white_check_mark:\n 16. Show the delta between each timestamp (below each timestamp) :white_check_mark:\n 17. Transpose the grid/matrix :white_check_mark:\n 18. Shift-Enter = pressing on [Parse FIX] button :white_check_mark:\n 19. Support FIX Repeating Groups :white_check_mark:\n 20. When using fix_parse_log.py, also upload the same data to the webfix app to generate a tiny URL :white_check_mark: \n\n\n",
"bugtrack_url": null,
"license": "GPL-3.0-or-later",
"summary": "This is a set of tools to look up / visualize FIX protocol data.",
"version": "0.2.36",
"project_urls": {
"Homepage": "https://github.com/jeromegit/fixations"
},
"split_keywords": [
"fix",
"fix-protocol"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "e46fa0c313ecf307413e003ee11925d240dfc14bfd9391701cec58b4a3ef3672",
"md5": "ea8e5e3afc47632080998d37a4c4d495",
"sha256": "326b452988eb5705132fff370c5beda42a482473658621400e46d57f4d80552a"
},
"downloads": -1,
"filename": "fixations-0.2.36-py3-none-any.whl",
"has_sig": false,
"md5_digest": "ea8e5e3afc47632080998d37a4c4d495",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 2803859,
"upload_time": "2024-01-28T18:34:36",
"upload_time_iso_8601": "2024-01-28T18:34:36.415472Z",
"url": "https://files.pythonhosted.org/packages/e4/6f/a0c313ecf307413e003ee11925d240dfc14bfd9391701cec58b4a3ef3672/fixations-0.2.36-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b385ba1b802564312ed941bb0d8188e68d3762bddad35ceaa81005be0deb0faf",
"md5": "be7d34f44d4ef91dcd6a0fda53d7bba3",
"sha256": "c0745cc50c37940467e752c7e7246d98af730dbe30ea080ff3167644e314518b"
},
"downloads": -1,
"filename": "fixations-0.2.36.tar.gz",
"has_sig": false,
"md5_digest": "be7d34f44d4ef91dcd6a0fda53d7bba3",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 2598415,
"upload_time": "2024-01-28T18:34:42",
"upload_time_iso_8601": "2024-01-28T18:34:42.201673Z",
"url": "https://files.pythonhosted.org/packages/b3/85/ba1b802564312ed941bb0d8188e68d3762bddad35ceaa81005be0deb0faf/fixations-0.2.36.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-01-28 18:34:42",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "jeromegit",
"github_project": "fixations",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "fixations"
}