Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions hw4/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
PIP := venv/bin/pip
PYTHON3 := venv/bin/python3
TESTS := venv/bin/pytest -v ./test_controllers.py

clear:
rm -rf venv

venv:
python3 -m venv venv

requirements:
${PIP} install -r requirements.txt

setup:
make clear
make venv
make requirements

run:
${PYTHON3} server.py

test:
${TESTS}

.PHONY: clear venv requirements setup run test
3 changes: 3 additions & 0 deletions hw4/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# mipt_python_back

hw4
4 changes: 4 additions & 0 deletions hw4/controllers.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
def operation(a: int, b: int) -> int|None:
if (a == None) or (b == None):
return None
return a + b
3 changes: 3 additions & 0 deletions hw4/requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
Flask
python-dotenv
pytest
40 changes: 40 additions & 0 deletions hw4/server.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
from flask import Flask, jsonify, request
from dotenv import dotenv_values

from controllers import operation


app = Flask(__name__)


@app.route("/")
def server_info() -> str:
return "My server"


@app.route("/author")
def author():
author = {
"name": "Nikita",
"course": 5,
"age": 22,
}
return jsonify(author)


@app.route("/sum")
def runner():
a = request.args.get('a', type=int)
b = request.args.get('b', type=int)
return jsonify({'sum': operation(a, b)})


def get_port() -> int:
config = dotenv_values(".env")
if "PORT" in config:
return int(config["PORT"])
return 5000


if __name__ == "__main__":
app.run(host='0.0.0.0', debug=True, port=get_port())
8 changes: 8 additions & 0 deletions hw4/test_controllers.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import pytest
from controllers import operation


@pytest.mark.parametrize('a, b, expected', [(1, 2, 3), (5, -4, 1), (7, 8, 15)])
def test_operation(a, b, expected) -> None:
received = operation(a, b)
assert received == expected