Skip to main content

version travis coveralls license

Flask extension for HashFS, a content-addressable file management system.

What is HashFS?

HashFS 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.

Typical use cases for this kind of system are ones where:

  • Files are written once and never change (e.g. image storage).

  • It’s desirable to have no duplicate files (e.g. user uploads).

  • File metadata is stored elsewhere (e.g. in a database).

What is Flask-HashFS?

Flask-HashFS is a Flask extension that integrates HashFS into the Flask ecosystem.

Quickstart

Install using pip:

pip install Flask-HashFS

Initialization

from flask import Flask
from flask_hashfs import FlaskHashFS

app = Flask(__name__)
fs = FlaskHashFS()

Configure Flask-HashFS to store files in /var/www/data/uploads and give them a route prefix at /uploads.

app.config.update({
    'HASHFS_HOST': None,
    'HASHFS_PATH_PREFIX': '/uploads',
    'HASHFS_ROOT_FOLDER': '/var/www/data/uploads',
    'HASHFS_DEPTH': 4,
    'HASHFS_WIDTH': 1,
    'HASHFS_ALGORITHM': 'sha256'
})

fs.init_app(app)

Usage

Use Flask-HashFS to manage files using HashFS.

with app.app_context():
    # Store readable objects or file paths
    address = fs.put(io_obj, extension='.jpg')


    # Get a file's hash address
    assert fs.get(address.id) == address
    assert fs.get(address.relpath) == address
    assert fs.get(address.abspath) == address
    assert fs.get('invalid') is None


    # Get a BufferedReader handler
    fileio = fs.open(address.id)

    # Or using the full path...
    fileio = fs.open(address.abspath)

    # Or using a path relative to fs.root
    fileio = fs.open(address.relpath)


    # Delete a file by address ID or path
    fs.delete(address.id)
    fs.delete(address.abspath)
    fs.delete(address.relpath)

For direct access to the HashFS instance, use the client attribute.

fs.client
assert isinstance(fs.client, flask_hashfs.HashFS)

Generate URLs for HashFS content.

with app.test_request_context():
    fs.url_for('relative/file/path')

For more details, please see the full documentation at http://flask-hashfs.readthedocs.org and http://hashfs.readthedocs.org.

Changelog

v0.3.0 (2015-06-03)

  • Replace manual proxy access of HashFS methods with single __getattr__ method.

v0.2.0 (2015-06-02)

  • Pin hashfs dependency to >=0.3.0. (breaking change)

  • Rename config key HASHFS_LENGTH to HASHFS_WIDTH to be in alignment with hashfs>=0.3.0. (breaking change)

v0.1.0 (2015-06-02)

  • First release.

  • Add FlaskHashFS.put.

  • Add FlaskHashFS.get.

  • Add FlaskHashFS.open.

  • Add FlaskHashFS.delete.

  • Add FlaskHashFS.url_for.

Metadata

Release files for Flask-HashFS 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for Flask-HashFS 0.3.0
File Size Uploaded
Flask-HashFS-0.3.0.tar.gz 16.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for Flask-HashFS 0.3.0
File Interpreter ABI Platform
Flask_HashFS-0.3.0-py2.py3-none-any.whl Python 2, Python 3 none any Details

Total release size: 23.7 kB

Release files / Flask-HashFS-0.3.0.tar.gz

Download URL Flask-HashFS-0.3.0.tar.gz
Size 16.0 kB
Tags Source
SHA-256 checksum
How to use checksums
47514beef005b5895f954c0e6bafcdb0cc6c819c947d6d57a84914fc901d9cfd
BLAKE2b-256 checksum
How to use checksums
0ec2d69f969e0066ce6adc66682822af62949c72edf24f5341fe0a8023b9afaf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / Flask_HashFS-0.3.0-py2.py3-none-any.whl

Download URL Flask_HashFS-0.3.0-py2.py3-none-any.whl
Size 7.6 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
f5e1d77917013e5e94c1010a709c47a8c18602e11a851c9e84b68cfb0c1ac043
BLAKE2b-256 checksum
How to use checksums
a4174e615704add3c43355943010ed7c32d95c2e99c6c8a9fce8d07e5a8427d6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page