{ "info": { "author": "Ali Afshar", "author_email": "aafshar@gmail.com", "bugtrack_url": null, "classifiers": [], "description": "\n# a8, the Abominade IDE #\n\n(c) 2011, PIDA Authors\nLicense GPL v3 (http://www.gnu.org/copyleft/gpl.html)\n\nThe One True IDE\u2122, successor to the PIDA IDE. An ultra-lightweight IDE, that\nembeds Vim, a terminal emulator, and a file browser and makes them work\ntogether.\n\n* [Installation](#installation)\n* [Configuration](#configuration)\n* [Keyboard Shortcuts](#keyboard-shortcuts)\n* [Extensions](#extensions)\n* [FAQ](#faq)\n* [Intentional Breakages](#intentional-breakages)\n* [SSH Tips and Tricks](#ssh-tips-and-tricks)\n\n![a8 screenshot](https://lh4.googleusercontent.com/-PtipCpFvTcc/TvpPhtdtTeI/AAAAAAAADI0/tUVBvU3uLAA/s0-d/a8.png)\n\n----\n\n## Installation ##\n\n\u2820\u280a\u281d\u280e\u281e\u2801\u2807\u2807\u2801\u281e\u280a\u2815\u281d\n\n```\n$ pip install a8\n```\nRemember the system dependencies:\n```\n# apt-get install vim-gtk python-gtk2 python-vte python-dbus\n```\n(non debian distros, please drop me a line to add you.)\n\n----\n\n## Configuration\n\n\na8 is a bit configurable. Not so much because I never planned on using it in more than one way.\n\n### Configuration file\n\nCreate a config file at `~/.a8/config.yaml`\n\nAs the name suggests it will be in Yaml, as a map of key values:\n```\nfoo1: blah\nfoo2:\n foo3: blah\n```\n\n### Terminal Configuration ###\n\nIs the biggest bit, terminal options live under the `temrinal` key, and these\nare them, with default values if they exist (or Unset otherwise):\n```\n terminal:\n 'color_foreground': Unset,\n 'color_background': Unset,\n 'backspace_binding': Unset,\n 'cursor_blink_mode': Unset,\n 'cursor_shape': Unset,\n 'font': Unset,\n 'allow_bold': Unset,\n 'audible_bell': Unset,\n 'emulation': Unset,\n 'pointer_autohide': Unset,\n 'scroll_on_keystroke': Unset,\n 'scroll_on_output': Unset,\n 'scrollback_lines': 1000,\n 'visible_bell': Unset,\n 'word_chars': '-A-Za-z0-9,./?%&#:_',\n```\n\n### Window Configuration ###\n\nTo turn on the toolbar:\n```\ntoolbar: true\n```\n\n### Session Configuration ###\n\nAbominade 0.11 supports 3 session types:\n```\nsession_type: 'none' # don't remember sessions (alias for \"session: false\")\nsession_type: 'local' # stores session in the ./.a8 wherever abominade runs\nsession_type: 'user' # default, stores session in ~/.a8\n```\nTo turn off sessions in 0.10 and earlier:\n```\nsession: false\n```\n\n### Terminals in a separate window ###\n\nUseful for multiple screens:\n```\nterminal_window: true\n```\n----\n\n## Keyboard Shortcuts ##\n\n\u2820\u2805\u2811\u283d\u2803\u2815\u2801\u2817\u2819 \u2820\u280e\u2813\u2815\u2817\u281e\u2809\u2825\u281e\u280e\n\nKeyboard shortucts are of two types:\n\n1. Internal a8 actions\n2. Custom shell commands\n\nDefine keyboard shortcuts by creating the file:\n\n`~/.a8/shortcuts.yaml`\n\nThis file should contain keys and values of the form:\n\n`: `\n\nor of the form\n\n`key: `\n\n`[cmd: ]`\n\n`[cwd: ]`\n\n`[env: ]`\n\n\nWhere action is a string defining the action to be performed, and shortcut is a shortcut string.\n\n### Available actions ###\n\nAvailable actions are (with defaults):\n\n* `shell (t)`\n* `focus_vim (e)`\n* `focus_terminal (r)`\n* `focus_buffers (b)`\n* `focus_files (m)`\n* `focus_terminals (i)`\n* `focus_bookmarks (k)`\n* `prev_buffer (Up)`\n* `next_buffer (Down)`\n* `prev_terminal (Left)`\n* `next_terminal (Right)`\n* `refresh_files (g)`\n* `toggle_expanded_files (x)` (0.11 and later)\n* `close_all_buffers (c)`\n* `browse_home (h)`\n\n### Other hotkeys ###\n\n* pressing `Up` and `Down` in terminals will jump to prev/next\nprompt (or at least the scrollbar position where you last hit Enter)\n\n### Shortcut format ###\n\nThe format looks like `a` or `F1` or `z` (the last\none is for key release). The parser is fairly liberal and allows lower or upper\ncase, and also abbreviations such as `` and ``. Keys such as `Up`,\n`Down`, `Left`, `Right` etc are available, but be careful, the keypress will not\npass through to the underlying app, terminal or Vim.\n\n### Custom shortcuts ###\n\nThese are custom shell commands bound to a keyboard shortcut. Their format is different from internal a8 shortcuts. They should be part of a list in the value of the `custom` key. Each item in the list should define at least the key `key` as a shortcut string in the format above. Additionally they may define `cmd`, `cwd` and `env` keys. These are used to execute a new terminal with the command.\n\n### Example file ###\n\nAn example shortcut file might look like:\n\n```\nshell: o\nfocus_vim: Space\n\ncustom:\n - key: j\n cmd: ifconfig\n```\n----\n\n## Extensions ##\n\u2820\u2811\u282d\u281e\u2811\u281d\u280e\u280a\u2815\u281d\u280e\n\nA8 is slightly extensible, to the absolute minimal degree to add functionality without having the burden of a massive framework. This is achieved by the concepts of:\n\n1. Extensions\n2. Signals\n\nSince we are just using Python, all the a8 API is public to any Python code in the same process, and that is intentional. If you want to break it by abusing this, go for it, break it.\n\nExtensions are any Python module or instance with a callable `setup` attribute. The signature of `setup` should be:\n\n```\ndef setup(app):\n \"\"\"My setup function.\"\"\"\n```\n\nOf course this can be in an object where the signature would be:\n\n```\nclass MyExtension(object):\n\n def setup(self, app):\n \"My setup function.\"\"\"\n```\n\nExtensions are listed in the configuration file under the `extensions` key, and should be importable names, such as `a8.a8_example_ext`, an example to get you started. If importing an attribute from a module, the `:` notation can be used, such as `path.mymodule:myattr`, which would be suitable for an instance as an extension.\n\nThe app that is passed to the `setup` function is an instance of `a8.app.Abominade` which is the main monolith for a8, i.e., it has access to everything. Terrible, but intentional.\n\nThe `setup` function can be used to create user interface features and to connect to signals, and as mentioned above, since all the API is public, anything can be achieved using this.\n\n### Signals ###\n\nA8 exports a number of signals for use by extensions. They are not used internally, so mostly behave as a no op. These are connected using `app.connect` and can be emitted by using `app.emit`. \n\n`app.connect` takes a signal name, and a callback to be called. Callbacks are only passed keyword arguments, so it is important to get the names of the arguments correct. here is an example of connecting to the `file-saved` signal in a plugin. All available signals and arguments are listed below.\n\n```\ndef on_file_saved(filename):\n print filename, 'was saved.'\n\ndef setup(app):\n app.connect('file-saved', on_file_saved)\n```\n\n### Available Signals ###\n\n| *Name* | *Arguments* | *Description* |\n|-----------------------|--------------------|-----------------------------------------------|\n| `file-item-added` | `filename` | File item is shown in the file manager |\n| `file-opened` | `filename` | File opened in the editor |\n| `file-closed` | `filename` | File closed in the editor |\n| `bookmark-item-added` | `filename` | Bookmark to `filename` is added |\n| `terminal-executed` | `argv` `env` `cwd` | New terminal has been executed |\n\nIf you need more signals, just let us know. Since they are not used internally, there is basically no cost.\n\n----\n\n## FAQ ##\n\u2820\u280b\u2820\u2801\u2820\u281f\n\n### What happened to my favourite PIDA feature? ###\n\nAbominade doesn't hope to replace [http://pida.co.uk PIDA], how could it? So if\nyou require some special PIDA features, please go ahead and use PIDA.\n[Intentional Breakages](#intentional-breakages)\n\n### Does it work on a Mac? ###\n\nProbably, with difficulty. You'll need X, Gtk, DBus, all with Python support. (and possibly psychiatric help)\n\n----\n\n## Intentional Breakages ##\n\u2820\u280a\u281d\u281e\u2811\u281d\u281e\u280a\u2815\u281d\u2801\u2807 \u2820\u2803\u2817\u2811\u2801\u2805\u2801\u281b\u2811\u280e\n\nFeatures intentionally left out of Abominade that make it simpler, but\nessentially a tool written for me. If you want a real application, try\n[https://bitbucket.org/aafshar/pida-main/wiki/Home PIDA]. The motivation for\nAbominade is to make an IDE that is tailor-made to me.\n\n* Internationalization (I only ever use English)\n* Non-Vim editors (I only ever use Vim)\n* Language support (I don't find those outliners useful)\n* Version control support (Command line is enough)\n* Project support (Replaced with bookmarks)\n* Gui configuration (Plain text is enough)\n* Gui shortcut config (As Gui config)\n* Window management (Detaching, moving, hovering, floating)\n* Saving layout\n* Documentation (ok, so PIDA doesn't have any, either!)\n* Lots of options (No need to make stuff optional that I use.)\n* GTK's Actions are a pain\n* Glade/GTKBuilder is a pain\n* GTK's stock icons are totally useless\n* Statusbar/Toolbar/menubar\n\n----\n\n## SSH Tips and Tricks ##\n\u2820\u280e\u2820\u280e\u2820\u2813\u2800\u2820\u281e\u280a\u280f\u280e\u2800\u2801\u281d\u2819\u2800\u2820\u281e\u2817\u280a\u2809\u2805\u280e\n\nAbominade's features work surprisingly well for working remotely over SSH.\n\n### SSHFS ###\n\nIf you edit a lot of code on remote hosts, you can mount your project directory\nlocally via SSHFS.\n\nIf you then SSH directly from a mounted local dir to the corresponding remote\ndir, Abominade's terminal filename recognition will still catch relative\nfilenames. This will break if you cd in your SSH session so that relative paths\ndon't match your local current dir anymore, but if you configure SSH's\n!EscapeChar setting, you can suspend SSH, cd locally, and resume SSH.\n\nAnother interesting trick is you start Abominade in an SSHFS dir while using\na local session, the session will be shared with remote instances at the same\npath, and can be resumed on a different host.\n\n### Screen/tmux ###\n\nIt's a good idea to use GNU screen or tmux for some terminals in Abominade's\nterminals pane, since it's easy to accidentally close Abominade\nand lose your terminal history.\n\n### Vim's Built-in SSH Support ###\n\nHaven't used this much in Abominade...\n", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://abominade.org", "keywords": null, "license": "GPL", "maintainer": null, "maintainer_email": null, "name": "a8", "package_url": "https://pypi.org/project/a8/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/a8/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://abominade.org" }, "release_url": "https://pypi.org/project/a8/1.0/", "requires_dist": null, "requires_python": null, "summary": "The Abominade IDE", "version": "1.0" }, "last_serial": 1728138, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "41c42da7d33509086256f25f2b38b716", "sha256": "3c936f3747635c1af3e5a05008987fe852a1a460180386bcef5eabcde2d90d2b" }, "downloads": -1, "filename": "a8-0.1.tar.gz", "has_sig": false, "md5_digest": "41c42da7d33509086256f25f2b38b716", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23823, "upload_time": "2011-12-29T01:46:55", "url": "https://files.pythonhosted.org/packages/18/51/6e05c93042231262ae521c7722b840800a0d594071ff4f7cbfe7aeff74e7/a8-0.1.tar.gz" }, { "comment_text": "", "digests": { "md5": "761f88314ba3b86f809bd3673d0e9f60", "sha256": "0f4b8086312fee469c4352079467287b14fc0a7d67e5d61eb6c8b0450082cbdd" }, "downloads": -1, "filename": "a8-0.1.zip", "has_sig": false, "md5_digest": "761f88314ba3b86f809bd3673d0e9f60", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34306, "upload_time": "2011-12-29T01:46:57", "url": "https://files.pythonhosted.org/packages/23/3e/b56103c85e0d158cea1b4dea8302df5a4cc17607f5afd6f339fd77450e00/a8-0.1.zip" } ], "0.10": [ { "comment_text": "", "digests": { "md5": "50e113fcb0fcd1be468283de9e4cbf8e", "sha256": "5b08b9cf1500f1a2a27020ac1ea377478baac93f4d9a13cee979dc647558c4c5" }, "downloads": -1, "filename": "a8-0.10.tar.gz", "has_sig": false, "md5_digest": "50e113fcb0fcd1be468283de9e4cbf8e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32904, "upload_time": "2012-08-03T07:31:08", "url": "https://files.pythonhosted.org/packages/d6/8f/cbecebe0b728b4f9108a9c83f3746eb9dd291d7f7b7bbc089b7b6b026e32/a8-0.10.tar.gz" }, { "comment_text": "", "digests": { "md5": "5c1b2362fef360a2d42e131761edd742", "sha256": "315386e9d5a577f0ffb94d9cbcc29a76dfcd1fa33283acc41a6f29a88d1234be" }, "downloads": -1, "filename": "a8-0.10.zip", "has_sig": false, "md5_digest": "5c1b2362fef360a2d42e131761edd742", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 47285, "upload_time": "2012-08-03T07:31:11", "url": "https://files.pythonhosted.org/packages/54/8c/aea7e087947390d2296a4382c791385940742541ec291b529de9c567917b/a8-0.10.zip" } ], "0.11": [ { "comment_text": "", "digests": { "md5": "13e135f42427cd7bd4736c6a42e3ff10", "sha256": "0ef94e70f0b97de0ecfdd7297f70435b52efbdf3a04e0b8ba1927d3535cca7f2" }, "downloads": -1, "filename": "a8-0.11.tar.gz", "has_sig": false, "md5_digest": "13e135f42427cd7bd4736c6a42e3ff10", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39435, "upload_time": "2012-09-10T03:18:54", "url": "https://files.pythonhosted.org/packages/4d/d8/e975d4c836bd64b95fd19e5e7c3ee6ef4e9e114badd4f785c98b24307153/a8-0.11.tar.gz" }, { "comment_text": "", "digests": { "md5": "ab189d94bf7a8b3908576142d89ab905", "sha256": "b4936c058907111860f35007e5954e695df16a134d261c2d6f1e15ebee6d2758" }, "downloads": -1, "filename": "a8-0.11.zip", "has_sig": false, "md5_digest": "ab189d94bf7a8b3908576142d89ab905", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 54168, "upload_time": "2012-09-10T03:18:55", "url": "https://files.pythonhosted.org/packages/af/66/ecc6e86127bb0ffaf5b45bec62471f67f7b706e4b22d51e5f728edb9f22a/a8-0.11.zip" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "f097f17e266baf670761c708158628a0", "sha256": "17c539f83e67bfba670f7564f7c8a6bf787058fcee2e813d0be6fd3afed3e722" }, "downloads": -1, "filename": "a8-0.2.tar.gz", "has_sig": false, "md5_digest": "f097f17e266baf670761c708158628a0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24404, "upload_time": "2011-12-30T00:51:50", "url": "https://files.pythonhosted.org/packages/2e/6e/60df070298e216b0facb9a5f454e73dd9714263bc091c61ef1470b191431/a8-0.2.tar.gz" }, { "comment_text": "", "digests": { "md5": "8cfcae86ddfad6d17e3e506dd5c21c7c", "sha256": "532b8f9b4138fa21398c3d3c55b900de34ad86e87d91573a8f065da69c1f276f" }, "downloads": -1, "filename": "a8-0.2.zip", "has_sig": false, "md5_digest": "8cfcae86ddfad6d17e3e506dd5c21c7c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35070, "upload_time": "2011-12-30T00:51:51", "url": "https://files.pythonhosted.org/packages/fa/4d/051845c5ef9bf8cb98df6ca38d7be42fd8eca34fb14ab0f019faa484b994/a8-0.2.zip" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "3ce730cd670398e597d06201dc607224", "sha256": "cd5b10d0f2ecbda67c87caf3d917dfe13bba7cbaa958c875f3af91f9be46e59b" }, "downloads": -1, "filename": "a8-0.3.tar.gz", "has_sig": false, "md5_digest": "3ce730cd670398e597d06201dc607224", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26376, "upload_time": "2011-12-30T19:43:20", "url": "https://files.pythonhosted.org/packages/fa/68/561d907c3504dcaef8b6623dd2bf3ffe66383bcf3db29fdac747ca655aeb/a8-0.3.tar.gz" }, { "comment_text": "", "digests": { "md5": "ff42efa596a2aa0e0a539ed78a5bd646", "sha256": "25d0ea1a5d351403fdd18681fd4eea6c11f24c2dadcdbec00081420af8548fe4" }, "downloads": -1, "filename": "a8-0.3.zip", "has_sig": false, "md5_digest": "ff42efa596a2aa0e0a539ed78a5bd646", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 38467, "upload_time": "2011-12-30T19:43:20", "url": "https://files.pythonhosted.org/packages/ca/95/51ddd56f7599044e490762ed61fb35ebdeff1eb93c9a3b4f7c5540c3de70/a8-0.3.zip" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "b20a4cc3d94087e209125e73e24eead8", "sha256": "6a8c3b6e93bb32d662ab8c0e197e66bc4a64fde13ce78c38e061bd03b24c265b" }, "downloads": -1, "filename": "a8-0.4.tar.gz", "has_sig": false, "md5_digest": "b20a4cc3d94087e209125e73e24eead8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32345, "upload_time": "2011-12-31T23:56:02", "url": "https://files.pythonhosted.org/packages/cc/e5/3f10cd31d54582a41df9d11b52d94d07d7db47f24c6104abe36422dbeb11/a8-0.4.tar.gz" }, { "comment_text": "", "digests": { "md5": "d72fc40bd97251fd2d4d18977466f8df", "sha256": "4c9daddad0e707f98834a4cbf494da47b1e4d4720e09a7f2f0a775ed80993284" }, "downloads": -1, "filename": "a8-0.4.zip", "has_sig": false, "md5_digest": "d72fc40bd97251fd2d4d18977466f8df", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 46178, "upload_time": "2011-12-31T23:56:04", "url": "https://files.pythonhosted.org/packages/c8/9d/e9f8dc5abca96ddad5e22c94d0e2fc350fa1ba8198321e6382e6d82cebfd/a8-0.4.zip" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "f96e87c6905f52009a1987901df8f0cd", "sha256": "24bade7db97018a7a2debb1ae242bf82cd5a75e9f1c9caf1a1e26ff535370526" }, "downloads": -1, "filename": "a8-0.5.tar.gz", "has_sig": false, "md5_digest": "f96e87c6905f52009a1987901df8f0cd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32250, "upload_time": "2012-01-01T20:52:21", "url": "https://files.pythonhosted.org/packages/48/ad/de02663953a7a95e3629495f802f2c8c9e194b92e87d534f39f141ff0726/a8-0.5.tar.gz" }, { "comment_text": "", "digests": { "md5": "e928086e290c184c689ded9ffbcdc14a", "sha256": "c9dd8d3f1ee6fdd484111ac850be5e0ab3152d0ed61d54c55883d80e67c28ecb" }, "downloads": -1, "filename": "a8-0.5.zip", "has_sig": false, "md5_digest": "e928086e290c184c689ded9ffbcdc14a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 46027, "upload_time": "2012-01-01T20:52:24", "url": "https://files.pythonhosted.org/packages/e6/d0/4ae2f1c8e76b58d3894d29dc7ed2e684d88ce5c0f73625e81859ee0bce54/a8-0.5.zip" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "d5ffcf3fef71fd8184debdfbb9cd23b5", "sha256": "d9f060641efd30a6321dd7f187ce41d2693bb1c9ddad3ac3ee355e6a00c90895" }, "downloads": -1, "filename": "a8-0.6.tar.gz", "has_sig": false, "md5_digest": "d5ffcf3fef71fd8184debdfbb9cd23b5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32268, "upload_time": "2012-01-02T22:19:09", "url": "https://files.pythonhosted.org/packages/6e/38/03d00b8093e9927aae2174ee787b9a120ee48e2a05e90c3d15f05ad29757/a8-0.6.tar.gz" }, { "comment_text": "", "digests": { "md5": "737149ad143c0c688f4086428e880764", "sha256": "5e4c7f2e05bdba9f73a44f6578d3d381dd65186c782f5c6c2622b3ac46eaedef" }, "downloads": -1, "filename": "a8-0.6.zip", "has_sig": false, "md5_digest": "737149ad143c0c688f4086428e880764", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 46037, "upload_time": "2012-01-02T22:19:17", "url": "https://files.pythonhosted.org/packages/60/d0/56f802843145cee8c14a938c826cebf151fcc7358a8e96ee069f11971999/a8-0.6.zip" } ], "0.7": [ { "comment_text": "", "digests": { "md5": "dfbb8b325dd76183d812e9447c1ff678", "sha256": "1b0614f6971af330171743755c29f65ac258bd7455aab08468e1812f2664d36f" }, "downloads": -1, "filename": "a8-0.7.tar.gz", "has_sig": false, "md5_digest": "dfbb8b325dd76183d812e9447c1ff678", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33121, "upload_time": "2012-01-11T21:59:32", "url": "https://files.pythonhosted.org/packages/43/87/3cf0936e96d14a5edd8f82d238c222aec0faa66cda1de78f5f5b2c5ec8ba/a8-0.7.tar.gz" }, { "comment_text": "", "digests": { "md5": "565d48add3abb279f6be620d496fb704", "sha256": "17daa648fecec729eda1cb60d87d1b456bb5aee6c5be7b09e0e545267a535817" }, "downloads": -1, "filename": "a8-0.7.zip", "has_sig": false, "md5_digest": "565d48add3abb279f6be620d496fb704", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 46851, "upload_time": "2012-01-11T21:59:33", "url": "https://files.pythonhosted.org/packages/6f/6b/a00b3339e638798149b80e283924fbe21d6a71c5f82e135e41aa7bff3c72/a8-0.7.zip" } ], "0.8": [ { "comment_text": "", "digests": { "md5": "068fa7a6f6cc6b546e15a0878ec7c9e5", "sha256": "1d8412e3578775f6edfb7357e66ab5eb0e4b7b7bebfa0b90113e563e43cdbe91" }, "downloads": -1, "filename": "a8-0.8.tar.gz", "has_sig": false, "md5_digest": "068fa7a6f6cc6b546e15a0878ec7c9e5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33148, "upload_time": "2012-01-11T22:13:46", "url": "https://files.pythonhosted.org/packages/a2/9e/31694fc25081c2339e60d7b907990496995e427a826d7fb9be62dfd5343f/a8-0.8.tar.gz" }, { "comment_text": "", "digests": { "md5": "94e72a974ba964e5886e7231183e836a", "sha256": "663ccce5beec55e76ca925fa4932f7717aa400ddf0e0957db454c61b32f634be" }, "downloads": -1, "filename": "a8-0.8.zip", "has_sig": false, "md5_digest": "94e72a974ba964e5886e7231183e836a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 46886, "upload_time": "2012-01-11T22:13:51", "url": "https://files.pythonhosted.org/packages/5a/e5/7b5f8a596aa719af1a1740e88ce182b3e03903291ca04c0cea5c27f0266e/a8-0.8.zip" } ], "0.9": [ { "comment_text": "", "digests": { "md5": "1bc1f70be984e8a592d04f35bff692e0", "sha256": "8cb21758a217e0ee0cced13d59e5049a32679b9499808633ed27322fd3064ecf" }, "downloads": -1, "filename": "a8-0.9.tar.gz", "has_sig": false, "md5_digest": "1bc1f70be984e8a592d04f35bff692e0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32845, "upload_time": "2012-05-26T10:13:31", "url": "https://files.pythonhosted.org/packages/6f/42/469335755b5403f873290cc4e57e33198872a3ca7144abcc8cb15f05e2f0/a8-0.9.tar.gz" }, { "comment_text": "", "digests": { "md5": "ec7543a9ac7660bd0ed4380e94afeb5b", "sha256": "726f19eb41125733d94cd46732b0642a12a5ce68a40187391ed104d24193f93a" }, "downloads": -1, "filename": "a8-0.9.zip", "has_sig": false, "md5_digest": "ec7543a9ac7660bd0ed4380e94afeb5b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 47088, "upload_time": "2012-05-26T10:13:33", "url": "https://files.pythonhosted.org/packages/75/35/fca14923b91b127b17f468533f69c9655fcaf501d46611a69c7b2004aaf5/a8-0.9.zip" } ], "1.0": [ { "comment_text": "", "digests": { "md5": "8bf1c72e8cf621f540503a662dffabaf", "sha256": "7a843a2a3c9ebd372ea7f746009f15b158dc64f72aa8c24fc6b69a5796dc7b7f" }, "downloads": -1, "filename": "a8-1.0.tar.gz", "has_sig": false, "md5_digest": "8bf1c72e8cf621f540503a662dffabaf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 45677, "upload_time": "2015-09-18T13:26:48", "url": "https://files.pythonhosted.org/packages/b4/08/47d78209c61fd3b8075d4ae943e5dc4d726836d660fd615c546e2148de9e/a8-1.0.tar.gz" }, { "comment_text": "", "digests": { "md5": "89da9ecd1c70ac650eb44ef9a62561af", "sha256": "771c626f5bec7a46fadc851ea80da4b5511c7bd1b45300f3d7d40f38ac5933d9" }, "downloads": -1, "filename": "a8-1.0.zip", "has_sig": false, "md5_digest": "89da9ecd1c70ac650eb44ef9a62561af", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 58535, "upload_time": "2015-09-18T13:26:53", "url": "https://files.pythonhosted.org/packages/49/47/4221af49c815821fa81b999ae34f86913ee1082d58ed02a4b01eef7a92f1/a8-1.0.zip" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "8bf1c72e8cf621f540503a662dffabaf", "sha256": "7a843a2a3c9ebd372ea7f746009f15b158dc64f72aa8c24fc6b69a5796dc7b7f" }, "downloads": -1, "filename": "a8-1.0.tar.gz", "has_sig": false, "md5_digest": "8bf1c72e8cf621f540503a662dffabaf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 45677, "upload_time": "2015-09-18T13:26:48", "url": "https://files.pythonhosted.org/packages/b4/08/47d78209c61fd3b8075d4ae943e5dc4d726836d660fd615c546e2148de9e/a8-1.0.tar.gz" }, { "comment_text": "", "digests": { "md5": "89da9ecd1c70ac650eb44ef9a62561af", "sha256": "771c626f5bec7a46fadc851ea80da4b5511c7bd1b45300f3d7d40f38ac5933d9" }, "downloads": -1, "filename": "a8-1.0.zip", "has_sig": false, "md5_digest": "89da9ecd1c70ac650eb44ef9a62561af", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 58535, "upload_time": "2015-09-18T13:26:53", "url": "https://files.pythonhosted.org/packages/49/47/4221af49c815821fa81b999ae34f86913ee1082d58ed02a4b01eef7a92f1/a8-1.0.zip" } ] }