.. image:: https://github.com/jugmac00/flask-reuploaded/workflows/CI/badge.svg?branch=master
:target: https://github.com/jugmac00/flask-reuploaded/actions?workflow=CI
:alt: CI Status
.. image:: https://coveralls.io/repos/github/jugmac00/flask-reuploaded/badge.svg?branch=master
:target: https://coveralls.io/github/jugmac00/flask-reuploaded?branch=master
.. image:: https://img.shields.io/pypi/v/flask-reuploaded
:alt: PyPI
:target: https://github.com/jugmac00/flask-reuploaded
.. image:: https://img.shields.io/pypi/pyversions/flask-reuploaded
:alt: PyPI - Python Version
:target: https://pypi.org/project/Flask-Reuploaded/
.. image:: https://img.shields.io/pypi/l/flask-reuploaded
:target: https://github.com/jugmac00/flask-reuploaded/blob/master/LICENSE
Flask-Reuploaded
================
Flask-Reuploaded provides file uploads for Flask.
Notes on this package
---------------------
This is an independently maintained version of `Flask-Uploads`
based on the 0.2.1 version of the original,
but also including four years of unreleased changes,
at least not released to PyPI.
Noteworthy is the fix for the `Werkzeug` API change.
Goals
-----
- provide a stable drop-in replacement for `Flask-Uploads`
- regain momentum for this widely used package
- provide working PyPI packages
Migration guide from `Flask-Uploads`
------------------------------------
Incompatibilities between Flask-Reuploaded and Flask-Uploads
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
As already mentioned,
staying compatible with `Flask-Uploads` is one of this project's goals.
Nevertheless, there are the following known incompatibilities:
- the `patch_request_class` helper function has been removed;
the function was only necessary for Flask 0.6 and earlier.
Since then you can use Flask's own
`MAX_CONTENT_LENGTH <https://flask.palletsprojects.com/en/1.1.x/config/#MAX_CONTENT_LENGTH>`_
environment variable,
so you don’t read more than this many bytes from the incoming request data.
- `autoserve` of uploaded images now has been deactivated;
this was a poorly documented "feature",
which even could have lead to unwanted data disclosure;
if you want to activate the feature again,
you need to set `UPLOADS_AUTOSERVE=True`
Uninstall and install
~~~~~~~~~~~~~~~~~~~~~
If you have used `Flask-Uploads` and want to migrate to `Flask-Reuploaded`,
you only have to install `Flask-Reuploaded` instead of `Flask-Uploads`.
That's all!
So, if you use `pip` to install your packages, instead of ...
.. code-block:: bash
$ pip install `Flask-Uploads` # don't do this! package is broken
... just do ...
.. code-block:: bash
$ pip install `Flask-Reuploaded`
`Flask-Reuploaded` is a drop-in replacement.
This means you do not have to change a single line of code.
Installation
------------
.. code-block:: bash
$ pip install Flask-Reuploaded
Getting started
---------------
create an UploadSet
.. code-block:: python
from flask_uploads import IMAGES
photos = UploadSet("photos", IMAGES)
configure your Flask app and this extension
.. code-block:: python
app.config["UPLOADED_PHOTOS_DEST"] = "static/img"
app.config["SECRET_KEY"] = os.urandom(24)
configure_uploads(app, photos)
use `photos` in your view function
.. code-block:: python
photos.save(request.files['photo'])
See below for a complete example.
Documentation
-------------
You can find the documentation at:
https://flask-reuploaded.readthedocs.io/en/latest/
You can generate the documentation locally:
.. code-block:: bash
tox -e docs
You can update the dependencies for documentation generation:
.. code-block:: bash
tox -e upgradedocs
Minimal example application
----------------------------
Application code, e.g. main.py
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code-block:: python
import os
from flask import Flask, flash, render_template, request
# please note the import from `flask_uploads` - not `flask_reuploaded`!!
# this is done on purpose to stay compatible with `Flask-Uploads`
from flask_uploads import IMAGES, UploadSet, configure_uploads
app = Flask(__name__)
photos = UploadSet("photos", IMAGES)
app.config["UPLOADED_PHOTOS_DEST"] = "static/img"
app.config["SECRET_KEY"] = os.urandom(24)
configure_uploads(app, photos)
@app.route("/", methods=['GET', 'POST'])
def upload():
if request.method == 'POST' and 'photo' in request.files:
photos.save(request.files['photo'])
flash("Photo saved successfully.")
return render_template('upload.html')
return render_template('upload.html')
HTML code for `upload.html`
~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code-block:: html
<!doctype html>
<html lang=en>
<head>
<meta charset=utf-8>
<title>Flask-Reuploaded Example</title>
</head>
<body>
{% with messages = get_flashed_messages() %}
{% if messages %}
<ul class=flashes>
{% for message in messages %}
<li>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}
{% endwith %}
<form method=POST enctype=multipart/form-data action="{{ url_for('upload') }}">
<input type=file name=photo>
<button type="submit">Submit</button>
</form>
</body>
</html>
Project structure
~~~~~~~~~~~~~~~~~
The project structure would look as following...
.. code-block:: bash
❯ tree -I "__*|h*"
.
├── main.py
├── static
│ └── img
└── templates
└── upload.html
Running the example application
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In order to run the application,
you have to enter the following commands...
.. code-block:: bash
❯ export FLASK_APP=main.py
❯ flask run
Then point your browser to `http://127.0.0.1:5000/`.
Contributing
------------
Contributions are more than welcome.
Please have a look at the `open issues <https://github.com/jugmac00/flask-reuploaded/issues>`_.
There is also a `short contributing guide <https://github.com/jugmac00/flask-reuploaded/blob/master/CONTRIBUTING.rst>`_.
Changelog
=========
1.4.0 (unreleased)
------------------
- fix deprecation warning for pytest
- drop support for Python 3.6 / 3.7
- add support for Python 3.12
- upgrade dependencies for building docs
1.3.0 (2022.12.20)
------------------
- improve documentation
(`#133 <https://github.com/jugmac00/flask-reuploaded/issues/133>`_)
- drop support for Python 3.6
- add support for Python 3.11
- update dependencies for building documentation
1.2.0 (2021.11.07)
------------------
- add contexts to coverage report
- pin documentation dependencies to prevent future breakage
- fix typing errors (mypy) with recently released Flask 2.0.1
- add support for Python 3.10
1.1.0 (2021.05.09)
------------------
- make type checkers aware that this library is using type annotations
1.0.0 (2021.04.07)
------------------
- raise test coverage to 100%
- use official `Pallets` theme for the documentation
- remove deprecated `patch_request_class` helper function; use `MAX_CONTENT_LENGTH` instead.
- `autoserve` now has been deactivated by default and needs explicit activation
via the setting `UPLOADS_AUTOSERVE=True`
0.5.0
-----
- improve documentation of example app
- document surprising `autoserve` feature
- issue a warning when using `autoserve` without explicit configuration
0.4.0
-----
- add type annotations
- drop support for Python 2 and Python 3.5
(`#8 <https://github.com/jugmac00/flask-reuploaded/issues/8>`_)
- deprecate `patch_request_class`
(`#43 <https://github.com/jugmac00/flask-reuploaded/issues/43>`_)
- use a `src` directory for source code
(`#21 <https://github.com/jugmac00/flask-reuploaded/issues/21>`_)
- add tox env for check-python-versions
(`#20 <https://github.com/jugmac00/flask-reuploaded/issues/20>`_)
- add flake8-bugbear
- add short contribution guide
(`#6 <https://github.com/jugmac00/flask-reuploaded/issues/6>`_)
- add `getting started`
(`#59 <https://github.com/jugmac00/flask-reuploaded/issues/59>`_)
- delete broken example and add minimal example to README
(`#15 <https://github.com/jugmac00/flask-reuploaded/issues/15>`_)
- add support for Python 3.9
- use gh actions instead of Travis CI
0.3.2
-----
- documentation update
(`#5 <https://github.com/jugmac00/flask-reuploaded/issues/5>`_)
* update docs/index.rst
* use blue ReadTheDocs theme
* update sphinx configuration
* add documentation link to `setup.py`, so it shows on PyPi
* add note about documentation in the README file
* delete old theme files
- configure `isort` to force single line imports
0.3.1
-----
- add badges to README
(`# 31 <https://github.com/jugmac00/flask-reuploaded/issues/31>`_)
- add migration guide from `Flask-Uploads` to `Flask-Reuploaded`
(`#11 <https://github.com/jugmac00/flask-reuploaded/issues/11>`_)
- add packaging guide
(`#28 <https://github.com/jugmac00/flask-reuploaded/issues/28>`_)
- update installation instruction in README
0.3
---
Besides including four years of unreleased changes from the original
package, most notable the fix for the Werkzeug API change, the
following changes happened since forking the original package.
- rename package from `Flask-Uploads` to `Flask-Reuploaded`
(`#10 <https://github.com/jugmac00/flask-reuploaded/issues/10>`_)
- update `setup.py`
(`#12 <https://github.com/jugmac00/flask-reuploaded/issues/12>`_)
- start using pre-commit.com
(`#4 <https://github.com/jugmac00/flask-reuploaded/issues/4>`_)
- update README
(`#14 <https://github.com/jugmac00/flask-reuploaded/issues/14>`_)
- setup CI (Travis)
(`#3 <https://github.com/jugmac00/flask-reuploaded/issues/3>`_)
- fix broken tests
(`#13 <https://github.com/jugmac00/flask-reuploaded/issues/13>`_)
- make use of `pytest` instead of the no longer maintained `nose`
(`#2 <https://github.com/jugmac00/flask-reuploaded/issues/2>`_)
- add a changelog and start tracking changes
(`#1 <https://github.com/jugmac00/flask-reuploaded/issues/1>`_)
Raw data
{
"_id": null,
"home_page": "https://github.com/jugmac00/flask-reuploaded",
"name": "Flask-Reuploaded",
"maintainer": "J\u00fcrgen Gmach",
"docs_url": null,
"requires_python": ">= 3.8",
"maintainer_email": "juergen.gmach@googlemail.com",
"keywords": "",
"author": "Matthew \"LeafStorm\" Frazier",
"author_email": "leafstormrush@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/ba/f8/ee264a233a0df7cdde32bc78e8309ceaa6f552bcf0f6038a28ab7187a0d1/Flask-Reuploaded-1.4.0.tar.gz",
"platform": "any",
"description": ".. image:: https://github.com/jugmac00/flask-reuploaded/workflows/CI/badge.svg?branch=master\n :target: https://github.com/jugmac00/flask-reuploaded/actions?workflow=CI\n :alt: CI Status\n\n.. image:: https://coveralls.io/repos/github/jugmac00/flask-reuploaded/badge.svg?branch=master\n :target: https://coveralls.io/github/jugmac00/flask-reuploaded?branch=master\n\n.. image:: https://img.shields.io/pypi/v/flask-reuploaded \n :alt: PyPI\n :target: https://github.com/jugmac00/flask-reuploaded\n\n.. image:: https://img.shields.io/pypi/pyversions/flask-reuploaded \n :alt: PyPI - Python Version\n :target: https://pypi.org/project/Flask-Reuploaded/\n\n.. image:: https://img.shields.io/pypi/l/flask-reuploaded\n :target: https://github.com/jugmac00/flask-reuploaded/blob/master/LICENSE\n\n\nFlask-Reuploaded\n================\n\nFlask-Reuploaded provides file uploads for Flask.\n\n\nNotes on this package\n---------------------\n\nThis is an independently maintained version of `Flask-Uploads`\nbased on the 0.2.1 version of the original,\nbut also including four years of unreleased changes,\nat least not released to PyPI.\n\nNoteworthy is the fix for the `Werkzeug` API change.\n\n\nGoals\n-----\n\n- provide a stable drop-in replacement for `Flask-Uploads`\n- regain momentum for this widely used package\n- provide working PyPI packages\n\n\nMigration guide from `Flask-Uploads`\n------------------------------------\n\nIncompatibilities between Flask-Reuploaded and Flask-Uploads\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nAs already mentioned,\nstaying compatible with `Flask-Uploads` is one of this project's goals.\n\nNevertheless, there are the following known incompatibilities:\n\n- the `patch_request_class` helper function has been removed;\n the function was only necessary for Flask 0.6 and earlier.\n Since then you can use Flask's own\n `MAX_CONTENT_LENGTH <https://flask.palletsprojects.com/en/1.1.x/config/#MAX_CONTENT_LENGTH>`_\n environment variable,\n so you don\u2019t read more than this many bytes from the incoming request data.\n- `autoserve` of uploaded images now has been deactivated;\n this was a poorly documented \"feature\",\n which even could have lead to unwanted data disclosure;\n if you want to activate the feature again,\n you need to set `UPLOADS_AUTOSERVE=True`\n\nUninstall and install\n~~~~~~~~~~~~~~~~~~~~~\n\nIf you have used `Flask-Uploads` and want to migrate to `Flask-Reuploaded`,\nyou only have to install `Flask-Reuploaded` instead of `Flask-Uploads`.\n\nThat's all!\n\nSo, if you use `pip` to install your packages, instead of ...\n\n.. code-block:: bash\n\n $ pip install `Flask-Uploads` # don't do this! package is broken\n\n... just do ...\n\n.. code-block:: bash\n\n $ pip install `Flask-Reuploaded`\n\n`Flask-Reuploaded` is a drop-in replacement.\n\nThis means you do not have to change a single line of code.\n\n\nInstallation\n------------\n\n.. code-block:: bash\n\n $ pip install Flask-Reuploaded\n\n\nGetting started\n---------------\n\ncreate an UploadSet\n\n.. code-block:: python\n\n from flask_uploads import IMAGES\n\n photos = UploadSet(\"photos\", IMAGES)\n\nconfigure your Flask app and this extension\n\n.. code-block:: python\n\n app.config[\"UPLOADED_PHOTOS_DEST\"] = \"static/img\"\n app.config[\"SECRET_KEY\"] = os.urandom(24)\n configure_uploads(app, photos)\n\nuse `photos` in your view function\n\n.. code-block:: python\n\n photos.save(request.files['photo'])\n\nSee below for a complete example.\n\n\nDocumentation\n-------------\n\nYou can find the documentation at:\n\nhttps://flask-reuploaded.readthedocs.io/en/latest/\n\nYou can generate the documentation locally:\n\n.. code-block:: bash\n\n tox -e docs\n\nYou can update the dependencies for documentation generation:\n\n.. code-block:: bash\n\n tox -e upgradedocs\n\n\nMinimal example application\n----------------------------\n\n\nApplication code, e.g. main.py\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. code-block:: python\n\n import os\n\n from flask import Flask, flash, render_template, request\n # please note the import from `flask_uploads` - not `flask_reuploaded`!!\n # this is done on purpose to stay compatible with `Flask-Uploads`\n from flask_uploads import IMAGES, UploadSet, configure_uploads\n\n app = Flask(__name__)\n photos = UploadSet(\"photos\", IMAGES)\n app.config[\"UPLOADED_PHOTOS_DEST\"] = \"static/img\"\n app.config[\"SECRET_KEY\"] = os.urandom(24)\n configure_uploads(app, photos)\n\n\n @app.route(\"/\", methods=['GET', 'POST'])\n def upload():\n if request.method == 'POST' and 'photo' in request.files:\n photos.save(request.files['photo'])\n flash(\"Photo saved successfully.\")\n return render_template('upload.html')\n return render_template('upload.html')\n\n\nHTML code for `upload.html`\n~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. code-block:: html\n\n <!doctype html>\n <html lang=en>\n <head>\n <meta charset=utf-8>\n <title>Flask-Reuploaded Example</title>\n </head>\n <body>\n {% with messages = get_flashed_messages() %}\n {% if messages %}\n <ul class=flashes>\n {% for message in messages %}\n <li>{{ message }}</li>\n {% endfor %}\n </ul>\n {% endif %}\n {% endwith %}\n\n <form method=POST enctype=multipart/form-data action=\"{{ url_for('upload') }}\">\n <input type=file name=photo>\n <button type=\"submit\">Submit</button>\n </form>\n </body>\n </html>\n\n\nProject structure\n~~~~~~~~~~~~~~~~~\n\nThe project structure would look as following...\n\n.. code-block:: bash\n\n \u276f tree -I \"__*|h*\"\n .\n \u251c\u2500\u2500 main.py\n \u251c\u2500\u2500 static\n \u2502 \u2514\u2500\u2500 img\n \u2514\u2500\u2500 templates\n \u2514\u2500\u2500 upload.html\n\n\nRunning the example application\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIn order to run the application,\nyou have to enter the following commands...\n\n.. code-block:: bash\n\n \u276f export FLASK_APP=main.py\n\n \u276f flask run\n\nThen point your browser to `http://127.0.0.1:5000/`.\n\n\nContributing\n------------\n\nContributions are more than welcome.\n\nPlease have a look at the `open issues <https://github.com/jugmac00/flask-reuploaded/issues>`_.\n\nThere is also a `short contributing guide <https://github.com/jugmac00/flask-reuploaded/blob/master/CONTRIBUTING.rst>`_.\n\n\nChangelog\n=========\n\n1.4.0 (unreleased)\n------------------\n- fix deprecation warning for pytest\n- drop support for Python 3.6 / 3.7\n- add support for Python 3.12\n- upgrade dependencies for building docs\n\n1.3.0 (2022.12.20)\n------------------\n- improve documentation\n (`#133 <https://github.com/jugmac00/flask-reuploaded/issues/133>`_)\n- drop support for Python 3.6\n- add support for Python 3.11\n- update dependencies for building documentation\n\n\n1.2.0 (2021.11.07)\n------------------\n- add contexts to coverage report\n- pin documentation dependencies to prevent future breakage\n- fix typing errors (mypy) with recently released Flask 2.0.1\n- add support for Python 3.10\n\n\n1.1.0 (2021.05.09)\n------------------\n- make type checkers aware that this library is using type annotations\n\n\n1.0.0 (2021.04.07)\n------------------\n- raise test coverage to 100%\n- use official `Pallets` theme for the documentation\n- remove deprecated `patch_request_class` helper function; use `MAX_CONTENT_LENGTH` instead.\n- `autoserve` now has been deactivated by default and needs explicit activation\n via the setting `UPLOADS_AUTOSERVE=True`\n\n\n0.5.0\n-----\n- improve documentation of example app\n- document surprising `autoserve` feature\n- issue a warning when using `autoserve` without explicit configuration\n\n\n0.4.0\n-----\n- add type annotations\n- drop support for Python 2 and Python 3.5\n (`#8 <https://github.com/jugmac00/flask-reuploaded/issues/8>`_)\n- deprecate `patch_request_class`\n (`#43 <https://github.com/jugmac00/flask-reuploaded/issues/43>`_)\n- use a `src` directory for source code\n (`#21 <https://github.com/jugmac00/flask-reuploaded/issues/21>`_)\n- add tox env for check-python-versions\n (`#20 <https://github.com/jugmac00/flask-reuploaded/issues/20>`_)\n- add flake8-bugbear\n- add short contribution guide\n (`#6 <https://github.com/jugmac00/flask-reuploaded/issues/6>`_)\n- add `getting started`\n (`#59 <https://github.com/jugmac00/flask-reuploaded/issues/59>`_)\n- delete broken example and add minimal example to README\n (`#15 <https://github.com/jugmac00/flask-reuploaded/issues/15>`_)\n- add support for Python 3.9\n- use gh actions instead of Travis CI\n\n\n0.3.2\n-----\n- documentation update\n (`#5 <https://github.com/jugmac00/flask-reuploaded/issues/5>`_)\n\n * update docs/index.rst\n * use blue ReadTheDocs theme\n * update sphinx configuration\n * add documentation link to `setup.py`, so it shows on PyPi\n * add note about documentation in the README file\n * delete old theme files\n- configure `isort` to force single line imports\n\n\n0.3.1\n-----\n- add badges to README\n (`# 31 <https://github.com/jugmac00/flask-reuploaded/issues/31>`_)\n- add migration guide from `Flask-Uploads` to `Flask-Reuploaded`\n (`#11 <https://github.com/jugmac00/flask-reuploaded/issues/11>`_)\n- add packaging guide\n (`#28 <https://github.com/jugmac00/flask-reuploaded/issues/28>`_)\n- update installation instruction in README\n\n\n0.3\n---\n\nBesides including four years of unreleased changes from the original\npackage, most notable the fix for the Werkzeug API change, the\nfollowing changes happened since forking the original package.\n\n- rename package from `Flask-Uploads` to `Flask-Reuploaded`\n (`#10 <https://github.com/jugmac00/flask-reuploaded/issues/10>`_)\n- update `setup.py`\n (`#12 <https://github.com/jugmac00/flask-reuploaded/issues/12>`_)\n- start using pre-commit.com\n (`#4 <https://github.com/jugmac00/flask-reuploaded/issues/4>`_)\n- update README\n (`#14 <https://github.com/jugmac00/flask-reuploaded/issues/14>`_)\n- setup CI (Travis)\n (`#3 <https://github.com/jugmac00/flask-reuploaded/issues/3>`_)\n- fix broken tests\n (`#13 <https://github.com/jugmac00/flask-reuploaded/issues/13>`_)\n- make use of `pytest` instead of the no longer maintained `nose`\n (`#2 <https://github.com/jugmac00/flask-reuploaded/issues/2>`_)\n- add a changelog and start tracking changes\n (`#1 <https://github.com/jugmac00/flask-reuploaded/issues/1>`_)\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Flexible and efficient upload handling for Flask",
"version": "1.4.0",
"project_urls": {
"Documentation": "https://flask-reuploaded.readthedocs.io/en/latest/",
"Homepage": "https://github.com/jugmac00/flask-reuploaded",
"Issue Tracker": "https://github.com/jugmac00/flask-reuploaded/issues",
"Source": "https://github.com/jugmac00/flask-reuploaded"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "18e0fe9c86554cf3eaa80a8160e84e1921e6dc5d77e39b7ddfe0efd30abc23e6",
"md5": "1712db2d6456efca0759dbf3157778e5",
"sha256": "020af6cdcbbe9f9484a72007c0cdc39599c1076cd321d7dff56062dd8f58f7a3"
},
"downloads": -1,
"filename": "Flask_Reuploaded-1.4.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "1712db2d6456efca0759dbf3157778e5",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">= 3.8",
"size": 14592,
"upload_time": "2023-10-03T15:30:41",
"upload_time_iso_8601": "2023-10-03T15:30:41.058552Z",
"url": "https://files.pythonhosted.org/packages/18/e0/fe9c86554cf3eaa80a8160e84e1921e6dc5d77e39b7ddfe0efd30abc23e6/Flask_Reuploaded-1.4.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "baf8ee264a233a0df7cdde32bc78e8309ceaa6f552bcf0f6038a28ab7187a0d1",
"md5": "09e6f1f08fb6ee63ae9423c73aa10718",
"sha256": "2f04e788b925e7c2110c9451ea5993955607b01de272a9b041c6923000b58c7b"
},
"downloads": -1,
"filename": "Flask-Reuploaded-1.4.0.tar.gz",
"has_sig": false,
"md5_digest": "09e6f1f08fb6ee63ae9423c73aa10718",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">= 3.8",
"size": 32706,
"upload_time": "2023-10-03T15:30:42",
"upload_time_iso_8601": "2023-10-03T15:30:42.848770Z",
"url": "https://files.pythonhosted.org/packages/ba/f8/ee264a233a0df7cdde32bc78e8309ceaa6f552bcf0f6038a28ab7187a0d1/Flask-Reuploaded-1.4.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-10-03 15:30:42",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "jugmac00",
"github_project": "flask-reuploaded",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"tox": true,
"lcname": "flask-reuploaded"
}