Last active
November 19, 2019 09:09
-
-
Save SebDeclercq/9d446c2ab69e2feab6ab1d47e565e32a to your computer and use it in GitHub Desktop.
Simple OO Flask App
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python3 | |
''' | |
@desc description | |
@author SDQ <[email protected]> | |
@version 0.0.1 | |
@date 2019-11-19 | |
@note 0.0.1 (2019-11-19) : Init file | |
''' | |
from flask import Flask | |
import click | |
class App: | |
def __init__( | |
self, | |
host: str = '0.0.0.0', | |
port: int = 5000, | |
debug: bool = False, | |
name: str = __name__, | |
) -> None: | |
self.host: str = host | |
self.port: int = port | |
self.debug: bool = debug | |
self._flask_app: Flask = Flask(name) | |
def setup_routes(self) -> None: | |
@self._flask_app.route('/') | |
def hello_world() -> str: | |
return 'Hello World !' | |
@self._flask_app.route('/hello/<string:name>') | |
def greetings(name: str) -> str: | |
return f'Hello {name.title()} !' | |
def run(self) -> None: | |
self._flask_app.run(host=self.host, port=self.port, debug=self.debug) | |
@click.command() | |
@click.option( | |
'-h', | |
'--host', | |
help='The host for the dev webserver.', | |
default='0.0.0.0', | |
show_default=True, | |
) | |
@click.option( | |
'-p', | |
'--port', | |
help='The port for the dev webserver.', | |
default=5000, | |
show_default=True, | |
) | |
@click.option( | |
'-d', | |
'--debug', | |
is_flag=True, | |
help='Activate the debug mode.', | |
show_default=True, | |
) | |
def main(host: str, port: int, debug: bool) -> None: | |
'''Simple OO Flask App as illustrative purposes''' | |
app: App = App(host=host, port=port, debug=debug) | |
app.setup_routes() | |
app.run() | |
if __name__ == '__main__': | |
main() |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
> python app.py --help | |
Usage: app.py [OPTIONS] | |
Simple OO Flask App as illustrative purposes | |
Options: | |
-h, --host TEXT The host for the dev webserver. [default: 0.0.0.0] | |
-p, --port INTEGER The port for the dev webserver. [default: 5000] | |
-d, --debug Activate the debug mode. [default: False] | |
--help Show this message and exit. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[[source]] | |
name = "pypi" | |
url = "https://pypi.org/simple" | |
verify_ssl = true | |
[dev-packages] | |
mypy = "*" | |
black = "*" | |
flake8 = "*" | |
[packages] | |
click = "*" | |
flask = "*" | |
[requires] | |
python_version = "3.7" | |
[pipenv] | |
allow_prereleases = true |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"_meta": { | |
"hash": { | |
"sha256": "2dafc0e335b497d305b1f9a9dfa887b4de01a66527be756eaff383cf01d5f1db" | |
}, | |
"pipfile-spec": 6, | |
"requires": { | |
"python_version": "3.7" | |
}, | |
"sources": [ | |
{ | |
"name": "pypi", | |
"url": "https://pypi.org/simple", | |
"verify_ssl": true | |
} | |
] | |
}, | |
"default": { | |
"click": { | |
"hashes": [ | |
"sha256:2335065e6395b9e67ca716de5f7526736bfa6ceead690adf616d925bdc622b13", | |
"sha256:5b94b49521f6456670fdb30cd82a4eca9412788a93fa6dd6df72c94d5a8ff2d7" | |
], | |
"index": "pypi", | |
"version": "==7.0" | |
}, | |
"flask": { | |
"hashes": [ | |
"sha256:13f9f196f330c7c2c5d7a5cf91af894110ca0215ac051b5844701f2bfd934d52", | |
"sha256:45eb5a6fd193d6cf7e0cf5d8a5b31f83d5faae0293695626f539a823e93b13f6" | |
], | |
"index": "pypi", | |
"version": "==1.1.1" | |
}, | |
"itsdangerous": { | |
"hashes": [ | |
"sha256:321b033d07f2a4136d3ec762eac9f16a10ccd60f53c0c91af90217ace7ba1f19", | |
"sha256:b12271b2047cb23eeb98c8b5622e2e5c5e9abd9784a153e9d8ef9cb4dd09d749" | |
], | |
"version": "==1.1.0" | |
}, | |
"jinja2": { | |
"hashes": [ | |
"sha256:74320bb91f31270f9551d46522e33af46a80c3d619f4a4bf42b3164d30b5911f", | |
"sha256:9fe95f19286cfefaa917656583d020be14e7859c6b0252588391e47db34527de" | |
], | |
"version": "==2.10.3" | |
}, | |
"markupsafe": { | |
"hashes": [ | |
"sha256:00bc623926325b26bb9605ae9eae8a215691f33cae5df11ca5424f06f2d1f473", | |
"sha256:09027a7803a62ca78792ad89403b1b7a73a01c8cb65909cd876f7fcebd79b161", | |
"sha256:09c4b7f37d6c648cb13f9230d847adf22f8171b1ccc4d5682398e77f40309235", | |
"sha256:1027c282dad077d0bae18be6794e6b6b8c91d58ed8a8d89a89d59693b9131db5", | |
"sha256:24982cc2533820871eba85ba648cd53d8623687ff11cbb805be4ff7b4c971aff", | |
"sha256:29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b", | |
"sha256:43a55c2930bbc139570ac2452adf3d70cdbb3cfe5912c71cdce1c2c6bbd9c5d1", | |
"sha256:46c99d2de99945ec5cb54f23c8cd5689f6d7177305ebff350a58ce5f8de1669e", | |
"sha256:500d4957e52ddc3351cabf489e79c91c17f6e0899158447047588650b5e69183", | |
"sha256:535f6fc4d397c1563d08b88e485c3496cf5784e927af890fb3c3aac7f933ec66", | |
"sha256:62fe6c95e3ec8a7fad637b7f3d372c15ec1caa01ab47926cfdf7a75b40e0eac1", | |
"sha256:6dd73240d2af64df90aa7c4e7481e23825ea70af4b4922f8ede5b9e35f78a3b1", | |
"sha256:717ba8fe3ae9cc0006d7c451f0bb265ee07739daf76355d06366154ee68d221e", | |
"sha256:79855e1c5b8da654cf486b830bd42c06e8780cea587384cf6545b7d9ac013a0b", | |
"sha256:7c1699dfe0cf8ff607dbdcc1e9b9af1755371f92a68f706051cc8c37d447c905", | |
"sha256:88e5fcfb52ee7b911e8bb6d6aa2fd21fbecc674eadd44118a9cc3863f938e735", | |
"sha256:8defac2f2ccd6805ebf65f5eeb132adcf2ab57aa11fdf4c0dd5169a004710e7d", | |
"sha256:98c7086708b163d425c67c7a91bad6e466bb99d797aa64f965e9d25c12111a5e", | |
"sha256:9add70b36c5666a2ed02b43b335fe19002ee5235efd4b8a89bfcf9005bebac0d", | |
"sha256:9bf40443012702a1d2070043cb6291650a0841ece432556f784f004937f0f32c", | |
"sha256:ade5e387d2ad0d7ebf59146cc00c8044acbd863725f887353a10df825fc8ae21", | |
"sha256:b00c1de48212e4cc9603895652c5c410df699856a2853135b3967591e4beebc2", | |
"sha256:b1282f8c00509d99fef04d8ba936b156d419be841854fe901d8ae224c59f0be5", | |
"sha256:b2051432115498d3562c084a49bba65d97cf251f5a331c64a12ee7e04dacc51b", | |
"sha256:ba59edeaa2fc6114428f1637ffff42da1e311e29382d81b339c1817d37ec93c6", | |
"sha256:c8716a48d94b06bb3b2524c2b77e055fb313aeb4ea620c8dd03a105574ba704f", | |
"sha256:cd5df75523866410809ca100dc9681e301e3c27567cf498077e8551b6d20e42f", | |
"sha256:e249096428b3ae81b08327a63a485ad0878de3fb939049038579ac0ef61e17e7" | |
], | |
"version": "==1.1.1" | |
}, | |
"werkzeug": { | |
"hashes": [ | |
"sha256:7280924747b5733b246fe23972186c6b348f9ae29724135a6dfc1e53cea433e7", | |
"sha256:e5f4a1f98b52b18a93da705a7458e55afb26f32bff83ff5d19189f92462d65c4" | |
], | |
"version": "==0.16.0" | |
} | |
}, | |
"develop": { | |
"appdirs": { | |
"hashes": [ | |
"sha256:9e5896d1372858f8dd3344faf4e5014d21849c756c8d5701f78f8a103b372d92", | |
"sha256:d8b24664561d0d34ddfaec54636d502d7cea6e29c3eaf68f3df6180863e2166e" | |
], | |
"version": "==1.4.3" | |
}, | |
"attrs": { | |
"hashes": [ | |
"sha256:08a96c641c3a74e44eb59afb61a24f2cb9f4d7188748e76ba4bb5edfa3cb7d1c", | |
"sha256:f7b7ce16570fe9965acd6d30101a28f62fb4a7f9e926b3bbc9b61f8b04247e72" | |
], | |
"version": "==19.3.0" | |
}, | |
"black": { | |
"hashes": [ | |
"sha256:1b30e59be925fafc1ee4565e5e08abef6b03fe455102883820fe5ee2e4734e0b", | |
"sha256:c2edb73a08e9e0e6f65a0e6af18b059b8b1cdd5bef997d7a0b181df93dc81539" | |
], | |
"index": "pypi", | |
"version": "==19.10b0" | |
}, | |
"click": { | |
"hashes": [ | |
"sha256:2335065e6395b9e67ca716de5f7526736bfa6ceead690adf616d925bdc622b13", | |
"sha256:5b94b49521f6456670fdb30cd82a4eca9412788a93fa6dd6df72c94d5a8ff2d7" | |
], | |
"index": "pypi", | |
"version": "==7.0" | |
}, | |
"entrypoints": { | |
"hashes": [ | |
"sha256:589f874b313739ad35be6e0cd7efde2a4e9b6fea91edcc34e58ecbb8dbe56d19", | |
"sha256:c70dd71abe5a8c85e55e12c19bd91ccfeec11a6e99044204511f9ed547d48451" | |
], | |
"version": "==0.3" | |
}, | |
"flake8": { | |
"hashes": [ | |
"sha256:45681a117ecc81e870cbf1262835ae4af5e7a8b08e40b944a8a6e6b895914cfb", | |
"sha256:49356e766643ad15072a789a20915d3c91dc89fd313ccd71802303fd67e4deca" | |
], | |
"index": "pypi", | |
"version": "==3.7.9" | |
}, | |
"mccabe": { | |
"hashes": [ | |
"sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42", | |
"sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f" | |
], | |
"version": "==0.6.1" | |
}, | |
"mypy": { | |
"hashes": [ | |
"sha256:1521c186a3d200c399bd5573c828ea2db1362af7209b2adb1bb8532cea2fb36f", | |
"sha256:31a046ab040a84a0fc38bc93694876398e62bc9f35eca8ccbf6418b7297f4c00", | |
"sha256:3b1a411909c84b2ae9b8283b58b48541654b918e8513c20a400bb946aa9111ae", | |
"sha256:48c8bc99380575deb39f5d3400ebb6a8a1cb5cc669bbba4d3bb30f904e0a0e7d", | |
"sha256:540c9caa57a22d0d5d3c69047cc9dd0094d49782603eb03069821b41f9e970e9", | |
"sha256:672e418425d957e276c291930a3921b4a6413204f53fe7c37cad7bc57b9a3391", | |
"sha256:6ed3b9b3fdc7193ea7aca6f3c20549b377a56f28769783a8f27191903a54170f", | |
"sha256:9371290aa2cad5ad133e4cdc43892778efd13293406f7340b9ffe99d5ec7c1d9", | |
"sha256:ace6ac1d0f87d4072f05b5468a084a45b4eda970e4d26704f201e06d47ab2990", | |
"sha256:b428f883d2b3fe1d052c630642cc6afddd07d5cd7873da948644508be3b9d4a7", | |
"sha256:d5bf0e6ec8ba346a2cf35cb55bf4adfddbc6b6576fcc9e10863daa523e418dbb", | |
"sha256:d7574e283f83c08501607586b3167728c58e8442947e027d2d4c7dcd6d82f453", | |
"sha256:dc889c84241a857c263a2b1cd1121507db7d5b5f5e87e77147097230f374d10b", | |
"sha256:f4748697b349f373002656bf32fede706a0e713d67bfdcf04edf39b1f61d46eb" | |
], | |
"index": "pypi", | |
"version": "==0.740" | |
}, | |
"mypy-extensions": { | |
"hashes": [ | |
"sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d", | |
"sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8" | |
], | |
"version": "==0.4.3" | |
}, | |
"pathspec": { | |
"hashes": [ | |
"sha256:e285ccc8b0785beadd4c18e5708b12bb8fcf529a1e61215b3feff1d1e559ea5c" | |
], | |
"version": "==0.6.0" | |
}, | |
"pycodestyle": { | |
"hashes": [ | |
"sha256:95a2219d12372f05704562a14ec30bc76b05a5b297b21a5dfe3f6fac3491ae56", | |
"sha256:e40a936c9a450ad81df37f549d676d127b1b66000a6c500caa2b085bc0ca976c" | |
], | |
"version": "==2.5.0" | |
}, | |
"pyflakes": { | |
"hashes": [ | |
"sha256:17dbeb2e3f4d772725c777fabc446d5634d1038f234e77343108ce445ea69ce0", | |
"sha256:d976835886f8c5b31d47970ed689944a0262b5f3afa00a5a7b4dc81e5449f8a2" | |
], | |
"version": "==2.1.1" | |
}, | |
"regex": { | |
"hashes": [ | |
"sha256:15454b37c5a278f46f7aa2d9339bda450c300617ca2fca6558d05d870245edc7", | |
"sha256:1ad40708c255943a227e778b022c6497c129ad614bb7a2a2f916e12e8a359ee7", | |
"sha256:5e00f65cc507d13ab4dfa92c1232d004fa202c1d43a32a13940ab8a5afe2fb96", | |
"sha256:604dc563a02a74d70ae1f55208ddc9bfb6d9f470f6d1a5054c4bd5ae58744ab1", | |
"sha256:720e34a539a76a1fedcebe4397290604cc2bdf6f81eca44adb9fb2ea071c0c69", | |
"sha256:7caf47e4a9ac6ef08cabd3442cc4ca3386db141fb3c8b2a7e202d0470028e910", | |
"sha256:7faf534c1841c09d8fefa60ccde7b9903c9b528853ecf41628689793290ca143", | |
"sha256:b4e0406d822aa4993ac45072a584d57aa4931cf8288b5455bbf30c1d59dbad59", | |
"sha256:c31eaf28c6fe75ea329add0022efeed249e37861c19681960f99bbc7db981fb2", | |
"sha256:c7393597191fc2043c744db021643549061e12abe0b3ff5c429d806de7b93b66", | |
"sha256:d2b302f8cdd82c8f48e9de749d1d17f85ce9a0f082880b9a4859f66b07037dc6", | |
"sha256:e3d8dd0ec0ea280cf89026b0898971f5750a7bd92cb62c51af5a52abd020054a", | |
"sha256:ec032cbfed59bd5a4b8eab943c310acfaaa81394e14f44454ad5c9eba4f24a74" | |
], | |
"version": "==2019.11.1" | |
}, | |
"toml": { | |
"hashes": [ | |
"sha256:229f81c57791a41d65e399fc06bf0848bab550a9dfd5ed66df18ce5f05e73d5c", | |
"sha256:235682dd292d5899d361a811df37e04a8828a5b1da3115886b73cf81ebc9100e" | |
], | |
"version": "==0.10.0" | |
}, | |
"typed-ast": { | |
"hashes": [ | |
"sha256:1170afa46a3799e18b4c977777ce137bb53c7485379d9706af8a59f2ea1aa161", | |
"sha256:18511a0b3e7922276346bcb47e2ef9f38fb90fd31cb9223eed42c85d1312344e", | |
"sha256:262c247a82d005e43b5b7f69aff746370538e176131c32dda9cb0f324d27141e", | |
"sha256:2b907eb046d049bcd9892e3076c7a6456c93a25bebfe554e931620c90e6a25b0", | |
"sha256:354c16e5babd09f5cb0ee000d54cfa38401d8b8891eefa878ac772f827181a3c", | |
"sha256:48e5b1e71f25cfdef98b013263a88d7145879fbb2d5185f2a0c79fa7ebbeae47", | |
"sha256:4e0b70c6fc4d010f8107726af5fd37921b666f5b31d9331f0bd24ad9a088e631", | |
"sha256:630968c5cdee51a11c05a30453f8cd65e0cc1d2ad0d9192819df9978984529f4", | |
"sha256:66480f95b8167c9c5c5c87f32cf437d585937970f3fc24386f313a4c97b44e34", | |
"sha256:71211d26ffd12d63a83e079ff258ac9d56a1376a25bc80b1cdcdf601b855b90b", | |
"sha256:7954560051331d003b4e2b3eb822d9dd2e376fa4f6d98fee32f452f52dd6ebb2", | |
"sha256:838997f4310012cf2e1ad3803bce2f3402e9ffb71ded61b5ee22617b3a7f6b6e", | |
"sha256:95bd11af7eafc16e829af2d3df510cecfd4387f6453355188342c3e79a2ec87a", | |
"sha256:bc6c7d3fa1325a0c6613512a093bc2a2a15aeec350451cbdf9e1d4bffe3e3233", | |
"sha256:cc34a6f5b426748a507dd5d1de4c1978f2eb5626d51326e43280941206c209e1", | |
"sha256:d755f03c1e4a51e9b24d899561fec4ccaf51f210d52abdf8c07ee2849b212a36", | |
"sha256:d7c45933b1bdfaf9f36c579671fec15d25b06c8398f113dab64c18ed1adda01d", | |
"sha256:d896919306dd0aa22d0132f62a1b78d11aaf4c9fc5b3410d3c666b818191630a", | |
"sha256:fdc1c9bbf79510b76408840e009ed65958feba92a88833cdceecff93ae8fff66", | |
"sha256:ffde2fbfad571af120fcbfbbc61c72469e72f550d676c3342492a9dfdefb8f12" | |
], | |
"version": "==1.4.0" | |
}, | |
"typing-extensions": { | |
"hashes": [ | |
"sha256:091ecc894d5e908ac75209f10d5b4f118fbdb2eb1ede6a63544054bb1edb41f2", | |
"sha256:910f4656f54de5993ad9304959ce9bb903f90aadc7c67a0bef07e678014e892d", | |
"sha256:cf8b63fedea4d89bab840ecbb93e75578af28f76f66c35889bd7065f5af88575" | |
], | |
"version": "==3.7.4.1" | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment