{ "info": { "author": "Aur\u00e9lien Nicolas", "author_email": "info@deckard.ai", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Topic :: Software Development" ], "description": "# dcode://\n\nDcode is a URL scheme for sharing code.\n\n pip install --user dcode && python -m dcode install\n\n# Link-to-code\n\nA dCode URL represents a location in a codebase.\n\nA dCode handler finds this code on a particular computer and opens it with the user's preferred editor.\n\nURLs can be shared within a team, embedded in documentation, tickets, comments, or simply stored as personal bookmarks. Same as HTTP.\n\nURLs support different degrees of precision and are capable of describing what a location means across code changes. It can mean \"this exact place and time\" or \"this function definition in the latest master\".\n\n## Strict mode\n\nA dCode URL that contains a repository URL, commit ID, path, line and column numbers uniquely identifies a location. It may also contain other details for readability, or to allow friendly alternative behaviors of handlers.\n\n## Human-friendly mode\n\nURLs may omit all parts but the path. This makes it easy to write them by hand or to generate them from other tools. Handlers should make their best efforts to locate the code that best matches the URL.\n\n# Examples\n\nAbsolute minimum. When referring to a file, simply add \"dcode colon triple slash\" in front of it.\n\n dcode:///some_pretty_specific/filename.js\n\nIf the path is not unique enough (like main.js), add the repo name between the slashes:\n\n dcode://my_project/main.js\n\nAdd basic in-file location:\n\n dcode://my_project/main.js?line=12\n\nMake it robust to changes using words. The handler can be smart and find it even after the code has changed, within reason:\n\n dcode://my_project/main.js?line=12&column=4&word=MyComponent,function\n\nMake it unambiguous across spacetime, complete with git url and commit id.\n\n dcode://my_project/README.md?git=git%40github.com%3Adeckardai%2Fdcode.git&h=63d2f71&line=12&column=3\n\nOf course, those would rather be generated by tools, for instance editor plugins.\n\n\n# Specification\n\nA dCode URL is composed of a mandatory path and optional repository and file information (spaces for readability):\n\n dcode:// repo_name / path ? repo_spec & code_spec\n\n`path`: the path to a file relative to the root of a project, typically a git repository.\n\n`repo_name`: the common name of the repo, the last part of a repo url and typically the name of the local working directory.\n\n`repo_spec` can indicate version control details, such as branch names and commit ids.\n\n`code_spec` can indicate the location of code inside of a file.\n\nParameters, if present, should appear in the following order, so that people can learn to read them quickly.\n\n## Repository specification\n\n`git`: a URL that can be interpreted by git. Must be URL-encoded.\n\n`hg`: a URL that can be interpreted by mercurial. Must be URL-encoded.\n\n`commit` or `h`: a specific commit hash.\n\n`branch` or `b`: a branch or tag.\n\n`date` or `d`: a date as YYYY-MM-DD, representing the last commit of the day in UTC, in the specified or the default branch.\n\n## Code specification\n\n`line` or `l`: line number starting at 1.\n\n`column` or `c`: column number starting at 1.\n\n`word` or `w`: one or more words that should appear at the URL location. Several words can be given, separated by commas. Words should be interpreted as case-insensitive, unless they explicitely contain an uppercase letter. This allows handlers to find code across changes.\n\n## Name\n\nA name or comment can be added at the end of URLs like this: `#--Some_name`. This makes links easier to manage.\n\n\n# Implementation\n\nThe current implementation looks for all git or mercurial repositories in the home directory, by default. It can open files at the right place in any code editor. A couple of presets are provided. Contributions welcome!\n\n\n# Install\n\n pip install --user dcode && python -m dcode install\n\nThis will install the url handler and open a test file after a few seconds.\nDCode will likely select a basic text editor.\n\nIf you don't have pip yet:\n\n easy_install pip\n\n# Configure\n\n Edit `~/.dcode.json` to choose your actual IDE.\n\nYou should now be able to click links and end up right in your text editor.\n\n# Demo\n\nDemo link: [dcode://_demo/demo.txt?l=3&c=30](http://dcode.online/_demo/demo.txt?l=3&c=30)\n\nOr simulating if the link is not clickable for you:\n\n python -m dcode 'dcode://_demo/demo.txt?l=3&c=30'\n\n# Contributing\n\nIdeas and bug reports are welcome in *Issues*, or code as pull requests.\n\nExamples:\n\n* Editor plugins generating URLs.\n\n* Make something more robust in a particular environment.\n\n* Make URLs more robust to code changes, multiple branches, and such.\n\n## Development setup:\n\n git clone https://github.com/deckardai/dcode.git\n cd dcode\n pip install --user -e .\n\n\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/deckardai/dcode", "keywords": "url code file sharing development", "license": "Apache2", "maintainer": "", "maintainer_email": "", "name": "dcode", "package_url": "https://pypi.org/project/dcode/", "platform": "", "project_url": "https://pypi.org/project/dcode/", "project_urls": { "Homepage": "https://github.com/deckardai/dcode" }, "release_url": "https://pypi.org/project/dcode/0.3.0/", "requires_dist": null, "requires_python": "", "summary": "A URL scheme to share code", "version": "0.3.0" }, "last_serial": 2602146, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "845d606a2f11646a03752b4ba2335eea", "sha256": "d5ac493130cea1c2ddc600319c4fe059c1d93243b8bbad705c8e1ebf1ae1b707" }, "downloads": -1, "filename": "dcode-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "845d606a2f11646a03752b4ba2335eea", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 62386, "upload_time": "2016-11-23T12:57:14", "url": "https://files.pythonhosted.org/packages/a6/8f/6d3704bd383643feef9bf4c07529756e0423d62a030033a9dc5078305dc9/dcode-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9bdfb99c7f08eaf0440056ac9709a5e9", "sha256": "70695d26b66151a0c487fd7a3934a55a149343305c4fdb0d8014f2f3366e0528" }, "downloads": -1, "filename": "dcode-0.1.0.tar.gz", "has_sig": false, "md5_digest": "9bdfb99c7f08eaf0440056ac9709a5e9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 59270, "upload_time": "2016-11-23T12:57:17", "url": "https://files.pythonhosted.org/packages/55/7e/b2a9ab48ce3469cf091a7ee1d5c12a5c0c2b4803e0cf304b27fcd2dd59d8/dcode-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "24564302f81653d6753b5b4f8fec5c7f", "sha256": "e9c7746677a40ce74fcf3ae883d26c60614d5953d7733f1f573a526478a4aa27" }, "downloads": -1, "filename": "dcode-0.1.1.tar.gz", "has_sig": false, "md5_digest": "24564302f81653d6753b5b4f8fec5c7f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 59367, "upload_time": "2016-11-23T13:32:07", "url": "https://files.pythonhosted.org/packages/83/d5/c7935d9e0c303a450866c4e8cdef15cbbb7bd13d638ca9a0745fb117be71/dcode-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "eaabe4482fa436008793a9b55d748a9c", "sha256": "5b1b9f954a27d823253f20a9357b66b6f723abf33745da0d6079d918c7a10408" }, "downloads": -1, "filename": "dcode-0.1.2.tar.gz", "has_sig": false, "md5_digest": "eaabe4482fa436008793a9b55d748a9c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 59335, "upload_time": "2016-11-24T12:13:39", "url": "https://files.pythonhosted.org/packages/4d/65/16b370595644807daddfdb6cf6f0ab82461b4cc853a43aa84dafd65fcbe3/dcode-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "0a2372478b0c14d9c53e15ffcca8b7b2", "sha256": "baf8553130209ec0a7d040fa18a75cb0197449602204ec1ec099db4ee2c92808" }, "downloads": -1, "filename": "dcode-0.1.3.tar.gz", "has_sig": false, "md5_digest": "0a2372478b0c14d9c53e15ffcca8b7b2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 59303, "upload_time": "2016-11-24T12:27:06", "url": "https://files.pythonhosted.org/packages/d1/80/ede67d16203f0a68512ce827a8e11995da7e54377f44ad422d2937839577/dcode-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "23c7b6a8ac5a73fa23ca6b37197a5851", "sha256": "06772e4f1b977f2d260a069c5a19feb161d892340d7cfdb391dbdfe87478c2ea" }, "downloads": -1, "filename": "dcode-0.1.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "23c7b6a8ac5a73fa23ca6b37197a5851", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 62554, "upload_time": "2016-11-25T17:11:47", "url": "https://files.pythonhosted.org/packages/64/f7/be770c2c5854107aada0f0578efa3e3ca935f63508d813a0dd0615dc611e/dcode-0.1.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "367193b91eb77a157e96dc6afeb56a76", "sha256": "1cec9c7333a594ace0ec7cc3b2db3d5c894a312a2dfb305e7944a823706652b9" }, "downloads": -1, "filename": "dcode-0.1.4.tar.gz", "has_sig": false, "md5_digest": "367193b91eb77a157e96dc6afeb56a76", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 59405, "upload_time": "2016-11-25T17:11:51", "url": "https://files.pythonhosted.org/packages/6f/af/c54936e5dd0966bf2f3d7aedb70b2d442eee5f03146ae681a9f759f84be3/dcode-0.1.4.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "182414fd9cf384f9597f74393ba3935f", "sha256": "0fd7129671fa7b5ef6acb1089c92cfd730c332cb4660f40c7b535d22d54d834c" }, "downloads": -1, "filename": "dcode-0.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "182414fd9cf384f9597f74393ba3935f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 63539, "upload_time": "2017-01-26T14:42:54", "url": "https://files.pythonhosted.org/packages/b7/05/701e1633c1095e08ee8a5c2b50b6f6429c5187e6e8eb3e85abe147bdab07/dcode-0.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d2fe8753b52865792231b0e30d7add95", "sha256": "26384831f2e62a846c5ad979330549091f36c5e43e659c35794ebd7eafcaf9a8" }, "downloads": -1, "filename": "dcode-0.2.0.tar.gz", "has_sig": false, "md5_digest": "d2fe8753b52865792231b0e30d7add95", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 60243, "upload_time": "2017-01-26T14:43:00", "url": "https://files.pythonhosted.org/packages/66/25/bd0fe08e6ffd9616bae3aeddbcbe7a9e5bcd19213421fb4868583bdbb820/dcode-0.2.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "2a853bb768e48aa15ea056679aca2c47", "sha256": "9eeba33a8140859c7ef7f7d3e437ed391f4537c3a4bd130910d76de1f7d3fd73" }, "downloads": -1, "filename": "dcode-0.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2a853bb768e48aa15ea056679aca2c47", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 63711, "upload_time": "2017-01-27T15:54:07", "url": "https://files.pythonhosted.org/packages/5e/33/b483769e4166808822e04f02b6de2a7f1acb4d88f9ced3b618ced6619ff0/dcode-0.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ae7577d017a4f13be72f1ba4c016ca53", "sha256": "b17c456a4223e0626fba82f500d1fe0999136905450c6071bdafd02b55f415e3" }, "downloads": -1, "filename": "dcode-0.3.0.tar.gz", "has_sig": false, "md5_digest": "ae7577d017a4f13be72f1ba4c016ca53", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 60452, "upload_time": "2017-01-27T15:54:09", "url": "https://files.pythonhosted.org/packages/71/87/dcceb181dac695ff57912176ee0f45841728d5b08fb19a89a674c87847d3/dcode-0.3.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "2a853bb768e48aa15ea056679aca2c47", "sha256": "9eeba33a8140859c7ef7f7d3e437ed391f4537c3a4bd130910d76de1f7d3fd73" }, "downloads": -1, "filename": "dcode-0.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2a853bb768e48aa15ea056679aca2c47", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 63711, "upload_time": "2017-01-27T15:54:07", "url": "https://files.pythonhosted.org/packages/5e/33/b483769e4166808822e04f02b6de2a7f1acb4d88f9ced3b618ced6619ff0/dcode-0.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ae7577d017a4f13be72f1ba4c016ca53", "sha256": "b17c456a4223e0626fba82f500d1fe0999136905450c6071bdafd02b55f415e3" }, "downloads": -1, "filename": "dcode-0.3.0.tar.gz", "has_sig": false, "md5_digest": "ae7577d017a4f13be72f1ba4c016ca53", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 60452, "upload_time": "2017-01-27T15:54:09", "url": "https://files.pythonhosted.org/packages/71/87/dcceb181dac695ff57912176ee0f45841728d5b08fb19a89a674c87847d3/dcode-0.3.0.tar.gz" } ] }