{ "info": { "author": "Alper Nebi Yasak", "author_email": "alpernebiyasak@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Topic :: Software Development :: Libraries" ], "description": "=================\nGit-Annex-Adapter\n=================\nThis package lets you interact with git-annex_ from within Python.\nNecessary commands are executed using ``subprocess`` and use their\nbatch versions whenever possible.\n\n.. _git-annex: https://git-annex.branchable.com/\n\nI'm developing this as needed, so feel free to ask if there's any\nfunctionality you want me to implement.\n\nRequirements\n------------\n- Python 3\n- git-annex 6.20170101 (or later)\n- pygit2 0.24 (or later)\n\nUsage\n-----\nTo create a git-annex repository from scratch::\n\n >>> from pygit2 import init_repository\n >>> from git_annex_adapter import init_annex\n\n >>> init_repository('/path/to/repo')\n pygit2.Repository('/path/to/repo/.git/')\n\n >>> init_annex('/path/to/repo')\n git_annex_adapter.repo.GitAnnexRepo(/path/to/repo/.git/)\n\nTo wrap an existing git-annex repository::\n\n >>> from git_annex_adapter.repo import GitAnnexRepo\n >>> repo = GitAnnexRepo('/tmp/repo')\n\nThe GitAnnexRepo is a subclass of pygit2.Repository. Git-annex specific\nfunctionality is accessed via the ``annex`` property of it, which is\na mapping object from git-annex keys to ``AnnexedFile`` objects::\n\n >>> for key in repo.annex:\n ... print(key)\n SHA256E-s3--2c26...\n SHA256E-s3--baa5...\n SHA256E-s3--fcde...\n\n >>> key = 'SHA256E-s3--2c26...'\n >>> repo.annex[key]\n git_annex_adapter.repo.AnnexedFile('SHA256E-s3--2c26...')\n\nYou can also get a tree representation of any git tree-ish object with\nannexed file entries replaced with ``AnnexedFile`` objects::\n\n >>> tree = repo.annex.get_file_tree() # treeish='HEAD'\n >>> tree\n git_annex_adapter.repo.AnnexedFileTree(4d7f...)\n\n >>> set(tree)\n {'foo', 'bar', 'baz', 'README', 'directory'}\n\n >>> tree['foo']\n git_annex_adapter.repo.AnnexedFile(SHA256E-s3--2c26...)\n\n >>> tree['directory']\n git_annex_adapter.repo.AnnexedFileTree(8b54...)\n\n >>> tree['directory/file'] # or tree['directory']['file']\n \n\nThe ``AnnexedFile`` objects can be used to access and manipulate\ninformation about a file.\n\nThe ``metadata`` property of the ``AnnexedFile`` is a mutable mapping\nobject from fields to sets of values::\n\n >>> foo = tree['foo']\n >>> for field, values in foo.metadata:\n ... print('{}: {}'.format(field, values))\n author: {'me'}\n numbers: {'1', '2', '3'}\n\n >>> foo.metadata['numbers'] |= {'0'}\n >>> foo.metadata['numbers'] -= {'3'}\n >>> foo.metadata['numbers']\n {'0', '2'}\n\n >>> del foo.metadata['author']\n >>> 'author' in foo.metadata\n False\n\n >>> foo.metadata['lastchanged']\n '2017-07-19@15-00-00'\n\nCalling Processes\n-----------------\n\nIf you need low-level access to the git-annex processes, you can do it\nvia the classes included in ``process`` module::\n\n >>> from git_annex_adapter.process import ...\n\nSubclasses of ``GitAnnexBatchProcess`` return relevant output (usually\none line or a dict object) whenever called with a line of input.\nFor example, ``git-annex metadata --batch --json``::\n\n >>> proc = GitAnnexMetadataBatchJsonProcess('/path/to/repo')\n >>> proc(file='foo')\n {..., 'key':'SHA256E-s3--2c26...', 'fields': ...}\n\n >>> proc(file='foo', fields={'numbers': ['1', '2', '3']})\n {..., 'key': ..., 'fields': {'numbers': ['1', '2', '3'], ...}}\n\nSubclasses of ``GitAnnexRunner`` call a single program with\ndifferent arguments. They return a ``subprocess.CompletedProcess``\nwhen called, which captures stdout and stderr. For example, to run\n``git-annex version``::\n\n >>> runner = GitAnnexVersionRunner('/path/to/repo')\n >>> runner(raw=True)\n CompletedProcess(..., stdout='6.20170101', stderr='')\n\n >>> print(runner().stdout)\n git-annex version: 6.20170101\n ...\n\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/alpernebbi/git-annex-adapter", "keywords": "git-annex metadata", "license": "GPL3+", "maintainer": "", "maintainer_email": "", "name": "git-annex-adapter", "package_url": "https://pypi.org/project/git-annex-adapter/", "platform": "", "project_url": "https://pypi.org/project/git-annex-adapter/", "project_urls": { "Homepage": "https://github.com/alpernebbi/git-annex-adapter" }, "release_url": "https://pypi.org/project/git-annex-adapter/0.2.1/", "requires_dist": [ "pygit2" ], "requires_python": "", "summary": "Call git-annex commands from Python", "version": "0.2.1" }, "last_serial": 4612192, "releases": { "0.2.0": [ { "comment_text": "", "digests": { "md5": "5471e19b6b2043116ed3059f9a6fc002", "sha256": "7cf972c44fe72e04dbdf40896fab4a120ba84b3110b2cf2dcd22728a0d5d95c1" }, "downloads": -1, "filename": "git_annex_adapter-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "5471e19b6b2043116ed3059f9a6fc002", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14867, "upload_time": "2017-08-23T20:28:56", "url": "https://files.pythonhosted.org/packages/1d/10/2376f7a7005c6340cd620e211313116901944e0f595a798f51f405d74a97/git_annex_adapter-0.2.0-py3-none-any.whl" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "0eba2d376d794842d779ad1fdd2e1a1f", "sha256": "5a7a6bcd350e59b67b2ef1ac28c3fe95029f6245cabdfb57c6688aaafdd3734b" }, "downloads": -1, "filename": "git_annex_adapter-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "0eba2d376d794842d779ad1fdd2e1a1f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 24899, "upload_time": "2018-12-18T13:21:14", "url": "https://files.pythonhosted.org/packages/55/3d/48bd197d4a93f5679d4d421c4f55ae6ba1c2b6e6dae48b00f92c9f53639d/git_annex_adapter-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a379cef28180b227855128d684cf0e26", "sha256": "c132f7e53596a3efcabb5bc7bc582be6bc49f37be44eb4ec9e2163160dae3d20" }, "downloads": -1, "filename": "git-annex-adapter-0.2.1.tar.gz", "has_sig": false, "md5_digest": "a379cef28180b227855128d684cf0e26", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11687, "upload_time": "2018-12-18T13:21:15", "url": "https://files.pythonhosted.org/packages/11/d5/262e2335de70e0d8b63a2137ae787198a1afcd3ac856e1565316e162dfa2/git-annex-adapter-0.2.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "0eba2d376d794842d779ad1fdd2e1a1f", "sha256": "5a7a6bcd350e59b67b2ef1ac28c3fe95029f6245cabdfb57c6688aaafdd3734b" }, "downloads": -1, "filename": "git_annex_adapter-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "0eba2d376d794842d779ad1fdd2e1a1f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 24899, "upload_time": "2018-12-18T13:21:14", "url": "https://files.pythonhosted.org/packages/55/3d/48bd197d4a93f5679d4d421c4f55ae6ba1c2b6e6dae48b00f92c9f53639d/git_annex_adapter-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a379cef28180b227855128d684cf0e26", "sha256": "c132f7e53596a3efcabb5bc7bc582be6bc49f37be44eb4ec9e2163160dae3d20" }, "downloads": -1, "filename": "git-annex-adapter-0.2.1.tar.gz", "has_sig": false, "md5_digest": "a379cef28180b227855128d684cf0e26", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11687, "upload_time": "2018-12-18T13:21:15", "url": "https://files.pythonhosted.org/packages/11/d5/262e2335de70e0d8b63a2137ae787198a1afcd3ac856e1565316e162dfa2/git-annex-adapter-0.2.1.tar.gz" } ] }