Metadata-Version: 2.1
Name: autoinclude-blueprints
Version: 1.0.1
Summary: Auto register all project flask-blueprints.
Home-page: https://github.com/FelixTheC/flask_bp_autoregister
Author: FelixTheC
Author-email: fberndt87@gmail.com
License: MIT
Platform: UNKNOWN
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Requires-Python: >=3.6
Description-Content-Type: text/markdown
Requires-Dist: flask (>=1.1.0)
Requires-Dist: strongtyping (>=1.3.0)

![Upload Python Package](https://github.com/FelixTheC/autoinclude_flask_blueprints/workflows/Upload%20Python%20Package/badge.svg?branch=master)
![Python application](https://github.com/FelixTheC/autoinclude_flask_blueprints/workflows/Python%20application/badge.svg?branch=master)
# Flask Blueprint autoinclude
A function to automatically register all flask-blueprints from a project.
<br>__register_blueprints__ from flask_bp_autoregister.blueprints

---
When using flask blueprints then after defining them you have to register them all this can possible look like this.
```python
# in some config.py or __init__.py
def register_my_blueprints(used_flask_app: any):
    from my_app.views import home_views
    from my_app.views import package_views
    from my_app.views import account_views

    used_flask_app.register_blueprint(home_views.app_bp)
    used_flask_app.register_blueprint(package_views.app_bp)
    used_flask_app.register_blueprint(account_views.app_bp) 

# and then in your run.py or similar

from my_app import flask_app
from my_app import register_my_blueprints

register_my_blueprints(flask_app)

if __name__ == '__main__':
    flask_app.run()

```
The register_blueprints code can get really long and you always have to remember where your blueprints are.

---

For this is had created a function __register_blueprints__ which automatically will search for all blueprints in your project and register them.
```python

from my_app import flask_app
from flask_bp_autoregister.blueprints import register_blueprints


register_blueprints(flask_app, 'my_project/src/my_app')


if __name__ == '__main__':
    flask_app.run()

```

The path attribute is not really needed you can also use it without then all blueprints inside of the project will be registered automatically
```python

from my_app import flask_app
from flask_bp_autoregister.blueprints import register_blueprints


register_blueprints(flask_app)


if __name__ == '__main__':
    flask_app.run()

```

When you have some __commented Blueprints__ inside of your project, __register_blueprints__ will try to register them too <br>
which will raise an AttributeError you can disable this with __silent=True__
```python
from my_app import flask_app
from flask_bp_autoregister.blueprints import register_blueprints


register_blueprints(flask_app, silent=True) # will prevent raising AttributeError


if __name__ == '__main__':
    flask_app.run()

```

### Tested for Versions
- 3.6, 3.7, 3.8

### Installing

- pip install git+https://github.com/FelixTheC/autoinclude_flask_blueprints.git

#### Versioning
- For the versions available, see the tags on this repository.

### Authors
- Felix Eisenmenger - Initial work

### License
- This project is licensed under the MIT License - see the LICENSE.md file for details


