{ "info": { "author": "Reuben Cummings", "author_email": "reubano@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "Intended Audience :: Developers", "Intended Audience :: End Users/Desktop", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Operating System :: MacOS :: MacOS X", "Operating System :: POSIX", "Operating System :: POSIX :: Linux", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7" ], "description": "# ckanny\n\n## Introduction\n\nckanny is a [command line interface](#cli) for interacting with remote and local [CKAN](http://ckan.org/) instances. Under the hood, it uses [ckanutils](https://github.com/reubano/ckanutils).\n\nWith ckanny, you can\n\n- Download a CKAN resource\n- Create a CKAN package\n- Update a CKAN DataStore from data in the FileStore\n- Copy a FileStore resource from one CKAN instance to another\n- and much more...\n\nckanny performs smart updates by computing the hash of a file and will only update the datastore if the file has changed. This allows you to schedule a script to run on a frequent basis, e.g., `@hourly` via a cron job, without updating the CKAN instance unnecessarily.\n\n## Requirements\n\nckanny has been tested on the following configuration:\n\n- MacOS X 10.9.5\n- Python 2.7.9\n\nckanny requires the following in order to run properly:\n\n- [Python >= 2.7](http://www.python.org/download) (MacOS X comes with python preinstalled)\n\n## Installation\n\n(You are using a [virtualenv](http://www.virtualenv.org/en/latest/index.html), right?)\n\n sudo pip install ckanny\n\n## CLI\n\nckanny comes with a built in command line interface `ckanny`.\n\n### Usage\n\n ckanny [.] []\n\n### Examples\n\n*show help*\n\n ckanny -h\n\n```bash\nusage: ckanny [.] []\n\npositional arguments:\n command the command to run\n\noptional arguments:\n -h, --help show this help message and exit\n\navailable commands:\n ver Show ckanny version\n\n [ds]\n delete Deletes a datastore table\n update Updates a datastore table based on the current filestore resource\n upload Uploads a file to a datastore table\n\n [fs]\n fetch Downloads a filestore resource\n migrate Copies a filestore resource from one ckan instance to another\n upload Updates the filestore of an existing resource or creates a new one\n\n [hdx]\n customize Introspects custom organization values\n\n [pk]\n create Creates a package (aka dataset)\n```\n\n*show version*\n\n ckanny ver\n\n*fetch a resource*\n\n ckanny fs.fetch -k -r \n\n*show fs.fetch help*\n\n ckanny fs.fetch -h\n\n```bash\nusage: ckanny fs.fetch\n [-h] [-q] [-n] [-c CHUNKSIZE_BYTES] [-u UA] [-k API_KEY] [-r REMOTE]\n [-d DESTINATION]\n [resource_id]\n\nDownloads a filestore resource\n\npositional arguments:\n resource_id the resource id\n\noptional arguments:\n -h, --help show this help message and exit\n -q, --quiet suppress debug statements\n -n, --name-from-id Use resource id for filename\n -c CHUNKSIZE_BYTES, --chunksize-bytes CHUNKSIZE_BYTES\n number of bytes to read/write at a time (default:\n 1048576)\n -u UA, --ua UA the user agent (uses `CKAN_USER_AGENT` ENV if\n available) (default: None)\n -k API_KEY, --api-key API_KEY\n the api key (uses `CKAN_API_KEY` ENV if available)\n (default: None)\n -r REMOTE, --remote REMOTE\n the remote ckan url (uses `CKAN_REMOTE_URL` ENV if\n available) (default: None)\n -d DESTINATION, --destination DESTINATION\n the destination folder or file path (default:\n .)\n```\n\n*create a package*\n\n ckanny pk.create -k -r \n\n*create a package with resources*\n\n ckanny pk.create -k -r -f 'file1.csv,file2.csv' \n\n*show pk.create help*\n\n ckanny pk.create -h\n\n```bash\nusage: /Users/reubano/.virtualenvs/ckan/bin/ckanny pk.create\n [-h] [-q] [-u UA] [-k API_KEY]\n [-r REMOTE] [-e END] [-S START]\n [-L LOCATION] [-c CAVEATS] [-y TYPE]\n [-T TAGS] [-t TITLE]\n [-m {observed,other,census,survey,registry}]\n [-d DESCRIPTION] [-f FILES] [-s SOURCE]\n [-l LICENSE_ID]\n [org_id]\n\nCreates a package (aka dataset)\n\npositional arguments:\n org_id the organization id\n\noptional arguments:\n -h, --help show this help message and exit\n -q, --quiet suppress debug statements\n -u UA, --ua UA\n the user agent (uses `CKAN_USER_AGENT` ENV if\n available) (default: None)\n -k API_KEY, --api-key API_KEY\n the api key (uses `CKAN_API_KEY` ENV if available)\n (default: None)\n -r REMOTE, --remote REMOTE\n the remote ckan url (uses `CKAN_REMOTE_URL` ENV if\n available) (default: None)\n -e END, --end END\n Data end date\n -S START, --start START\n Data start date (default: 09/25/2015)\n -L LOCATION, --location LOCATION\n Location the data represents (default: world)\n -c CAVEATS, --caveats CAVEATS\n Package caveats\n -y TYPE, --type TYPE\n Package type (default: dataset)\n -T TAGS, --tags TAGS\n Comma separated list of tags\n -t TITLE, --title TITLE\n Package title (default: Untitled 2015-09-25\n 12:36:14.141533)\n -m {observed,other,census,survey,registry}, --methodology {observed,other,census,survey,registry}\n Data collection methodology (default: observed)\n -d DESCRIPTION, --description DESCRIPTION\n Dataset description (default: same as `title`)\n -f FILES, --files FILES\n Comma separated list of file paths to add\n -s SOURCE, --source SOURCE\n Data source (default: Multiple sources)\n -l LICENSE_ID, --license-id LICENSE_ID\n Data license (default: cc-by-igo)\n```\n## Configuration\n\nckanny will use the following [Environment Variables](http://www.cyberciti.biz/faq/set-environment-variable-linux/) if set:\n\nEnvironment Variable|Description\n--------------------|-----------\nCKAN_API_KEY|Your CKAN API Key\nCKAN_REMOTE_URL|Your CKAN instance remote url\nCKAN_USER_AGENT|Your user agent\n\n## Hash Table\n\nIn order to support file hashing, ckanny creates a hash table resource called `hash_table.csv` with the following schema:\n\nfield|type\n------|----\ndatastore_id|text\nhash|text\n\nBy default the hash table resource will be placed in the package `hash_table`. ckanny will create this package if it doesn't exist. Optionally, you can set the hash table package in the command line with the `-H, --hash-table` option, or in a Python file as the `hash_table` keyword argument to `CKAN`.\n\nExample:\n\n ckanny ds.update -H custom_hash_table 36f33846-cb43-438e-95fd-f518104a32ed\n\n## Scripts\n\nckanny comes with a built in task manager `manage.py` and a `Makefile`.\n\n### Setup\n\n pip install -r dev-requirements.txt\n\n### Examples\n\n*Run python linter and nose tests*\n\n```bash\nmanage lint\nmanage test\n```\n\nOr if `make` is more your speed...\n\n```bash\nmake lint\nmake test\n```\n\n## Contributing\n\nView [CONTRIBUTING.rst](https://github.com/reubano/ckanny/blob/master/CONTRIBUTING.rst)\n\n## License\n\nckanny is distributed under the [MIT License](http://opensource.org/licenses/MIT), the same as [ckanutils](https://github.com/reubano/ckanutils).\n\n\n=========\nChangelog\n=========\n\nHere you can find the recent changes to ckanny..\n\n.. changelog::\n :version: dev\n :released: Ongoing\n\n .. change::\n :tags: docs\n\n Updated CHANGES.\n\n.. changelog::\n :version: 0.1.0\n :released: 2015-06-12\n\n .. change::\n :tags: project\n\n First release on PyPi.\n\n.. todo:: vim: set filetype=rst:", "description_content_type": null, "docs_url": null, "download_url": "https://github.com/reubano/ckanny/downloads/ckanny*.tgz", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/reubano/ckanny", "keywords": "ckanny", "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "ckanny", "package_url": "https://pypi.org/project/ckanny/", "platform": "MacOS X,Windows,Linux", "project_url": "https://pypi.org/project/ckanny/", "project_urls": { "Download": "https://github.com/reubano/ckanny/downloads/ckanny*.tgz", "Homepage": "https://github.com/reubano/ckanny" }, "release_url": "https://pypi.org/project/ckanny/0.17.2/", "requires_dist": [ "manage.py (==0.2.10)", "xattr (==0.7.5)", "tabutils (==0.23.1)", "ckanutils (==0.14.8)", "pkutils (==0.6.1)" ], "requires_python": null, "summary": "Miscellaneous CKAN utility scripts", "version": "0.17.2" }, "last_serial": 1845180, "releases": { "0.11.0": [], "0.11.2": [ { "comment_text": "", "digests": { "md5": "faed7dc0e420752567a0dc7c2aaa61b6", "sha256": "b0dce4ef9c6833f161784e8f865055e7de48b04bf027d92729e008b4424afc49" }, "downloads": -1, "filename": "ckanny-0.11.2-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "faed7dc0e420752567a0dc7c2aaa61b6", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14632, "upload_time": "2015-08-26T13:42:18", "url": "https://files.pythonhosted.org/packages/ac/f0/8f6c60da205e00ca8bcbd2fe900df78d14b79c95bd67803b73a8e52222d7/ckanny-0.11.2-py2.py3-none-any.whl" } ], "0.11.3": [ { "comment_text": "", "digests": { "md5": "6b3051ff1f14b37c3853c2f7035fbb5a", "sha256": "dbe27159165554eb788264fc631a20b7d9f6ac590864dace268bac9c33e75256" }, "downloads": -1, "filename": "ckanny-0.11.3-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "6b3051ff1f14b37c3853c2f7035fbb5a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14629, "upload_time": "2015-08-26T13:57:14", "url": "https://files.pythonhosted.org/packages/56/b7/076afb11bc9479afcbcd163583256e764174caf6a32c262cc4d9b382ed6e/ckanny-0.11.3-py2.py3-none-any.whl" } ], "0.13.0": [ { "comment_text": "", "digests": { "md5": "49c7619b335342bf6976de260b8d9099", "sha256": "afc2cf08112cf9e570abe4b4a0f313d67c34ffdc65630cb5f1575f1c2e3a9f3a" }, "downloads": -1, "filename": "ckanny-0.13.0-py27-none-any.whl", "has_sig": true, "md5_digest": "49c7619b335342bf6976de260b8d9099", "packagetype": "bdist_wheel", "python_version": "py27", "requires_python": null, "size": 18281, "upload_time": "2015-09-25T13:10:02", "url": "https://files.pythonhosted.org/packages/fd/92/66748103a086ac74d9f0c7c0c94c7721c5e9d8e67afd16a36b2d244e9d66/ckanny-0.13.0-py27-none-any.whl" } ], "0.14.0": [ { "comment_text": "", "digests": { "md5": "cdd4d952833f558b292dabea82410133", "sha256": "d7aa70c60e57ff923ca910da7b449f10aeb490f8fab3ec6191fdf527d891f094" }, "downloads": -1, "filename": "ckanny-0.14.0-py27-none-any.whl", "has_sig": true, "md5_digest": "cdd4d952833f558b292dabea82410133", "packagetype": "bdist_wheel", "python_version": "py27", "requires_python": null, "size": 18492, "upload_time": "2015-10-30T10:09:16", "url": "https://files.pythonhosted.org/packages/ae/1f/2ba542571278be2c4fe797cd36108696543165bdbdd57380f00cae9fd7a2/ckanny-0.14.0-py27-none-any.whl" } ], "0.15.0": [ { "comment_text": "", "digests": { "md5": "13d98c69a4bf2f74cb5555a6f6620475", "sha256": "38f3a0cde0bb743c8837174e4639b446c71621796b1d11da7e7dea1a666f7832" }, "downloads": -1, "filename": "ckanny-0.15.0-py27-none-any.whl", "has_sig": true, "md5_digest": "13d98c69a4bf2f74cb5555a6f6620475", "packagetype": "bdist_wheel", "python_version": "py27", "requires_python": null, "size": 18696, "upload_time": "2015-11-12T14:58:24", "url": "https://files.pythonhosted.org/packages/58/dd/ea4118f3bbaae566b55031717718357c04eb69466cb24fdb04d08f0a392f/ckanny-0.15.0-py27-none-any.whl" } ], "0.15.1": [ { "comment_text": "", "digests": { "md5": "52d4252cd7c19e15dc06b7e4b3999fe6", "sha256": "ab8efad67004b5f80f97dbdfb3a39c9398f1fce3ed66a2deda2717b650c5b61f" }, "downloads": -1, "filename": "ckanny-0.15.1-py27-none-any.whl", "has_sig": true, "md5_digest": "52d4252cd7c19e15dc06b7e4b3999fe6", "packagetype": "bdist_wheel", "python_version": "py27", "requires_python": null, "size": 18706, "upload_time": "2015-11-12T18:24:15", "url": "https://files.pythonhosted.org/packages/fa/73/2d0819111f1b67a2dc33b75bad4aa0ff8c1ffa0ebbf86a99e3ec3605ef3d/ckanny-0.15.1-py27-none-any.whl" } ], "0.15.2": [ { "comment_text": "", "digests": { "md5": "37e6c8dbe9a80dab4dd093b3f5704415", "sha256": "fae28b67098511034e43f422c8e2fb078a515099ba4b4ab59111abdd979f2c4e" }, "downloads": -1, "filename": "ckanny-0.15.2-py27-none-any.whl", "has_sig": true, "md5_digest": "37e6c8dbe9a80dab4dd093b3f5704415", "packagetype": "bdist_wheel", "python_version": "py27", "requires_python": null, "size": 18702, "upload_time": "2015-11-12T18:33:47", "url": "https://files.pythonhosted.org/packages/69/76/cc34e183c0a2683455125db67e67fb3f51b0b96a4f1b2b2c32e1bedd382e/ckanny-0.15.2-py27-none-any.whl" } ], "0.16.1": [ { "comment_text": "", "digests": { "md5": "fc8213a64cbdb25612c0e23e356fcf13", "sha256": "1c4107afe3d3f8adfc0b8a447bd0a94c7ac0dac5d7ea3b29dabb720f01c2da21" }, "downloads": -1, "filename": "ckanny-0.16.1-py27-none-any.whl", "has_sig": true, "md5_digest": "fc8213a64cbdb25612c0e23e356fcf13", "packagetype": "bdist_wheel", "python_version": "py27", "requires_python": null, "size": 18600, "upload_time": "2015-11-21T16:44:44", "url": "https://files.pythonhosted.org/packages/c9/29/46c37d8824181625ed2545c0edbc3d91852d2574bb124be0693c9bbedc0e/ckanny-0.16.1-py27-none-any.whl" } ], "0.17.0": [ { "comment_text": "", "digests": { "md5": "4e33d5347e99618e75a9da1fe69523fa", "sha256": "3abaec69fe5fab2288da4280e721a7a47fb31e8affe88b67684273e650583758" }, "downloads": -1, "filename": "ckanny-0.17.0-py27-none-any.whl", "has_sig": true, "md5_digest": "4e33d5347e99618e75a9da1fe69523fa", "packagetype": "bdist_wheel", "python_version": "py27", "requires_python": null, "size": 18602, "upload_time": "2015-11-26T10:19:41", "url": "https://files.pythonhosted.org/packages/a0/0b/cb20b58c11a458767dc8a246969488c3f0652a1b2c89ae9ba0c99e021bb1/ckanny-0.17.0-py27-none-any.whl" } ], "0.17.1": [ { "comment_text": "", "digests": { "md5": "c0d3ab01f3b365f5d52abd6d23134d13", "sha256": "ccf0367985a321e717e3719816e9f6f53848b3dbdf1d1457573ff9efe73f73fb" }, "downloads": -1, "filename": "ckanny-0.17.1-py27-none-any.whl", "has_sig": true, "md5_digest": "c0d3ab01f3b365f5d52abd6d23134d13", "packagetype": "bdist_wheel", "python_version": "py27", "requires_python": null, "size": 18626, "upload_time": "2015-12-03T15:10:58", "url": "https://files.pythonhosted.org/packages/5f/0d/f270c2aeb2f4e9cde20ada204a48ad8472bf73a34ddd756b555273a52e60/ckanny-0.17.1-py27-none-any.whl" } ], "0.17.2": [ { "comment_text": "", "digests": { "md5": "2e8eb6eceeca4546225f2a538e59ad68", "sha256": "4e475cfd602f2a58a6a1333eefd9d9aa4af8e8e81e5e7ce3de742ceb9e987f3f" }, "downloads": -1, "filename": "ckanny-0.17.2-py27-none-any.whl", "has_sig": true, "md5_digest": "2e8eb6eceeca4546225f2a538e59ad68", "packagetype": "bdist_wheel", "python_version": "py27", "requires_python": null, "size": 18623, "upload_time": "2015-12-03T15:22:38", "url": "https://files.pythonhosted.org/packages/cc/a8/68eedf8d701dc8649adaed80ac818aee197d5bd2c5c851da1b30131aaef4/ckanny-0.17.2-py27-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "2e8eb6eceeca4546225f2a538e59ad68", "sha256": "4e475cfd602f2a58a6a1333eefd9d9aa4af8e8e81e5e7ce3de742ceb9e987f3f" }, "downloads": -1, "filename": "ckanny-0.17.2-py27-none-any.whl", "has_sig": true, "md5_digest": "2e8eb6eceeca4546225f2a538e59ad68", "packagetype": "bdist_wheel", "python_version": "py27", "requires_python": null, "size": 18623, "upload_time": "2015-12-03T15:22:38", "url": "https://files.pythonhosted.org/packages/cc/a8/68eedf8d701dc8649adaed80ac818aee197d5bd2c5c851da1b30131aaef4/ckanny-0.17.2-py27-none-any.whl" } ] }