{ "info": { "author": "Derrick Gilland", "author_email": "dgilland@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 2 - Pre-Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Topic :: Software Development :: Libraries", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "************\r\nFlask-HashFS\r\n************\r\n\r\n|version| |travis| |coveralls| |license|\r\n\r\n\r\nFlask extension for `HashFS `_, a content-addressable file management system.\r\n\r\n\r\nWhat is HashFS?\r\n===============\r\n\r\nHashFS is a content-addressable file management system. What does that mean? Simply, that HashFS manages a directory where files are saved based on the file's hash.\r\n\r\nTypical use cases for this kind of system are ones where:\r\n\r\n- Files are written once and never change (e.g. image storage).\r\n- It's desirable to have no duplicate files (e.g. user uploads).\r\n- File metadata is stored elsewhere (e.g. in a database).\r\n\r\n\r\nWhat is Flask-HashFS?\r\n=====================\r\n\r\nFlask-HashFS is a Flask extension that integrates HashFS into the Flask ecosystem.\r\n\r\n\r\nLinks\r\n=====\r\n\r\n- Project: https://github.com/dgilland/flask-hashfs\r\n- Documentation: http://flask-hashfs.readthedocs.org\r\n- PyPI: https://pypi.python.org/pypi/flask-hashfs/\r\n- TravisCI: https://travis-ci.org/dgilland/flask-hashfs\r\n\r\n\r\nQuickstart\r\n==========\r\n\r\nInstall using pip:\r\n\r\n\r\n::\r\n\r\n pip install Flask-HashFS\r\n\r\n\r\nInitialization\r\n--------------\r\n\r\n.. code-block:: python\r\n\r\n from flask import Flask\r\n from flask_hashfs import FlaskHashFS\r\n\r\n app = Flask(__name__)\r\n fs = FlaskHashFS()\r\n\r\n\r\nConfigure ``Flask-HashFS`` to store files in ``/var/www/data/uploads`` and give them a route prefix at ``/uploads``.\r\n\r\n\r\n.. code-block:: python\r\n\r\n app.config.update({\r\n 'HASHFS_HOST': None,\r\n 'HASHFS_PATH_PREFIX': '/uploads',\r\n 'HASHFS_ROOT_FOLDER': '/var/www/data/uploads',\r\n 'HASHFS_DEPTH': 4,\r\n 'HASHFS_WIDTH': 1,\r\n 'HASHFS_ALGORITHM': 'sha256'\r\n })\r\n\r\n fs.init_app(app)\r\n\r\n\r\nUsage\r\n-----\r\n\r\nUse Flask-HashFS to manage files using HashFS.\r\n\r\n\r\n.. code-block:: python\r\n\r\n with app.app_context():\r\n # Store readable objects or file paths\r\n address = fs.put(io_obj, extension='.jpg')\r\n\r\n\r\n # Get a file's hash address\r\n assert fs.get(address.id) == address\r\n assert fs.get(address.relpath) == address\r\n assert fs.get(address.abspath) == address\r\n assert fs.get('invalid') is None\r\n\r\n\r\n # Get a BufferedReader handler\r\n fileio = fs.open(address.id)\r\n\r\n # Or using the full path...\r\n fileio = fs.open(address.abspath)\r\n\r\n # Or using a path relative to fs.root\r\n fileio = fs.open(address.relpath)\r\n\r\n\r\n # Delete a file by address ID or path\r\n fs.delete(address.id)\r\n fs.delete(address.abspath)\r\n fs.delete(address.relpath)\r\n\r\n\r\nFor direct access to the HashFS instance, use the ``client`` attribute.\r\n\r\n\r\n.. code-block:: python\r\n\r\n fs.client\r\n assert isinstance(fs.client, flask_hashfs.HashFS)\r\n\r\n\r\nGenerate URLs for HashFS content.\r\n\r\n\r\n.. code-block:: python\r\n\r\n with app.test_request_context():\r\n fs.url_for('relative/file/path')\r\n\r\n\r\nFor more details, please see the full documentation at http://flask-hashfs.readthedocs.org and http://hashfs.readthedocs.org.\r\n\r\n\r\n\r\n.. |version| image:: https://img.shields.io/pypi/v/flask-hashfs.svg?style=flat-square\r\n :target: https://pypi.python.org/pypi/flask-hashfs/\r\n\r\n.. |travis| image:: https://img.shields.io/travis/dgilland/flask-hashfs/master.svg?style=flat-square\r\n :target: https://travis-ci.org/dgilland/flask-hashfs\r\n\r\n.. |coveralls| image:: https://img.shields.io/coveralls/dgilland/flask-hashfs/master.svg?style=flat-square\r\n :target: https://coveralls.io/r/dgilland/flask-hashfs\r\n\r\n.. |license| image:: https://img.shields.io/pypi/l/flask-hashfs.svg?style=flat-square\r\n :target: https://pypi.python.org/pypi/flask-hashfs/\r\n\r\n\r\nChangelog\r\n=========\r\n\r\n\r\nv0.3.0 (2015-06-03)\r\n-------------------\r\n\r\n- Replace manual proxy access of ``HashFS`` methods with single ``__getattr__`` method.\r\n\r\n\r\nv0.2.0 (2015-06-02)\r\n-------------------\r\n\r\n- Pin ``hashfs`` dependency to ``>=0.3.0``. (**breaking change**)\r\n- Rename config key ``HASHFS_LENGTH`` to ``HASHFS_WIDTH`` to be in alignment with ``hashfs>=0.3.0``. (**breaking change**)\r\n\r\n\r\nv0.1.0 (2015-06-02)\r\n-------------------\r\n\r\n- First release.\r\n- Add ``FlaskHashFS.put``.\r\n- Add ``FlaskHashFS.get``.\r\n- Add ``FlaskHashFS.open``.\r\n- Add ``FlaskHashFS.delete``.\r\n- Add ``FlaskHashFS.url_for``.", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/dgilland/flask-hashfs", "keywords": "flask hashfs hash file system content addressable fixed storage", "license": "MIT License", "maintainer": "", "maintainer_email": "", "name": "Flask-HashFS", "package_url": "https://pypi.org/project/Flask-HashFS/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/Flask-HashFS/", "project_urls": { "Homepage": "https://github.com/dgilland/flask-hashfs" }, "release_url": "https://pypi.org/project/Flask-HashFS/0.3.0/", "requires_dist": null, "requires_python": null, "summary": "Flask extension for HashFS, a content-addressable file management system.", "version": "0.3.0" }, "last_serial": 1621345, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "f0bc327b037fc718f85cbfee7ae3f1a6", "sha256": "f1608b009bfad3071e0229edda1eb173fef1983bf3f16ddf45a4c5f2115f039d" }, "downloads": -1, "filename": "Flask_HashFS-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f0bc327b037fc718f85cbfee7ae3f1a6", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7638, "upload_time": "2015-06-02T17:02:35", "url": "https://files.pythonhosted.org/packages/49/98/49b84cb527a94c64470e0348151b5f04fe1672b75a3954d73809ff95d943/Flask_HashFS-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "92b5d4e07b35412cb8ab81e4bcc5bfc0", "sha256": "68726169fb36e01031663b8356df6c5efa41a119030f7962b5ec7ce4f9ca32e4" }, "downloads": -1, "filename": "Flask-HashFS-0.1.0.tar.gz", "has_sig": false, "md5_digest": "92b5d4e07b35412cb8ab81e4bcc5bfc0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16028, "upload_time": "2015-06-02T17:02:32", "url": "https://files.pythonhosted.org/packages/11/7c/813a494c9726af048d734216342675fe3e66ae264d2986e4f604c0b39cf0/Flask-HashFS-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "f135d62f80fd57ad9f8db2fb8514dad6", "sha256": "3f72450dd150fb25b6d3a6e95345abf50a4ae8d3a32a142da7a9c4ddbfd3e577" }, "downloads": -1, "filename": "Flask_HashFS-0.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f135d62f80fd57ad9f8db2fb8514dad6", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7843, "upload_time": "2015-06-02T20:38:39", "url": "https://files.pythonhosted.org/packages/6a/ee/9902a4b309dc475978643a9d91e98d13ae712ce319107b4b9508f18a611f/Flask_HashFS-0.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2b4a291e9d5dafffed2c8c9233311bdf", "sha256": "a318f3342c5221b78b331a0fb2a0f5cc11f8ea8c05e17e7cd425e071c7560cd6" }, "downloads": -1, "filename": "Flask-HashFS-0.2.0.tar.gz", "has_sig": false, "md5_digest": "2b4a291e9d5dafffed2c8c9233311bdf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16215, "upload_time": "2015-06-02T20:38:35", "url": "https://files.pythonhosted.org/packages/0e/93/f0afc5233a4ab23c65af8f5ec807b6ce29fa8098352426afd342558eb844/Flask-HashFS-0.2.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "3a87ed68656b58fea0295d7b2835092e", "sha256": "f5e1d77917013e5e94c1010a709c47a8c18602e11a851c9e84b68cfb0c1ac043" }, "downloads": -1, "filename": "Flask_HashFS-0.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3a87ed68656b58fea0295d7b2835092e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7633, "upload_time": "2015-06-03T20:48:15", "url": "https://files.pythonhosted.org/packages/a4/17/4e615704add3c43355943010ed7c32d95c2e99c6c8a9fce8d07e5a8427d6/Flask_HashFS-0.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8bac4001bdc86722d062952002425732", "sha256": "47514beef005b5895f954c0e6bafcdb0cc6c819c947d6d57a84914fc901d9cfd" }, "downloads": -1, "filename": "Flask-HashFS-0.3.0.tar.gz", "has_sig": false, "md5_digest": "8bac4001bdc86722d062952002425732", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16027, "upload_time": "2015-06-03T20:48:12", "url": "https://files.pythonhosted.org/packages/0e/c2/d69f969e0066ce6adc66682822af62949c72edf24f5341fe0a8023b9afaf/Flask-HashFS-0.3.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "3a87ed68656b58fea0295d7b2835092e", "sha256": "f5e1d77917013e5e94c1010a709c47a8c18602e11a851c9e84b68cfb0c1ac043" }, "downloads": -1, "filename": "Flask_HashFS-0.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3a87ed68656b58fea0295d7b2835092e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7633, "upload_time": "2015-06-03T20:48:15", "url": "https://files.pythonhosted.org/packages/a4/17/4e615704add3c43355943010ed7c32d95c2e99c6c8a9fce8d07e5a8427d6/Flask_HashFS-0.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8bac4001bdc86722d062952002425732", "sha256": "47514beef005b5895f954c0e6bafcdb0cc6c819c947d6d57a84914fc901d9cfd" }, "downloads": -1, "filename": "Flask-HashFS-0.3.0.tar.gz", "has_sig": false, "md5_digest": "8bac4001bdc86722d062952002425732", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16027, "upload_time": "2015-06-03T20:48:12", "url": "https://files.pythonhosted.org/packages/0e/c2/d69f969e0066ce6adc66682822af62949c72edf24f5341fe0a8023b9afaf/Flask-HashFS-0.3.0.tar.gz" } ] }