2010-04-16 14:24:12 +02:00
|
|
|
"""
|
|
|
|
|
Flask
|
|
|
|
|
-----
|
|
|
|
|
|
|
|
|
|
Flask is a microframework for Python based on Werkzeug, Jinja 2 and good
|
|
|
|
|
intentions. And before you ask: It's BSD licensed!
|
|
|
|
|
|
|
|
|
|
Flask is Fun
|
|
|
|
|
````````````
|
|
|
|
|
|
2014-05-07 21:51:12 +02:00
|
|
|
Save in a hello.py:
|
|
|
|
|
|
2013-04-24 09:42:52 +03:00
|
|
|
.. code:: python
|
2010-04-16 14:24:12 +02:00
|
|
|
|
|
|
|
|
from flask import Flask
|
|
|
|
|
app = Flask(__name__)
|
|
|
|
|
|
|
|
|
|
@app.route("/")
|
|
|
|
|
def hello():
|
|
|
|
|
return "Hello World!"
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
|
app.run()
|
|
|
|
|
|
|
|
|
|
And Easy to Setup
|
|
|
|
|
`````````````````
|
|
|
|
|
|
2014-05-07 21:51:12 +02:00
|
|
|
And run it:
|
|
|
|
|
|
2013-04-24 09:42:52 +03:00
|
|
|
.. code:: bash
|
2010-04-16 14:24:12 +02:00
|
|
|
|
2012-02-06 20:19:32 -05:00
|
|
|
$ pip install Flask
|
2010-04-16 14:24:12 +02:00
|
|
|
$ python hello.py
|
|
|
|
|
* Running on http://localhost:5000/
|
|
|
|
|
|
2016-06-02 12:47:36 -07:00
|
|
|
Ready for production? `Read this first <http://flask.pocoo.org/docs/deploying/>`.
|
|
|
|
|
|
2010-04-16 14:24:12 +02:00
|
|
|
Links
|
|
|
|
|
`````
|
|
|
|
|
|
|
|
|
|
* `website <http://flask.pocoo.org/>`_
|
|
|
|
|
* `documentation <http://flask.pocoo.org/docs/>`_
|
2010-04-20 18:40:58 +02:00
|
|
|
* `development version
|
2017-02-11 01:43:11 -08:00
|
|
|
<https://github.com/pallets/flask/zipball/master#egg=Flask-dev>`_
|
2010-04-16 14:24:12 +02:00
|
|
|
|
|
|
|
|
"""
|
2015-02-06 18:06:16 +01:00
|
|
|
import re
|
|
|
|
|
import ast
|
|
|
|
|
from setuptools import setup
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_version_re = re.compile(r'__version__\s+=\s+(.*)')
|
|
|
|
|
|
|
|
|
|
with open('flask/__init__.py', 'rb') as f:
|
|
|
|
|
version = str(ast.literal_eval(_version_re.search(
|
|
|
|
|
f.read().decode('utf-8')).group(1)))
|
2010-08-01 15:04:09 +08:00
|
|
|
|
2014-04-28 13:26:14 +02:00
|
|
|
|
2010-04-06 13:23:18 +02:00
|
|
|
setup(
|
|
|
|
|
name='Flask',
|
2015-02-06 18:06:16 +01:00
|
|
|
version=version,
|
2017-02-11 01:43:11 -08:00
|
|
|
url='https://github.com/pallets/flask/',
|
2010-04-06 13:23:18 +02:00
|
|
|
license='BSD',
|
|
|
|
|
author='Armin Ronacher',
|
|
|
|
|
author_email='armin.ronacher@active-4.com',
|
2010-04-20 18:40:58 +02:00
|
|
|
description='A microframework based on Werkzeug, Jinja2 '
|
|
|
|
|
'and good intentions',
|
2010-04-16 14:24:12 +02:00
|
|
|
long_description=__doc__,
|
2014-08-31 23:59:43 +02:00
|
|
|
packages=['flask', 'flask.ext'],
|
2011-09-22 14:08:03 +02:00
|
|
|
include_package_data=True,
|
2010-04-06 13:23:18 +02:00
|
|
|
zip_safe=False,
|
|
|
|
|
platforms='any',
|
2010-04-11 02:42:13 +02:00
|
|
|
install_requires=[
|
2012-04-23 21:46:53 -04:00
|
|
|
'Werkzeug>=0.7',
|
2012-08-11 03:09:14 +01:00
|
|
|
'Jinja2>=2.4',
|
2014-04-28 13:26:14 +02:00
|
|
|
'itsdangerous>=0.21',
|
2014-08-12 23:23:48 +02:00
|
|
|
'click>=2.0',
|
Fix send_file to work with non-ascii filenames
This commit implements https://tools.ietf.org/html/rfc2231#section-4 in
order to support sending unicode characters. Tested on both Firefox and
Chromium under Linux.
This adds unidecode as a dependency, which might be relaxed by using
.encode('latin-1', 'ignore') but wouldn't be as useful.
Also, added a test for the correct headers to be added.
Previously, using a filename parameter to send_file with unicode characters, it
failed with the next error since HTTP headers don't allow non latin-1 characters.
Error on request:
Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/werkzeug/serving.py", line 193, in run_wsgi
execute(self.server.app)
File "/usr/lib/python3.6/site-packages/werkzeug/serving.py", line 186, in execute
write(b'')
File "/usr/lib/python3.6/site-packages/werkzeug/serving.py", line 152, in write
self.send_header(key, value)
File "/usr/lib64/python3.6/http/server.py", line 509, in send_header
("%s: %s\r\n" % (keyword, value)).encode('latin-1', 'strict'))
UnicodeEncodeError: 'latin-1' codec can't encode character '\uff0f' in position 58: ordinal not in range(256)
Fixes #1286
2017-03-23 17:30:48 +01:00
|
|
|
'unidecode',
|
2010-04-16 14:24:12 +02:00
|
|
|
],
|
|
|
|
|
classifiers=[
|
2010-05-12 01:29:25 +02:00
|
|
|
'Development Status :: 4 - Beta',
|
2010-04-16 14:24:12 +02:00
|
|
|
'Environment :: Web Environment',
|
|
|
|
|
'Intended Audience :: Developers',
|
|
|
|
|
'License :: OSI Approved :: BSD License',
|
|
|
|
|
'Operating System :: OS Independent',
|
|
|
|
|
'Programming Language :: Python',
|
2015-12-20 20:35:46 +08:00
|
|
|
'Programming Language :: Python :: 2',
|
|
|
|
|
'Programming Language :: Python :: 2.6',
|
|
|
|
|
'Programming Language :: Python :: 2.7',
|
2013-06-13 23:46:20 +01:00
|
|
|
'Programming Language :: Python :: 3',
|
2015-12-20 20:35:46 +08:00
|
|
|
'Programming Language :: Python :: 3.3',
|
|
|
|
|
'Programming Language :: Python :: 3.4',
|
|
|
|
|
'Programming Language :: Python :: 3.5',
|
2010-04-16 14:24:12 +02:00
|
|
|
'Topic :: Internet :: WWW/HTTP :: Dynamic Content',
|
|
|
|
|
'Topic :: Software Development :: Libraries :: Python Modules'
|
2010-05-31 17:53:10 +02:00
|
|
|
],
|
2014-04-21 16:34:17 +02:00
|
|
|
entry_points='''
|
|
|
|
|
[console_scripts]
|
2014-04-28 13:26:14 +02:00
|
|
|
flask=flask.cli:main
|
2014-09-04 16:22:57 +02:00
|
|
|
'''
|
2010-04-06 13:23:18 +02:00
|
|
|
)
|