Uma forma automatica de organizar seu código em flask!

No Flask temos a função de blueprint, serve para organizarmos nosso projeto em outros arquivos, basta em um arquivo de controller vc criar um blueprint:

src/cotrollers/company.py
from flask import Blueprint

company = Blueprint('company', __name__, url_prefix='/company')
@company.route('/')
def index():
  return '<h1>Hello World</h1>' 

E no arquivo principal "registrar" esse blueprint

main.py
from flask import Flask
from src.controllers.company import company

app = Flask(__name__)
app.register_blueprint(company)
app.run()

Mas para isso, para eu registrar outros blueprints de outros arquivos, eu precisaria registrar dezenas de app.register_blueprint() por exemplo:

app.register_blueprint(company)
app.register_blueprint(person)
app.register_blueprint(car)
app.register_blueprint(documents)

Para não fazer isso, eu acabei criando um sisteminha que registra esses arquivos, apenas de ter criado o controller:

import os
from flask import Flask
class MyCashier(Flask):
  def __init__(self):
    super(MyCashier, self).__init__("MyCashier")
    for i in os.listdir('./src/controllers'):
      if str(i).endswith('.py'):
        i = str(i).replace('.py', '')
        self.register_blueprint(__import__('src.controllers.' + i, fromlist=[i]).__dict__[i])
        print("loaded ", i)
    

client = MyCashier()
client.run(port=1395)

Desse jeito ele acaba importando e registrando todos os blueprints que estejam em src.controllers. O nome do arquivo e da classe precisa ser o mesmo para funcionar!

Boa! Só fiquei na duvida pq vc utilizou esse client._init(), visto que o metodo __init__() já será executado na criação da instancia client = MyCashier()

Pra falar a verdade eu já arrumei isso e esqueci de corrigir aqui no tabnews kk, obrigado por avisar