Metadata-Version: 2.0
Name: flask-fs
Version: 0.4.0
Summary: Simple and easy file storages for Flask
Home-page: https://github.com/noirbizarre/flask-fs
Author: Axel Haustant
Author-email: noirbizarre@gmail.com
License: MIT
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Programming Language :: Python
Classifier: Environment :: Web Environment
Classifier: Operating System :: OS Independent
Classifier: Intended Audience :: Developers
Classifier: Topic :: System :: Software Distribution
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: License :: OSI Approved :: MIT License
Requires-Dist: flask
Requires-Dist: six
Provides-Extra: all
Requires-Dist: boto3; extra == 'all'
Requires-Dist: pymongo (>=3.0); extra == 'all'
Requires-Dist: python-swiftclient; extra == 'all'
Provides-Extra: ci
Requires-Dist: boto3; extra == 'ci'
Requires-Dist: flake8; extra == 'ci'
Requires-Dist: flask-mongoengine; extra == 'ci'
Requires-Dist: invoke (>=0.13); extra == 'ci'
Requires-Dist: pillow; extra == 'ci'
Requires-Dist: pymongo (>=3.0); extra == 'ci'
Requires-Dist: pytest; extra == 'ci'
Requires-Dist: pytest-cov; extra == 'ci'
Requires-Dist: pytest-faker; extra == 'ci'
Requires-Dist: pytest-flask; extra == 'ci'
Requires-Dist: pytest-mock; extra == 'ci'
Requires-Dist: pytest-sugar; extra == 'ci'
Requires-Dist: python-swiftclient; extra == 'ci'
Provides-Extra: dev
Requires-Dist: alabaster; extra == 'dev'
Requires-Dist: boto3; extra == 'dev'
Requires-Dist: boto3; extra == 'dev'
Requires-Dist: flake8; extra == 'dev'
Requires-Dist: flask-mongoengine; extra == 'dev'
Requires-Dist: flask-mongoengine; extra == 'dev'
Requires-Dist: invoke (>=0.13); extra == 'dev'
Requires-Dist: pillow; extra == 'dev'
Requires-Dist: pillow; extra == 'dev'
Requires-Dist: pymongo (>=3.0); extra == 'dev'
Requires-Dist: pymongo (>=3.0); extra == 'dev'
Requires-Dist: pytest; extra == 'dev'
Requires-Dist: pytest-cov; extra == 'dev'
Requires-Dist: pytest-faker; extra == 'dev'
Requires-Dist: pytest-flask; extra == 'dev'
Requires-Dist: pytest-mock; extra == 'dev'
Requires-Dist: pytest-sugar; extra == 'dev'
Requires-Dist: python-swiftclient; extra == 'dev'
Requires-Dist: python-swiftclient; extra == 'dev'
Requires-Dist: sphinx; extra == 'dev'
Requires-Dist: tox; extra == 'dev'
Provides-Extra: doc
Requires-Dist: alabaster; extra == 'doc'
Requires-Dist: boto3; extra == 'doc'
Requires-Dist: flask-mongoengine; extra == 'doc'
Requires-Dist: pillow; extra == 'doc'
Requires-Dist: pymongo (>=3.0); extra == 'doc'
Requires-Dist: python-swiftclient; extra == 'doc'
Requires-Dist: sphinx; extra == 'doc'
Provides-Extra: gridfs
Requires-Dist: pymongo (>=3.0); extra == 'gridfs'
Provides-Extra: qa
Requires-Dist: boto3; extra == 'qa'
Requires-Dist: flask-mongoengine; extra == 'qa'
Requires-Dist: pillow; extra == 'qa'
Requires-Dist: pymongo (>=3.0); extra == 'qa'
Requires-Dist: pytest; extra == 'qa'
Requires-Dist: pytest-faker; extra == 'qa'
Requires-Dist: pytest-flask; extra == 'qa'
Requires-Dist: pytest-mock; extra == 'qa'
Requires-Dist: pytest-sugar; extra == 'qa'
Requires-Dist: python-swiftclient; extra == 'qa'
Provides-Extra: s3
Requires-Dist: boto3; extra == 's3'
Provides-Extra: swift
Requires-Dist: python-swiftclient; extra == 'swift'
Provides-Extra: test
Requires-Dist: boto3; extra == 'test'
Requires-Dist: flask-mongoengine; extra == 'test'
Requires-Dist: pillow; extra == 'test'
Requires-Dist: pymongo (>=3.0); extra == 'test'
Requires-Dist: pytest; extra == 'test'
Requires-Dist: pytest-faker; extra == 'test'
Requires-Dist: pytest-flask; extra == 'test'
Requires-Dist: pytest-mock; extra == 'test'
Requires-Dist: pytest-sugar; extra == 'test'
Requires-Dist: python-swiftclient; extra == 'test'

========
Flask-FS
========

.. image:: https://travis-ci.org/noirbizarre/flask-fs.svg?tag=v0.4.0
    :target: https://travis-ci.org/noirbizarre/flask-fs
    :alt: Build status
.. image:: https://coveralls.io/repos/noirbizarre/flask-fs/badge.svg?tag=v0.4.0
    :target: https://coveralls.io/r/noirbizarre/flask-fs?tag=v0.4.0
    :alt: Code coverage
.. image:: https://readthedocs.org/projects/flask-fs/badge/?version=0.4.0
    :target: http://flask-fs.readthedocs.org/en/latest/
    :alt: Documentation status

Simple and easy file storages for Flask


Compatibility
=============

Flask-FS requires Python 2.7+ and Flask 0.10+.

Amazon S3 support requires Boto3.

GridFS support requires PyMongo 3+.

OpenStack Swift support requires python-swift-client.


Installation
============

You can install Flask-FS with pip:

.. code-block:: console

    $ pip install flask-fs
    # or
    $ pip install flask-fs[s3]  # For Amazon S3 backend support
    $ pip install flask-fs[swift]  # For OpenStack swift backend support
    $ pip install flask-fs[gridfs]  # For GridFS backend support
    $ pip install flask-fs[all]  # To include all dependencies for all backends


Quick start
===========

.. code-block:: python

    from flask import Flask
    import flask_fs as fs

    app = Flask(__name__)
    fs.init_app(app)

    images = fs.Storage('images')


    if __name__ == '__main__':
        app.run(debug=True)


Documentation
=============

The full documentation is hosted `on Read the Docs <http://flask-fs.readthedocs.org/en/latest/>`_

Changelog
=========

0.4.0 (2017-06-24)
------------------

- Added backend level configuration ``FS_{BACKEND_NAME}_{KEY}``
- Improved backend documentation
- Use setuptools entry points to register backends.
- Added `NONE` extensions specification
- Added `list_files` to `Storage` to list the current bucket files
- Image optimization preserve file type as much as possible
- Ensure images are not overwritted before rerendering

0.3.0 (2017-03-05)
------------------

- Switch to pytest
- ``ImageField`` optimization/compression.
  Resized images are now compressed.
  Default image can also be optimized on upload with ``FS_IMAGES_OPTIMIZE = True``
  or by specifying `optimize=True` as field parameter.
- ``ImageField`` has now the ability to rerender images with the ``rerender()`` method.

0.2.1 (2017-01-17)
------------------

- Expose Python 3 compatibility

0.2.0 (2016-10-11)
------------------

- Proper github publication
- Initial S3, GridFS and Swift backend implementations
- Python 3 fixes


0.1 (2015-04-07)
----------------

- Initial release



