agile-tutorial icon indicating copy to clipboard operation
agile-tutorial copied to clipboard

Create `/math/variance` resource

Open neumannrf opened this issue 6 years ago • 0 comments

As a user I need to calculate the variance of the elements in the list So that so that calculations can be automated.

Assumptions:

  • There should be a main.py file with the following content.
@math_ns.route('/variance')
@math_ns.doc(description='Variance of the list.')
class VarianceList(Resource):
    def get(self):
        return ms.variance(my_list)
  • The main.py file should include an external file above the from src import basic_services as bs line.
from src import math_services as ms
  • The requirements.txt file should list numpy as a dependency.

  • There should be a src/math_services.py file with the following content

import numpy as np


def variance(integer_list):
    """
    Calculates the variance of the list of integers.

    Receives
    --------
    integer_list : list
        List of integers.

    Returns
    -------
    var : float
        Variance of the list.
    """

    integer_array = np.array(integer_list, dtype=int)
    return np.var(integer_array).astype(float)
  • There should be a test/math_test.py file with the following content.
from src import math_services as ms


def test_variance():
    assert ms.variance([1]) == 0.0
    assert ms.variance([2]) == 0.0
    assert ms.variance([1, 1]) == 0.0
    assert ms.variance([1, 2]) == 0.25
    assert ms.variance([1, 2, 3]) == 0.6666666666666666
    assert ms.variance([0, 1, 2, 2]) == 0.6875
    assert ms.variance([1, 1, 2, 3]) == 0.6875
    assert ms.variance([1, 2, 4, 5]) == 2.5
    assert ms.variance([1, 2, 3, 4, 5]) == 2.0

Acceptance criteria:

Given that the application stores a list of integers
When this resource is called
Then the variance of the list is calculated.

neumannrf avatar Mar 15 '19 14:03 neumannrf