Skip to content

Update template file name #232

Update template file name

Update template file name #232

GitHub Actions / JUnit Test Report failed Mar 27, 2024 in 0s

412 tests run, 375 passed, 0 skipped, 37 failed.

Annotations

Check failure on line 14 in tests/test_tox_databooks.py

See this annotation in the file changed.

@github-actions github-actions / JUnit Test Report

test_tox_databooks.test_databook[en/LiST countries/MDV_databook.xlsx]

Exception: Error in program data: Target population is 0 for Balanced energy-protein supplementation

Target population is 0 for Cash transfers

Target population is 0 for Lipid-based nutrition supplements

Target population is 0 for Public provision of complementary foods

Target population is 0 for Small quantity lipid-based nutrition supplements
Raw output
self = <nutrition.data.Dataset at 0x7ff003d20550>
[<class 'nutrition.data.Dataset'>]
————————————————————————————————————————...  name: 'MDV_databook'
          region: None
————————————————————————————————————————————————————————————————————————

databook = <pandas.io.excel._base.ExcelFile object at 0x7ff0038b2150>
country = None, region = None, name = 'MDV_databook'

    def __init__(self, databook: pandas.ExcelFile, country=None, region=None, name=None):
        """
        :param databook: Databook that is being used in the model
        :param country: The country of interest for data
        :param region: The region of interest in the country (in geospatial optimization)
        :param name:
        """
    
        self.country = country
        self.region = region
        self.name = name
    
        self.calcscache = CalcCellCache()
    
        # Read them into actual data
        try:
            self.demographic_data = DemographicData(databook, self.calcscache)
        except Exception as E:
            raise Exception("Error in databook: %s" % str(E)) from E
    
        try:
>           self.prog_data = ProgramData(databook, self.demographic_data, self.calcscache)

../nutrition/data.py:1004: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../nutrition/data.py:683: in __init__
    self.validate()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <nutrition.data.ProgramData at 0x7ff003aae450>
[<class 'nutrition.data.ProgramData'>]
————————————————————————————————...c10>
                 [<class 'nutritio [...]
————————————————————————————————————————————————————————————————————————


    def validate(self):
        """ Validate program data """
        invalid = []
        for progname in self.base_prog_set:
            cov = self.base_cov[progname]
            if cov < 0 or cov > 1:
                errormsg = _("Baseline coverage is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            sat = self.sat[progname]
            if sat < 0 or sat > 1:
                errormsg = _("Saturation is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            max_inc = self.max_inc[progname]
            if max_inc < 0 or max_inc > 1:
                errormsg = _("Maximum increase is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            max_dec = self.max_dec[progname]
            if max_dec < 0 or max_dec > 1:
                errormsg = _("Maximum decrease is outside the interval (0, 100) for %s") % progname
    
                invalid.append(errormsg)
            cost = self.costs[progname]
            if cost <= 0:
                errormsg = _("Cost is 0 or negative for %s") % progname
                invalid.append(errormsg)
            if progname not in self.prog_target.keys():
                errormsg = _("Target population not defined for %s") % progname
                invalid.append(errormsg)
            elif sum(self.prog_target[progname].values()) == 0:
                errormsg = _("Target population is 0 for %s") % progname
                invalid.append(errormsg)
        if invalid:
            errors = "\n\n".join(invalid)
>           raise Exception(errors)
E           Exception: Target population is 0 for Balanced energy-protein supplementation
E           
E           Target population is 0 for Cash transfers
E           
E           Target population is 0 for Lipid-based nutrition supplements
E           
E           Target population is 0 for Public provision of complementary foods
E           
E           Target population is 0 for Small quantity lipid-based nutrition supplements

../nutrition/data.py:727: Exception

The above exception was the direct cause of the following exception:

path = PosixPath('/home/runner/work/Nutrition/Nutrition/inputs/en/LiST countries/MDV_databook.xlsx')

    @pytest.mark.parametrize('path', excel_files, ids=lambda x: str(x.relative_to(inputdir)))
    def test_databook(path):
        P = nu.Project("test")
>       P.load_data(inputspath=path)

test_tox_databooks.py:14: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../nutrition/project.py:175: in load_data
    dataset = Dataset(databook=databook, country=country, region=region, name=name)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <nutrition.data.Dataset at 0x7ff003d20550>
[<class 'nutrition.data.Dataset'>]
————————————————————————————————————————...  name: 'MDV_databook'
          region: None
————————————————————————————————————————————————————————————————————————

databook = <pandas.io.excel._base.ExcelFile object at 0x7ff0038b2150>
country = None, region = None, name = 'MDV_databook'

    def __init__(self, databook: pandas.ExcelFile, country=None, region=None, name=None):
        """
        :param databook: Databook that is being used in the model
        :param country: The country of interest for data
        :param region: The region of interest in the country (in geospatial optimization)
        :param name:
        """
    
        self.country = country
        self.region = region
        self.name = name
    
        self.calcscache = CalcCellCache()
    
        # Read them into actual data
        try:
            self.demographic_data = DemographicData(databook, self.calcscache)
        except Exception as E:
            raise Exception("Error in databook: %s" % str(E)) from E
    
        try:
            self.prog_data = ProgramData(databook, self.demographic_data, self.calcscache)
        except Exception as E:
>           raise Exception("Error in program data: %s" % str(E)) from E
E           Exception: Error in program data: Target population is 0 for Balanced energy-protein supplementation
E           
E           Target population is 0 for Cash transfers
E           
E           Target population is 0 for Lipid-based nutrition supplements
E           
E           Target population is 0 for Public provision of complementary foods
E           
E           Target population is 0 for Small quantity lipid-based nutrition supplements

../nutrition/data.py:1006: Exception

Check failure on line 14 in tests/test_tox_databooks.py

See this annotation in the file changed.

@github-actions github-actions / JUnit Test Report

test_tox_databooks.test_databook[en/LiST countries/KAZ_databook.xlsx]

Exception: Error in program data: Target population is 0 for Balanced energy-protein supplementation

Target population is 0 for Cash transfers

Target population is 0 for Lipid-based nutrition supplements

Target population is 0 for Public provision of complementary foods

Target population is 0 for Small quantity lipid-based nutrition supplements
Raw output
self = <nutrition.data.Dataset at 0x7f8c30cced10>
[<class 'nutrition.data.Dataset'>]
————————————————————————————————————————...  name: 'KAZ_databook'
          region: None
————————————————————————————————————————————————————————————————————————

databook = <pandas.io.excel._base.ExcelFile object at 0x7f8c32cdf510>
country = None, region = None, name = 'KAZ_databook'

    def __init__(self, databook: pandas.ExcelFile, country=None, region=None, name=None):
        """
        :param databook: Databook that is being used in the model
        :param country: The country of interest for data
        :param region: The region of interest in the country (in geospatial optimization)
        :param name:
        """
    
        self.country = country
        self.region = region
        self.name = name
    
        self.calcscache = CalcCellCache()
    
        # Read them into actual data
        try:
            self.demographic_data = DemographicData(databook, self.calcscache)
        except Exception as E:
            raise Exception("Error in databook: %s" % str(E)) from E
    
        try:
>           self.prog_data = ProgramData(databook, self.demographic_data, self.calcscache)

../nutrition/data.py:1004: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../nutrition/data.py:683: in __init__
    self.validate()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <nutrition.data.ProgramData at 0x7f8c2fecd090>
[<class 'nutrition.data.ProgramData'>]
————————————————————————————————...0d0>
                 [<class 'nutritio [...]
————————————————————————————————————————————————————————————————————————


    def validate(self):
        """ Validate program data """
        invalid = []
        for progname in self.base_prog_set:
            cov = self.base_cov[progname]
            if cov < 0 or cov > 1:
                errormsg = _("Baseline coverage is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            sat = self.sat[progname]
            if sat < 0 or sat > 1:
                errormsg = _("Saturation is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            max_inc = self.max_inc[progname]
            if max_inc < 0 or max_inc > 1:
                errormsg = _("Maximum increase is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            max_dec = self.max_dec[progname]
            if max_dec < 0 or max_dec > 1:
                errormsg = _("Maximum decrease is outside the interval (0, 100) for %s") % progname
    
                invalid.append(errormsg)
            cost = self.costs[progname]
            if cost <= 0:
                errormsg = _("Cost is 0 or negative for %s") % progname
                invalid.append(errormsg)
            if progname not in self.prog_target.keys():
                errormsg = _("Target population not defined for %s") % progname
                invalid.append(errormsg)
            elif sum(self.prog_target[progname].values()) == 0:
                errormsg = _("Target population is 0 for %s") % progname
                invalid.append(errormsg)
        if invalid:
            errors = "\n\n".join(invalid)
>           raise Exception(errors)
E           Exception: Target population is 0 for Balanced energy-protein supplementation
E           
E           Target population is 0 for Cash transfers
E           
E           Target population is 0 for Lipid-based nutrition supplements
E           
E           Target population is 0 for Public provision of complementary foods
E           
E           Target population is 0 for Small quantity lipid-based nutrition supplements

../nutrition/data.py:727: Exception

The above exception was the direct cause of the following exception:

path = PosixPath('/home/runner/work/Nutrition/Nutrition/inputs/en/LiST countries/KAZ_databook.xlsx')

    @pytest.mark.parametrize('path', excel_files, ids=lambda x: str(x.relative_to(inputdir)))
    def test_databook(path):
        P = nu.Project("test")
>       P.load_data(inputspath=path)

test_tox_databooks.py:14: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../nutrition/project.py:175: in load_data
    dataset = Dataset(databook=databook, country=country, region=region, name=name)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <nutrition.data.Dataset at 0x7f8c30cced10>
[<class 'nutrition.data.Dataset'>]
————————————————————————————————————————...  name: 'KAZ_databook'
          region: None
————————————————————————————————————————————————————————————————————————

databook = <pandas.io.excel._base.ExcelFile object at 0x7f8c32cdf510>
country = None, region = None, name = 'KAZ_databook'

    def __init__(self, databook: pandas.ExcelFile, country=None, region=None, name=None):
        """
        :param databook: Databook that is being used in the model
        :param country: The country of interest for data
        :param region: The region of interest in the country (in geospatial optimization)
        :param name:
        """
    
        self.country = country
        self.region = region
        self.name = name
    
        self.calcscache = CalcCellCache()
    
        # Read them into actual data
        try:
            self.demographic_data = DemographicData(databook, self.calcscache)
        except Exception as E:
            raise Exception("Error in databook: %s" % str(E)) from E
    
        try:
            self.prog_data = ProgramData(databook, self.demographic_data, self.calcscache)
        except Exception as E:
>           raise Exception("Error in program data: %s" % str(E)) from E
E           Exception: Error in program data: Target population is 0 for Balanced energy-protein supplementation
E           
E           Target population is 0 for Cash transfers
E           
E           Target population is 0 for Lipid-based nutrition supplements
E           
E           Target population is 0 for Public provision of complementary foods
E           
E           Target population is 0 for Small quantity lipid-based nutrition supplements

../nutrition/data.py:1006: Exception

Check failure on line 14 in tests/test_tox_databooks.py

See this annotation in the file changed.

@github-actions github-actions / JUnit Test Report

test_tox_databooks.test_databook[en/LiST countries/UKR_databook.xlsx]

Exception: Error in program data: Target population is 0 for Balanced energy-protein supplementation

Target population is 0 for Cash transfers

Target population is 0 for Lipid-based nutrition supplements

Target population is 0 for Public provision of complementary foods

Target population is 0 for Small quantity lipid-based nutrition supplements
Raw output
self = <nutrition.data.Dataset at 0x7f8c306784d0>
[<class 'nutrition.data.Dataset'>]
————————————————————————————————————————...  name: 'UKR_databook'
          region: None
————————————————————————————————————————————————————————————————————————

databook = <pandas.io.excel._base.ExcelFile object at 0x7f8c3093d890>
country = None, region = None, name = 'UKR_databook'

    def __init__(self, databook: pandas.ExcelFile, country=None, region=None, name=None):
        """
        :param databook: Databook that is being used in the model
        :param country: The country of interest for data
        :param region: The region of interest in the country (in geospatial optimization)
        :param name:
        """
    
        self.country = country
        self.region = region
        self.name = name
    
        self.calcscache = CalcCellCache()
    
        # Read them into actual data
        try:
            self.demographic_data = DemographicData(databook, self.calcscache)
        except Exception as E:
            raise Exception("Error in databook: %s" % str(E)) from E
    
        try:
>           self.prog_data = ProgramData(databook, self.demographic_data, self.calcscache)

../nutrition/data.py:1004: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../nutrition/data.py:683: in __init__
    self.validate()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <nutrition.data.ProgramData at 0x7f8c30438690>
[<class 'nutrition.data.ProgramData'>]
————————————————————————————————...0d0>
                 [<class 'nutritio [...]
————————————————————————————————————————————————————————————————————————


    def validate(self):
        """ Validate program data """
        invalid = []
        for progname in self.base_prog_set:
            cov = self.base_cov[progname]
            if cov < 0 or cov > 1:
                errormsg = _("Baseline coverage is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            sat = self.sat[progname]
            if sat < 0 or sat > 1:
                errormsg = _("Saturation is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            max_inc = self.max_inc[progname]
            if max_inc < 0 or max_inc > 1:
                errormsg = _("Maximum increase is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            max_dec = self.max_dec[progname]
            if max_dec < 0 or max_dec > 1:
                errormsg = _("Maximum decrease is outside the interval (0, 100) for %s") % progname
    
                invalid.append(errormsg)
            cost = self.costs[progname]
            if cost <= 0:
                errormsg = _("Cost is 0 or negative for %s") % progname
                invalid.append(errormsg)
            if progname not in self.prog_target.keys():
                errormsg = _("Target population not defined for %s") % progname
                invalid.append(errormsg)
            elif sum(self.prog_target[progname].values()) == 0:
                errormsg = _("Target population is 0 for %s") % progname
                invalid.append(errormsg)
        if invalid:
            errors = "\n\n".join(invalid)
>           raise Exception(errors)
E           Exception: Target population is 0 for Balanced energy-protein supplementation
E           
E           Target population is 0 for Cash transfers
E           
E           Target population is 0 for Lipid-based nutrition supplements
E           
E           Target population is 0 for Public provision of complementary foods
E           
E           Target population is 0 for Small quantity lipid-based nutrition supplements

../nutrition/data.py:727: Exception

The above exception was the direct cause of the following exception:

path = PosixPath('/home/runner/work/Nutrition/Nutrition/inputs/en/LiST countries/UKR_databook.xlsx')

    @pytest.mark.parametrize('path', excel_files, ids=lambda x: str(x.relative_to(inputdir)))
    def test_databook(path):
        P = nu.Project("test")
>       P.load_data(inputspath=path)

test_tox_databooks.py:14: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../nutrition/project.py:175: in load_data
    dataset = Dataset(databook=databook, country=country, region=region, name=name)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <nutrition.data.Dataset at 0x7f8c306784d0>
[<class 'nutrition.data.Dataset'>]
————————————————————————————————————————...  name: 'UKR_databook'
          region: None
————————————————————————————————————————————————————————————————————————

databook = <pandas.io.excel._base.ExcelFile object at 0x7f8c3093d890>
country = None, region = None, name = 'UKR_databook'

    def __init__(self, databook: pandas.ExcelFile, country=None, region=None, name=None):
        """
        :param databook: Databook that is being used in the model
        :param country: The country of interest for data
        :param region: The region of interest in the country (in geospatial optimization)
        :param name:
        """
    
        self.country = country
        self.region = region
        self.name = name
    
        self.calcscache = CalcCellCache()
    
        # Read them into actual data
        try:
            self.demographic_data = DemographicData(databook, self.calcscache)
        except Exception as E:
            raise Exception("Error in databook: %s" % str(E)) from E
    
        try:
            self.prog_data = ProgramData(databook, self.demographic_data, self.calcscache)
        except Exception as E:
>           raise Exception("Error in program data: %s" % str(E)) from E
E           Exception: Error in program data: Target population is 0 for Balanced energy-protein supplementation
E           
E           Target population is 0 for Cash transfers
E           
E           Target population is 0 for Lipid-based nutrition supplements
E           
E           Target population is 0 for Public provision of complementary foods
E           
E           Target population is 0 for Small quantity lipid-based nutrition supplements

../nutrition/data.py:1006: Exception

Check failure on line 14 in tests/test_tox_databooks.py

See this annotation in the file changed.

@github-actions github-actions / JUnit Test Report

test_tox_databooks.test_databook[en/LiST countries/RUS_databook.xlsx]

Exception: Error in program data: Target population is 0 for Balanced energy-protein supplementation

Target population is 0 for Cash transfers

Target population is 0 for Lipid-based nutrition supplements

Target population is 0 for Public provision of complementary foods

Target population is 0 for Small quantity lipid-based nutrition supplements
Raw output
self = <nutrition.data.Dataset at 0x7ff003ef9990>
[<class 'nutrition.data.Dataset'>]
————————————————————————————————————————...  name: 'RUS_databook'
          region: None
————————————————————————————————————————————————————————————————————————

databook = <pandas.io.excel._base.ExcelFile object at 0x7ff004cd1b50>
country = None, region = None, name = 'RUS_databook'

    def __init__(self, databook: pandas.ExcelFile, country=None, region=None, name=None):
        """
        :param databook: Databook that is being used in the model
        :param country: The country of interest for data
        :param region: The region of interest in the country (in geospatial optimization)
        :param name:
        """
    
        self.country = country
        self.region = region
        self.name = name
    
        self.calcscache = CalcCellCache()
    
        # Read them into actual data
        try:
            self.demographic_data = DemographicData(databook, self.calcscache)
        except Exception as E:
            raise Exception("Error in databook: %s" % str(E)) from E
    
        try:
>           self.prog_data = ProgramData(databook, self.demographic_data, self.calcscache)

../nutrition/data.py:1004: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../nutrition/data.py:683: in __init__
    self.validate()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <nutrition.data.ProgramData at 0x7ff003cc6850>
[<class 'nutrition.data.ProgramData'>]
————————————————————————————————...e10>
                 [<class 'nutritio [...]
————————————————————————————————————————————————————————————————————————


    def validate(self):
        """ Validate program data """
        invalid = []
        for progname in self.base_prog_set:
            cov = self.base_cov[progname]
            if cov < 0 or cov > 1:
                errormsg = _("Baseline coverage is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            sat = self.sat[progname]
            if sat < 0 or sat > 1:
                errormsg = _("Saturation is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            max_inc = self.max_inc[progname]
            if max_inc < 0 or max_inc > 1:
                errormsg = _("Maximum increase is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            max_dec = self.max_dec[progname]
            if max_dec < 0 or max_dec > 1:
                errormsg = _("Maximum decrease is outside the interval (0, 100) for %s") % progname
    
                invalid.append(errormsg)
            cost = self.costs[progname]
            if cost <= 0:
                errormsg = _("Cost is 0 or negative for %s") % progname
                invalid.append(errormsg)
            if progname not in self.prog_target.keys():
                errormsg = _("Target population not defined for %s") % progname
                invalid.append(errormsg)
            elif sum(self.prog_target[progname].values()) == 0:
                errormsg = _("Target population is 0 for %s") % progname
                invalid.append(errormsg)
        if invalid:
            errors = "\n\n".join(invalid)
>           raise Exception(errors)
E           Exception: Target population is 0 for Balanced energy-protein supplementation
E           
E           Target population is 0 for Cash transfers
E           
E           Target population is 0 for Lipid-based nutrition supplements
E           
E           Target population is 0 for Public provision of complementary foods
E           
E           Target population is 0 for Small quantity lipid-based nutrition supplements

../nutrition/data.py:727: Exception

The above exception was the direct cause of the following exception:

path = PosixPath('/home/runner/work/Nutrition/Nutrition/inputs/en/LiST countries/RUS_databook.xlsx')

    @pytest.mark.parametrize('path', excel_files, ids=lambda x: str(x.relative_to(inputdir)))
    def test_databook(path):
        P = nu.Project("test")
>       P.load_data(inputspath=path)

test_tox_databooks.py:14: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../nutrition/project.py:175: in load_data
    dataset = Dataset(databook=databook, country=country, region=region, name=name)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <nutrition.data.Dataset at 0x7ff003ef9990>
[<class 'nutrition.data.Dataset'>]
————————————————————————————————————————...  name: 'RUS_databook'
          region: None
————————————————————————————————————————————————————————————————————————

databook = <pandas.io.excel._base.ExcelFile object at 0x7ff004cd1b50>
country = None, region = None, name = 'RUS_databook'

    def __init__(self, databook: pandas.ExcelFile, country=None, region=None, name=None):
        """
        :param databook: Databook that is being used in the model
        :param country: The country of interest for data
        :param region: The region of interest in the country (in geospatial optimization)
        :param name:
        """
    
        self.country = country
        self.region = region
        self.name = name
    
        self.calcscache = CalcCellCache()
    
        # Read them into actual data
        try:
            self.demographic_data = DemographicData(databook, self.calcscache)
        except Exception as E:
            raise Exception("Error in databook: %s" % str(E)) from E
    
        try:
            self.prog_data = ProgramData(databook, self.demographic_data, self.calcscache)
        except Exception as E:
>           raise Exception("Error in program data: %s" % str(E)) from E
E           Exception: Error in program data: Target population is 0 for Balanced energy-protein supplementation
E           
E           Target population is 0 for Cash transfers
E           
E           Target population is 0 for Lipid-based nutrition supplements
E           
E           Target population is 0 for Public provision of complementary foods
E           
E           Target population is 0 for Small quantity lipid-based nutrition supplements

../nutrition/data.py:1006: Exception

Check failure on line 14 in tests/test_tox_databooks.py

See this annotation in the file changed.

@github-actions github-actions / JUnit Test Report

test_tox_databooks.test_databook[en/LiST countries/LCA_databook.xlsx]

Exception: Error in program data: Cost is 0 or negative for Treatment of SAM
Raw output
self = <nutrition.data.Dataset at 0x7f8c3013b410>
[<class 'nutrition.data.Dataset'>]
————————————————————————————————————————...  name: 'LCA_databook'
          region: None
————————————————————————————————————————————————————————————————————————

databook = <pandas.io.excel._base.ExcelFile object at 0x7f8c3013a990>
country = None, region = None, name = 'LCA_databook'

    def __init__(self, databook: pandas.ExcelFile, country=None, region=None, name=None):
        """
        :param databook: Databook that is being used in the model
        :param country: The country of interest for data
        :param region: The region of interest in the country (in geospatial optimization)
        :param name:
        """
    
        self.country = country
        self.region = region
        self.name = name
    
        self.calcscache = CalcCellCache()
    
        # Read them into actual data
        try:
            self.demographic_data = DemographicData(databook, self.calcscache)
        except Exception as E:
            raise Exception("Error in databook: %s" % str(E)) from E
    
        try:
>           self.prog_data = ProgramData(databook, self.demographic_data, self.calcscache)

../nutrition/data.py:1004: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../nutrition/data.py:683: in __init__
    self.validate()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <nutrition.data.ProgramData at 0x7f8c305f4750>
[<class 'nutrition.data.ProgramData'>]
————————————————————————————————...090>
                 [<class 'nutritio [...]
————————————————————————————————————————————————————————————————————————


    def validate(self):
        """ Validate program data """
        invalid = []
        for progname in self.base_prog_set:
            cov = self.base_cov[progname]
            if cov < 0 or cov > 1:
                errormsg = _("Baseline coverage is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            sat = self.sat[progname]
            if sat < 0 or sat > 1:
                errormsg = _("Saturation is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            max_inc = self.max_inc[progname]
            if max_inc < 0 or max_inc > 1:
                errormsg = _("Maximum increase is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            max_dec = self.max_dec[progname]
            if max_dec < 0 or max_dec > 1:
                errormsg = _("Maximum decrease is outside the interval (0, 100) for %s") % progname
    
                invalid.append(errormsg)
            cost = self.costs[progname]
            if cost <= 0:
                errormsg = _("Cost is 0 or negative for %s") % progname
                invalid.append(errormsg)
            if progname not in self.prog_target.keys():
                errormsg = _("Target population not defined for %s") % progname
                invalid.append(errormsg)
            elif sum(self.prog_target[progname].values()) == 0:
                errormsg = _("Target population is 0 for %s") % progname
                invalid.append(errormsg)
        if invalid:
            errors = "\n\n".join(invalid)
>           raise Exception(errors)
E           Exception: Cost is 0 or negative for Treatment of SAM

../nutrition/data.py:727: Exception

The above exception was the direct cause of the following exception:

path = PosixPath('/home/runner/work/Nutrition/Nutrition/inputs/en/LiST countries/LCA_databook.xlsx')

    @pytest.mark.parametrize('path', excel_files, ids=lambda x: str(x.relative_to(inputdir)))
    def test_databook(path):
        P = nu.Project("test")
>       P.load_data(inputspath=path)

test_tox_databooks.py:14: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../nutrition/project.py:175: in load_data
    dataset = Dataset(databook=databook, country=country, region=region, name=name)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <nutrition.data.Dataset at 0x7f8c3013b410>
[<class 'nutrition.data.Dataset'>]
————————————————————————————————————————...  name: 'LCA_databook'
          region: None
————————————————————————————————————————————————————————————————————————

databook = <pandas.io.excel._base.ExcelFile object at 0x7f8c3013a990>
country = None, region = None, name = 'LCA_databook'

    def __init__(self, databook: pandas.ExcelFile, country=None, region=None, name=None):
        """
        :param databook: Databook that is being used in the model
        :param country: The country of interest for data
        :param region: The region of interest in the country (in geospatial optimization)
        :param name:
        """
    
        self.country = country
        self.region = region
        self.name = name
    
        self.calcscache = CalcCellCache()
    
        # Read them into actual data
        try:
            self.demographic_data = DemographicData(databook, self.calcscache)
        except Exception as E:
            raise Exception("Error in databook: %s" % str(E)) from E
    
        try:
            self.prog_data = ProgramData(databook, self.demographic_data, self.calcscache)
        except Exception as E:
>           raise Exception("Error in program data: %s" % str(E)) from E
E           Exception: Error in program data: Cost is 0 or negative for Treatment of SAM

../nutrition/data.py:1006: Exception

Check failure on line 14 in tests/test_tox_databooks.py

See this annotation in the file changed.

@github-actions github-actions / JUnit Test Report

test_tox_databooks.test_databook[en/LiST countries/THA_databook.xlsx]

Exception: Error in program data: Target population is 0 for Balanced energy-protein supplementation

Target population is 0 for Cash transfers

Target population is 0 for Lipid-based nutrition supplements

Target population is 0 for Public provision of complementary foods

Target population is 0 for Small quantity lipid-based nutrition supplements
Raw output
self = <nutrition.data.Dataset at 0x7ff00419ec90>
[<class 'nutrition.data.Dataset'>]
————————————————————————————————————————...  name: 'THA_databook'
          region: None
————————————————————————————————————————————————————————————————————————

databook = <pandas.io.excel._base.ExcelFile object at 0x7ff014137dd0>
country = None, region = None, name = 'THA_databook'

    def __init__(self, databook: pandas.ExcelFile, country=None, region=None, name=None):
        """
        :param databook: Databook that is being used in the model
        :param country: The country of interest for data
        :param region: The region of interest in the country (in geospatial optimization)
        :param name:
        """
    
        self.country = country
        self.region = region
        self.name = name
    
        self.calcscache = CalcCellCache()
    
        # Read them into actual data
        try:
            self.demographic_data = DemographicData(databook, self.calcscache)
        except Exception as E:
            raise Exception("Error in databook: %s" % str(E)) from E
    
        try:
>           self.prog_data = ProgramData(databook, self.demographic_data, self.calcscache)

../nutrition/data.py:1004: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../nutrition/data.py:683: in __init__
    self.validate()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <nutrition.data.ProgramData at 0x7ff0038bd850>
[<class 'nutrition.data.ProgramData'>]
————————————————————————————————...c50>
                 [<class 'nutritio [...]
————————————————————————————————————————————————————————————————————————


    def validate(self):
        """ Validate program data """
        invalid = []
        for progname in self.base_prog_set:
            cov = self.base_cov[progname]
            if cov < 0 or cov > 1:
                errormsg = _("Baseline coverage is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            sat = self.sat[progname]
            if sat < 0 or sat > 1:
                errormsg = _("Saturation is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            max_inc = self.max_inc[progname]
            if max_inc < 0 or max_inc > 1:
                errormsg = _("Maximum increase is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            max_dec = self.max_dec[progname]
            if max_dec < 0 or max_dec > 1:
                errormsg = _("Maximum decrease is outside the interval (0, 100) for %s") % progname
    
                invalid.append(errormsg)
            cost = self.costs[progname]
            if cost <= 0:
                errormsg = _("Cost is 0 or negative for %s") % progname
                invalid.append(errormsg)
            if progname not in self.prog_target.keys():
                errormsg = _("Target population not defined for %s") % progname
                invalid.append(errormsg)
            elif sum(self.prog_target[progname].values()) == 0:
                errormsg = _("Target population is 0 for %s") % progname
                invalid.append(errormsg)
        if invalid:
            errors = "\n\n".join(invalid)
>           raise Exception(errors)
E           Exception: Target population is 0 for Balanced energy-protein supplementation
E           
E           Target population is 0 for Cash transfers
E           
E           Target population is 0 for Lipid-based nutrition supplements
E           
E           Target population is 0 for Public provision of complementary foods
E           
E           Target population is 0 for Small quantity lipid-based nutrition supplements

../nutrition/data.py:727: Exception

The above exception was the direct cause of the following exception:

path = PosixPath('/home/runner/work/Nutrition/Nutrition/inputs/en/LiST countries/THA_databook.xlsx')

    @pytest.mark.parametrize('path', excel_files, ids=lambda x: str(x.relative_to(inputdir)))
    def test_databook(path):
        P = nu.Project("test")
>       P.load_data(inputspath=path)

test_tox_databooks.py:14: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../nutrition/project.py:175: in load_data
    dataset = Dataset(databook=databook, country=country, region=region, name=name)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <nutrition.data.Dataset at 0x7ff00419ec90>
[<class 'nutrition.data.Dataset'>]
————————————————————————————————————————...  name: 'THA_databook'
          region: None
————————————————————————————————————————————————————————————————————————

databook = <pandas.io.excel._base.ExcelFile object at 0x7ff014137dd0>
country = None, region = None, name = 'THA_databook'

    def __init__(self, databook: pandas.ExcelFile, country=None, region=None, name=None):
        """
        :param databook: Databook that is being used in the model
        :param country: The country of interest for data
        :param region: The region of interest in the country (in geospatial optimization)
        :param name:
        """
    
        self.country = country
        self.region = region
        self.name = name
    
        self.calcscache = CalcCellCache()
    
        # Read them into actual data
        try:
            self.demographic_data = DemographicData(databook, self.calcscache)
        except Exception as E:
            raise Exception("Error in databook: %s" % str(E)) from E
    
        try:
            self.prog_data = ProgramData(databook, self.demographic_data, self.calcscache)
        except Exception as E:
>           raise Exception("Error in program data: %s" % str(E)) from E
E           Exception: Error in program data: Target population is 0 for Balanced energy-protein supplementation
E           
E           Target population is 0 for Cash transfers
E           
E           Target population is 0 for Lipid-based nutrition supplements
E           
E           Target population is 0 for Public provision of complementary foods
E           
E           Target population is 0 for Small quantity lipid-based nutrition supplements

../nutrition/data.py:1006: Exception

Check failure on line 14 in tests/test_tox_databooks.py

See this annotation in the file changed.

@github-actions github-actions / JUnit Test Report

test_tox_databooks.test_databook[en/LiST countries/AZE_databook.xlsx]

Exception: Error in program data: Target population is 0 for Balanced energy-protein supplementation

Target population is 0 for Cash transfers

Target population is 0 for Lipid-based nutrition supplements

Target population is 0 for Public provision of complementary foods

Target population is 0 for Small quantity lipid-based nutrition supplements
Raw output
self = <nutrition.data.Dataset at 0x7ff003617910>
[<class 'nutrition.data.Dataset'>]
————————————————————————————————————————...  name: 'AZE_databook'
          region: None
————————————————————————————————————————————————————————————————————————

databook = <pandas.io.excel._base.ExcelFile object at 0x7ff00415c750>
country = None, region = None, name = 'AZE_databook'

    def __init__(self, databook: pandas.ExcelFile, country=None, region=None, name=None):
        """
        :param databook: Databook that is being used in the model
        :param country: The country of interest for data
        :param region: The region of interest in the country (in geospatial optimization)
        :param name:
        """
    
        self.country = country
        self.region = region
        self.name = name
    
        self.calcscache = CalcCellCache()
    
        # Read them into actual data
        try:
            self.demographic_data = DemographicData(databook, self.calcscache)
        except Exception as E:
            raise Exception("Error in databook: %s" % str(E)) from E
    
        try:
>           self.prog_data = ProgramData(databook, self.demographic_data, self.calcscache)

../nutrition/data.py:1004: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../nutrition/data.py:683: in __init__
    self.validate()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <nutrition.data.ProgramData at 0x7ff003fa7c10>
[<class 'nutrition.data.ProgramData'>]
————————————————————————————————...090>
                 [<class 'nutritio [...]
————————————————————————————————————————————————————————————————————————


    def validate(self):
        """ Validate program data """
        invalid = []
        for progname in self.base_prog_set:
            cov = self.base_cov[progname]
            if cov < 0 or cov > 1:
                errormsg = _("Baseline coverage is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            sat = self.sat[progname]
            if sat < 0 or sat > 1:
                errormsg = _("Saturation is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            max_inc = self.max_inc[progname]
            if max_inc < 0 or max_inc > 1:
                errormsg = _("Maximum increase is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            max_dec = self.max_dec[progname]
            if max_dec < 0 or max_dec > 1:
                errormsg = _("Maximum decrease is outside the interval (0, 100) for %s") % progname
    
                invalid.append(errormsg)
            cost = self.costs[progname]
            if cost <= 0:
                errormsg = _("Cost is 0 or negative for %s") % progname
                invalid.append(errormsg)
            if progname not in self.prog_target.keys():
                errormsg = _("Target population not defined for %s") % progname
                invalid.append(errormsg)
            elif sum(self.prog_target[progname].values()) == 0:
                errormsg = _("Target population is 0 for %s") % progname
                invalid.append(errormsg)
        if invalid:
            errors = "\n\n".join(invalid)
>           raise Exception(errors)
E           Exception: Target population is 0 for Balanced energy-protein supplementation
E           
E           Target population is 0 for Cash transfers
E           
E           Target population is 0 for Lipid-based nutrition supplements
E           
E           Target population is 0 for Public provision of complementary foods
E           
E           Target population is 0 for Small quantity lipid-based nutrition supplements

../nutrition/data.py:727: Exception

The above exception was the direct cause of the following exception:

path = PosixPath('/home/runner/work/Nutrition/Nutrition/inputs/en/LiST countries/AZE_databook.xlsx')

    @pytest.mark.parametrize('path', excel_files, ids=lambda x: str(x.relative_to(inputdir)))
    def test_databook(path):
        P = nu.Project("test")
>       P.load_data(inputspath=path)

test_tox_databooks.py:14: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../nutrition/project.py:175: in load_data
    dataset = Dataset(databook=databook, country=country, region=region, name=name)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <nutrition.data.Dataset at 0x7ff003617910>
[<class 'nutrition.data.Dataset'>]
————————————————————————————————————————...  name: 'AZE_databook'
          region: None
————————————————————————————————————————————————————————————————————————

databook = <pandas.io.excel._base.ExcelFile object at 0x7ff00415c750>
country = None, region = None, name = 'AZE_databook'

    def __init__(self, databook: pandas.ExcelFile, country=None, region=None, name=None):
        """
        :param databook: Databook that is being used in the model
        :param country: The country of interest for data
        :param region: The region of interest in the country (in geospatial optimization)
        :param name:
        """
    
        self.country = country
        self.region = region
        self.name = name
    
        self.calcscache = CalcCellCache()
    
        # Read them into actual data
        try:
            self.demographic_data = DemographicData(databook, self.calcscache)
        except Exception as E:
            raise Exception("Error in databook: %s" % str(E)) from E
    
        try:
            self.prog_data = ProgramData(databook, self.demographic_data, self.calcscache)
        except Exception as E:
>           raise Exception("Error in program data: %s" % str(E)) from E
E           Exception: Error in program data: Target population is 0 for Balanced energy-protein supplementation
E           
E           Target population is 0 for Cash transfers
E           
E           Target population is 0 for Lipid-based nutrition supplements
E           
E           Target population is 0 for Public provision of complementary foods
E           
E           Target population is 0 for Small quantity lipid-based nutrition supplements

../nutrition/data.py:1006: Exception

Check failure on line 14 in tests/test_tox_databooks.py

See this annotation in the file changed.

@github-actions github-actions / JUnit Test Report

test_tox_databooks.test_databook[en/LiST countries/MYS_databook.xlsx]

Exception: Error in program data: Target population is 0 for Balanced energy-protein supplementation

Target population is 0 for Cash transfers

Target population is 0 for Lipid-based nutrition supplements

Target population is 0 for Public provision of complementary foods

Target population is 0 for Small quantity lipid-based nutrition supplements
Raw output
self = <nutrition.data.Dataset at 0x7ff0041d7a10>
[<class 'nutrition.data.Dataset'>]
————————————————————————————————————————...  name: 'MYS_databook'
          region: None
————————————————————————————————————————————————————————————————————————

databook = <pandas.io.excel._base.ExcelFile object at 0x7ff0041d6e90>
country = None, region = None, name = 'MYS_databook'

    def __init__(self, databook: pandas.ExcelFile, country=None, region=None, name=None):
        """
        :param databook: Databook that is being used in the model
        :param country: The country of interest for data
        :param region: The region of interest in the country (in geospatial optimization)
        :param name:
        """
    
        self.country = country
        self.region = region
        self.name = name
    
        self.calcscache = CalcCellCache()
    
        # Read them into actual data
        try:
            self.demographic_data = DemographicData(databook, self.calcscache)
        except Exception as E:
            raise Exception("Error in databook: %s" % str(E)) from E
    
        try:
>           self.prog_data = ProgramData(databook, self.demographic_data, self.calcscache)

../nutrition/data.py:1004: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../nutrition/data.py:683: in __init__
    self.validate()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <nutrition.data.ProgramData at 0x7ff003adc090>
[<class 'nutrition.data.ProgramData'>]
————————————————————————————————...d90>
                 [<class 'nutritio [...]
————————————————————————————————————————————————————————————————————————


    def validate(self):
        """ Validate program data """
        invalid = []
        for progname in self.base_prog_set:
            cov = self.base_cov[progname]
            if cov < 0 or cov > 1:
                errormsg = _("Baseline coverage is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            sat = self.sat[progname]
            if sat < 0 or sat > 1:
                errormsg = _("Saturation is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            max_inc = self.max_inc[progname]
            if max_inc < 0 or max_inc > 1:
                errormsg = _("Maximum increase is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            max_dec = self.max_dec[progname]
            if max_dec < 0 or max_dec > 1:
                errormsg = _("Maximum decrease is outside the interval (0, 100) for %s") % progname
    
                invalid.append(errormsg)
            cost = self.costs[progname]
            if cost <= 0:
                errormsg = _("Cost is 0 or negative for %s") % progname
                invalid.append(errormsg)
            if progname not in self.prog_target.keys():
                errormsg = _("Target population not defined for %s") % progname
                invalid.append(errormsg)
            elif sum(self.prog_target[progname].values()) == 0:
                errormsg = _("Target population is 0 for %s") % progname
                invalid.append(errormsg)
        if invalid:
            errors = "\n\n".join(invalid)
>           raise Exception(errors)
E           Exception: Target population is 0 for Balanced energy-protein supplementation
E           
E           Target population is 0 for Cash transfers
E           
E           Target population is 0 for Lipid-based nutrition supplements
E           
E           Target population is 0 for Public provision of complementary foods
E           
E           Target population is 0 for Small quantity lipid-based nutrition supplements

../nutrition/data.py:727: Exception

The above exception was the direct cause of the following exception:

path = PosixPath('/home/runner/work/Nutrition/Nutrition/inputs/en/LiST countries/MYS_databook.xlsx')

    @pytest.mark.parametrize('path', excel_files, ids=lambda x: str(x.relative_to(inputdir)))
    def test_databook(path):
        P = nu.Project("test")
>       P.load_data(inputspath=path)

test_tox_databooks.py:14: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../nutrition/project.py:175: in load_data
    dataset = Dataset(databook=databook, country=country, region=region, name=name)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <nutrition.data.Dataset at 0x7ff0041d7a10>
[<class 'nutrition.data.Dataset'>]
————————————————————————————————————————...  name: 'MYS_databook'
          region: None
————————————————————————————————————————————————————————————————————————

databook = <pandas.io.excel._base.ExcelFile object at 0x7ff0041d6e90>
country = None, region = None, name = 'MYS_databook'

    def __init__(self, databook: pandas.ExcelFile, country=None, region=None, name=None):
        """
        :param databook: Databook that is being used in the model
        :param country: The country of interest for data
        :param region: The region of interest in the country (in geospatial optimization)
        :param name:
        """
    
        self.country = country
        self.region = region
        self.name = name
    
        self.calcscache = CalcCellCache()
    
        # Read them into actual data
        try:
            self.demographic_data = DemographicData(databook, self.calcscache)
        except Exception as E:
            raise Exception("Error in databook: %s" % str(E)) from E
    
        try:
            self.prog_data = ProgramData(databook, self.demographic_data, self.calcscache)
        except Exception as E:
>           raise Exception("Error in program data: %s" % str(E)) from E
E           Exception: Error in program data: Target population is 0 for Balanced energy-protein supplementation
E           
E           Target population is 0 for Cash transfers
E           
E           Target population is 0 for Lipid-based nutrition supplements
E           
E           Target population is 0 for Public provision of complementary foods
E           
E           Target population is 0 for Small quantity lipid-based nutrition supplements

../nutrition/data.py:1006: Exception

Check failure on line 14 in tests/test_tox_databooks.py

See this annotation in the file changed.

@github-actions github-actions / JUnit Test Report

test_tox_databooks.test_databook[en/LiST countries/BLR_databook.xlsx]

Exception: Error in program data: Target population is 0 for Balanced energy-protein supplementation

Target population is 0 for Cash transfers

Target population is 0 for Lipid-based nutrition supplements

Target population is 0 for Public provision of complementary foods

Target population is 0 for Small quantity lipid-based nutrition supplements
Raw output
self = <nutrition.data.Dataset at 0x7f8c30154410>
[<class 'nutrition.data.Dataset'>]
————————————————————————————————————————...  name: 'BLR_databook'
          region: None
————————————————————————————————————————————————————————————————————————

databook = <pandas.io.excel._base.ExcelFile object at 0x7f8c30155f10>
country = None, region = None, name = 'BLR_databook'

    def __init__(self, databook: pandas.ExcelFile, country=None, region=None, name=None):
        """
        :param databook: Databook that is being used in the model
        :param country: The country of interest for data
        :param region: The region of interest in the country (in geospatial optimization)
        :param name:
        """
    
        self.country = country
        self.region = region
        self.name = name
    
        self.calcscache = CalcCellCache()
    
        # Read them into actual data
        try:
            self.demographic_data = DemographicData(databook, self.calcscache)
        except Exception as E:
            raise Exception("Error in databook: %s" % str(E)) from E
    
        try:
>           self.prog_data = ProgramData(databook, self.demographic_data, self.calcscache)

../nutrition/data.py:1004: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../nutrition/data.py:683: in __init__
    self.validate()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <nutrition.data.ProgramData at 0x7f8c30156190>
[<class 'nutrition.data.ProgramData'>]
————————————————————————————————...0d0>
                 [<class 'nutritio [...]
————————————————————————————————————————————————————————————————————————


    def validate(self):
        """ Validate program data """
        invalid = []
        for progname in self.base_prog_set:
            cov = self.base_cov[progname]
            if cov < 0 or cov > 1:
                errormsg = _("Baseline coverage is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            sat = self.sat[progname]
            if sat < 0 or sat > 1:
                errormsg = _("Saturation is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            max_inc = self.max_inc[progname]
            if max_inc < 0 or max_inc > 1:
                errormsg = _("Maximum increase is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            max_dec = self.max_dec[progname]
            if max_dec < 0 or max_dec > 1:
                errormsg = _("Maximum decrease is outside the interval (0, 100) for %s") % progname
    
                invalid.append(errormsg)
            cost = self.costs[progname]
            if cost <= 0:
                errormsg = _("Cost is 0 or negative for %s") % progname
                invalid.append(errormsg)
            if progname not in self.prog_target.keys():
                errormsg = _("Target population not defined for %s") % progname
                invalid.append(errormsg)
            elif sum(self.prog_target[progname].values()) == 0:
                errormsg = _("Target population is 0 for %s") % progname
                invalid.append(errormsg)
        if invalid:
            errors = "\n\n".join(invalid)
>           raise Exception(errors)
E           Exception: Target population is 0 for Balanced energy-protein supplementation
E           
E           Target population is 0 for Cash transfers
E           
E           Target population is 0 for Lipid-based nutrition supplements
E           
E           Target population is 0 for Public provision of complementary foods
E           
E           Target population is 0 for Small quantity lipid-based nutrition supplements

../nutrition/data.py:727: Exception

The above exception was the direct cause of the following exception:

path = PosixPath('/home/runner/work/Nutrition/Nutrition/inputs/en/LiST countries/BLR_databook.xlsx')

    @pytest.mark.parametrize('path', excel_files, ids=lambda x: str(x.relative_to(inputdir)))
    def test_databook(path):
        P = nu.Project("test")
>       P.load_data(inputspath=path)

test_tox_databooks.py:14: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../nutrition/project.py:175: in load_data
    dataset = Dataset(databook=databook, country=country, region=region, name=name)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <nutrition.data.Dataset at 0x7f8c30154410>
[<class 'nutrition.data.Dataset'>]
————————————————————————————————————————...  name: 'BLR_databook'
          region: None
————————————————————————————————————————————————————————————————————————

databook = <pandas.io.excel._base.ExcelFile object at 0x7f8c30155f10>
country = None, region = None, name = 'BLR_databook'

    def __init__(self, databook: pandas.ExcelFile, country=None, region=None, name=None):
        """
        :param databook: Databook that is being used in the model
        :param country: The country of interest for data
        :param region: The region of interest in the country (in geospatial optimization)
        :param name:
        """
    
        self.country = country
        self.region = region
        self.name = name
    
        self.calcscache = CalcCellCache()
    
        # Read them into actual data
        try:
            self.demographic_data = DemographicData(databook, self.calcscache)
        except Exception as E:
            raise Exception("Error in databook: %s" % str(E)) from E
    
        try:
            self.prog_data = ProgramData(databook, self.demographic_data, self.calcscache)
        except Exception as E:
>           raise Exception("Error in program data: %s" % str(E)) from E
E           Exception: Error in program data: Target population is 0 for Balanced energy-protein supplementation
E           
E           Target population is 0 for Cash transfers
E           
E           Target population is 0 for Lipid-based nutrition supplements
E           
E           Target population is 0 for Public provision of complementary foods
E           
E           Target population is 0 for Small quantity lipid-based nutrition supplements

../nutrition/data.py:1006: Exception

Check failure on line 14 in tests/test_tox_databooks.py

See this annotation in the file changed.

@github-actions github-actions / JUnit Test Report

test_tox_databooks.test_databook[es/LiST countries/BLR_databook.xlsx]

Exception: Error in program data: La población objetivo es 0 para Suplemento energético-proteico equilibrado

La población objetivo es 0 para Transferencias de efectivo

La población objetivo es 0 para Suplementos nutricionales a base de lípidos

La población objetivo es 0 para Suministro público de alimentos complementarios

La población objetivo es 0 para Suplementos nutricionales a base de lípidos en pequeñas cantidades
Raw output
self = <nutrition.data.Dataset at 0x7f8c2fc593d0>
[<class 'nutrition.data.Dataset'>]
————————————————————————————————————————...  name: 'BLR_databook'
          region: None
————————————————————————————————————————————————————————————————————————

databook = <pandas.io.excel._base.ExcelFile object at 0x7f8c2fc5a450>
country = None, region = None, name = 'BLR_databook'

    def __init__(self, databook: pandas.ExcelFile, country=None, region=None, name=None):
        """
        :param databook: Databook that is being used in the model
        :param country: The country of interest for data
        :param region: The region of interest in the country (in geospatial optimization)
        :param name:
        """
    
        self.country = country
        self.region = region
        self.name = name
    
        self.calcscache = CalcCellCache()
    
        # Read them into actual data
        try:
            self.demographic_data = DemographicData(databook, self.calcscache)
        except Exception as E:
            raise Exception("Error in databook: %s" % str(E)) from E
    
        try:
>           self.prog_data = ProgramData(databook, self.demographic_data, self.calcscache)

../nutrition/data.py:1004: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../nutrition/data.py:683: in __init__
    self.validate()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <nutrition.data.ProgramData at 0x7f8c3043ff50>
[<class 'nutrition.data.ProgramData'>]
————————————————————————————————...f10>
                 [<class 'nutritio [...]
————————————————————————————————————————————————————————————————————————


    def validate(self):
        """ Validate program data """
        invalid = []
        for progname in self.base_prog_set:
            cov = self.base_cov[progname]
            if cov < 0 or cov > 1:
                errormsg = _("Baseline coverage is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            sat = self.sat[progname]
            if sat < 0 or sat > 1:
                errormsg = _("Saturation is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            max_inc = self.max_inc[progname]
            if max_inc < 0 or max_inc > 1:
                errormsg = _("Maximum increase is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            max_dec = self.max_dec[progname]
            if max_dec < 0 or max_dec > 1:
                errormsg = _("Maximum decrease is outside the interval (0, 100) for %s") % progname
    
                invalid.append(errormsg)
            cost = self.costs[progname]
            if cost <= 0:
                errormsg = _("Cost is 0 or negative for %s") % progname
                invalid.append(errormsg)
            if progname not in self.prog_target.keys():
                errormsg = _("Target population not defined for %s") % progname
                invalid.append(errormsg)
            elif sum(self.prog_target[progname].values()) == 0:
                errormsg = _("Target population is 0 for %s") % progname
                invalid.append(errormsg)
        if invalid:
            errors = "\n\n".join(invalid)
>           raise Exception(errors)
E           Exception: La población objetivo es 0 para Suplemento energético-proteico equilibrado
E           
E           La población objetivo es 0 para Transferencias de efectivo
E           
E           La población objetivo es 0 para Suplementos nutricionales a base de lípidos
E           
E           La población objetivo es 0 para Suministro público de alimentos complementarios
E           
E           La población objetivo es 0 para Suplementos nutricionales a base de lípidos en pequeñas cantidades

../nutrition/data.py:727: Exception

The above exception was the direct cause of the following exception:

path = PosixPath('/home/runner/work/Nutrition/Nutrition/inputs/es/LiST countries/BLR_databook.xlsx')

    @pytest.mark.parametrize('path', excel_files, ids=lambda x: str(x.relative_to(inputdir)))
    def test_databook(path):
        P = nu.Project("test")
>       P.load_data(inputspath=path)

test_tox_databooks.py:14: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../nutrition/project.py:175: in load_data
    dataset = Dataset(databook=databook, country=country, region=region, name=name)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <nutrition.data.Dataset at 0x7f8c2fc593d0>
[<class 'nutrition.data.Dataset'>]
————————————————————————————————————————...  name: 'BLR_databook'
          region: None
————————————————————————————————————————————————————————————————————————

databook = <pandas.io.excel._base.ExcelFile object at 0x7f8c2fc5a450>
country = None, region = None, name = 'BLR_databook'

    def __init__(self, databook: pandas.ExcelFile, country=None, region=None, name=None):
        """
        :param databook: Databook that is being used in the model
        :param country: The country of interest for data
        :param region: The region of interest in the country (in geospatial optimization)
        :param name:
        """
    
        self.country = country
        self.region = region
        self.name = name
    
        self.calcscache = CalcCellCache()
    
        # Read them into actual data
        try:
            self.demographic_data = DemographicData(databook, self.calcscache)
        except Exception as E:
            raise Exception("Error in databook: %s" % str(E)) from E
    
        try:
            self.prog_data = ProgramData(databook, self.demographic_data, self.calcscache)
        except Exception as E:
>           raise Exception("Error in program data: %s" % str(E)) from E
E           Exception: Error in program data: La población objetivo es 0 para Suplemento energético-proteico equilibrado
E           
E           La población objetivo es 0 para Transferencias de efectivo
E           
E           La población objetivo es 0 para Suplementos nutricionales a base de lípidos
E           
E           La población objetivo es 0 para Suministro público de alimentos complementarios
E           
E           La población objetivo es 0 para Suplementos nutricionales a base de lípidos en pequeñas cantidades

../nutrition/data.py:1006: Exception

Check failure on line 14 in tests/test_tox_databooks.py

See this annotation in the file changed.

@github-actions github-actions / JUnit Test Report

test_tox_databooks.test_databook[es/LiST countries/MDV_databook.xlsx]

Exception: Error in program data: La población objetivo es 0 para Suplemento energético-proteico equilibrado

La población objetivo es 0 para Transferencias de efectivo

La población objetivo es 0 para Suplementos nutricionales a base de lípidos

La población objetivo es 0 para Suministro público de alimentos complementarios

La población objetivo es 0 para Suplementos nutricionales a base de lípidos en pequeñas cantidades
Raw output
self = <nutrition.data.Dataset at 0x7f8c30310b90>
[<class 'nutrition.data.Dataset'>]
————————————————————————————————————————...  name: 'MDV_databook'
          region: None
————————————————————————————————————————————————————————————————————————

databook = <pandas.io.excel._base.ExcelFile object at 0x7f8c30c3cf50>
country = None, region = None, name = 'MDV_databook'

    def __init__(self, databook: pandas.ExcelFile, country=None, region=None, name=None):
        """
        :param databook: Databook that is being used in the model
        :param country: The country of interest for data
        :param region: The region of interest in the country (in geospatial optimization)
        :param name:
        """
    
        self.country = country
        self.region = region
        self.name = name
    
        self.calcscache = CalcCellCache()
    
        # Read them into actual data
        try:
            self.demographic_data = DemographicData(databook, self.calcscache)
        except Exception as E:
            raise Exception("Error in databook: %s" % str(E)) from E
    
        try:
>           self.prog_data = ProgramData(databook, self.demographic_data, self.calcscache)

../nutrition/data.py:1004: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../nutrition/data.py:683: in __init__
    self.validate()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <nutrition.data.ProgramData at 0x7f8c3091b7d0>
[<class 'nutrition.data.ProgramData'>]
————————————————————————————————...350>
                 [<class 'nutritio [...]
————————————————————————————————————————————————————————————————————————


    def validate(self):
        """ Validate program data """
        invalid = []
        for progname in self.base_prog_set:
            cov = self.base_cov[progname]
            if cov < 0 or cov > 1:
                errormsg = _("Baseline coverage is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            sat = self.sat[progname]
            if sat < 0 or sat > 1:
                errormsg = _("Saturation is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            max_inc = self.max_inc[progname]
            if max_inc < 0 or max_inc > 1:
                errormsg = _("Maximum increase is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            max_dec = self.max_dec[progname]
            if max_dec < 0 or max_dec > 1:
                errormsg = _("Maximum decrease is outside the interval (0, 100) for %s") % progname
    
                invalid.append(errormsg)
            cost = self.costs[progname]
            if cost <= 0:
                errormsg = _("Cost is 0 or negative for %s") % progname
                invalid.append(errormsg)
            if progname not in self.prog_target.keys():
                errormsg = _("Target population not defined for %s") % progname
                invalid.append(errormsg)
            elif sum(self.prog_target[progname].values()) == 0:
                errormsg = _("Target population is 0 for %s") % progname
                invalid.append(errormsg)
        if invalid:
            errors = "\n\n".join(invalid)
>           raise Exception(errors)
E           Exception: La población objetivo es 0 para Suplemento energético-proteico equilibrado
E           
E           La población objetivo es 0 para Transferencias de efectivo
E           
E           La población objetivo es 0 para Suplementos nutricionales a base de lípidos
E           
E           La población objetivo es 0 para Suministro público de alimentos complementarios
E           
E           La población objetivo es 0 para Suplementos nutricionales a base de lípidos en pequeñas cantidades

../nutrition/data.py:727: Exception

The above exception was the direct cause of the following exception:

path = PosixPath('/home/runner/work/Nutrition/Nutrition/inputs/es/LiST countries/MDV_databook.xlsx')

    @pytest.mark.parametrize('path', excel_files, ids=lambda x: str(x.relative_to(inputdir)))
    def test_databook(path):
        P = nu.Project("test")
>       P.load_data(inputspath=path)

test_tox_databooks.py:14: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../nutrition/project.py:175: in load_data
    dataset = Dataset(databook=databook, country=country, region=region, name=name)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <nutrition.data.Dataset at 0x7f8c30310b90>
[<class 'nutrition.data.Dataset'>]
————————————————————————————————————————...  name: 'MDV_databook'
          region: None
————————————————————————————————————————————————————————————————————————

databook = <pandas.io.excel._base.ExcelFile object at 0x7f8c30c3cf50>
country = None, region = None, name = 'MDV_databook'

    def __init__(self, databook: pandas.ExcelFile, country=None, region=None, name=None):
        """
        :param databook: Databook that is being used in the model
        :param country: The country of interest for data
        :param region: The region of interest in the country (in geospatial optimization)
        :param name:
        """
    
        self.country = country
        self.region = region
        self.name = name
    
        self.calcscache = CalcCellCache()
    
        # Read them into actual data
        try:
            self.demographic_data = DemographicData(databook, self.calcscache)
        except Exception as E:
            raise Exception("Error in databook: %s" % str(E)) from E
    
        try:
            self.prog_data = ProgramData(databook, self.demographic_data, self.calcscache)
        except Exception as E:
>           raise Exception("Error in program data: %s" % str(E)) from E
E           Exception: Error in program data: La población objetivo es 0 para Suplemento energético-proteico equilibrado
E           
E           La población objetivo es 0 para Transferencias de efectivo
E           
E           La población objetivo es 0 para Suplementos nutricionales a base de lípidos
E           
E           La población objetivo es 0 para Suministro público de alimentos complementarios
E           
E           La población objetivo es 0 para Suplementos nutricionales a base de lípidos en pequeñas cantidades

../nutrition/data.py:1006: Exception

Check failure on line 14 in tests/test_tox_databooks.py

See this annotation in the file changed.

@github-actions github-actions / JUnit Test Report

test_tox_databooks.test_databook[es/LiST countries/RUS_databook.xlsx]

Exception: Error in program data: La población objetivo es 0 para Suplemento energético-proteico equilibrado

La población objetivo es 0 para Transferencias de efectivo

La población objetivo es 0 para Suplementos nutricionales a base de lípidos

La población objetivo es 0 para Suministro público de alimentos complementarios

La población objetivo es 0 para Suplementos nutricionales a base de lípidos en pequeñas cantidades
Raw output
self = <nutrition.data.Dataset at 0x7f8c2fa34410>
[<class 'nutrition.data.Dataset'>]
————————————————————————————————————————...  name: 'RUS_databook'
          region: None
————————————————————————————————————————————————————————————————————————

databook = <pandas.io.excel._base.ExcelFile object at 0x7f8c2fa35c50>
country = None, region = None, name = 'RUS_databook'

    def __init__(self, databook: pandas.ExcelFile, country=None, region=None, name=None):
        """
        :param databook: Databook that is being used in the model
        :param country: The country of interest for data
        :param region: The region of interest in the country (in geospatial optimization)
        :param name:
        """
    
        self.country = country
        self.region = region
        self.name = name
    
        self.calcscache = CalcCellCache()
    
        # Read them into actual data
        try:
            self.demographic_data = DemographicData(databook, self.calcscache)
        except Exception as E:
            raise Exception("Error in databook: %s" % str(E)) from E
    
        try:
>           self.prog_data = ProgramData(databook, self.demographic_data, self.calcscache)

../nutrition/data.py:1004: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../nutrition/data.py:683: in __init__
    self.validate()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <nutrition.data.ProgramData at 0x7f8c30050750>
[<class 'nutrition.data.ProgramData'>]
————————————————————————————————...090>
                 [<class 'nutritio [...]
————————————————————————————————————————————————————————————————————————


    def validate(self):
        """ Validate program data """
        invalid = []
        for progname in self.base_prog_set:
            cov = self.base_cov[progname]
            if cov < 0 or cov > 1:
                errormsg = _("Baseline coverage is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            sat = self.sat[progname]
            if sat < 0 or sat > 1:
                errormsg = _("Saturation is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            max_inc = self.max_inc[progname]
            if max_inc < 0 or max_inc > 1:
                errormsg = _("Maximum increase is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            max_dec = self.max_dec[progname]
            if max_dec < 0 or max_dec > 1:
                errormsg = _("Maximum decrease is outside the interval (0, 100) for %s") % progname
    
                invalid.append(errormsg)
            cost = self.costs[progname]
            if cost <= 0:
                errormsg = _("Cost is 0 or negative for %s") % progname
                invalid.append(errormsg)
            if progname not in self.prog_target.keys():
                errormsg = _("Target population not defined for %s") % progname
                invalid.append(errormsg)
            elif sum(self.prog_target[progname].values()) == 0:
                errormsg = _("Target population is 0 for %s") % progname
                invalid.append(errormsg)
        if invalid:
            errors = "\n\n".join(invalid)
>           raise Exception(errors)
E           Exception: La población objetivo es 0 para Suplemento energético-proteico equilibrado
E           
E           La población objetivo es 0 para Transferencias de efectivo
E           
E           La población objetivo es 0 para Suplementos nutricionales a base de lípidos
E           
E           La población objetivo es 0 para Suministro público de alimentos complementarios
E           
E           La población objetivo es 0 para Suplementos nutricionales a base de lípidos en pequeñas cantidades

../nutrition/data.py:727: Exception

The above exception was the direct cause of the following exception:

path = PosixPath('/home/runner/work/Nutrition/Nutrition/inputs/es/LiST countries/RUS_databook.xlsx')

    @pytest.mark.parametrize('path', excel_files, ids=lambda x: str(x.relative_to(inputdir)))
    def test_databook(path):
        P = nu.Project("test")
>       P.load_data(inputspath=path)

test_tox_databooks.py:14: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../nutrition/project.py:175: in load_data
    dataset = Dataset(databook=databook, country=country, region=region, name=name)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <nutrition.data.Dataset at 0x7f8c2fa34410>
[<class 'nutrition.data.Dataset'>]
————————————————————————————————————————...  name: 'RUS_databook'
          region: None
————————————————————————————————————————————————————————————————————————

databook = <pandas.io.excel._base.ExcelFile object at 0x7f8c2fa35c50>
country = None, region = None, name = 'RUS_databook'

    def __init__(self, databook: pandas.ExcelFile, country=None, region=None, name=None):
        """
        :param databook: Databook that is being used in the model
        :param country: The country of interest for data
        :param region: The region of interest in the country (in geospatial optimization)
        :param name:
        """
    
        self.country = country
        self.region = region
        self.name = name
    
        self.calcscache = CalcCellCache()
    
        # Read them into actual data
        try:
            self.demographic_data = DemographicData(databook, self.calcscache)
        except Exception as E:
            raise Exception("Error in databook: %s" % str(E)) from E
    
        try:
            self.prog_data = ProgramData(databook, self.demographic_data, self.calcscache)
        except Exception as E:
>           raise Exception("Error in program data: %s" % str(E)) from E
E           Exception: Error in program data: La población objetivo es 0 para Suplemento energético-proteico equilibrado
E           
E           La población objetivo es 0 para Transferencias de efectivo
E           
E           La población objetivo es 0 para Suplementos nutricionales a base de lípidos
E           
E           La población objetivo es 0 para Suministro público de alimentos complementarios
E           
E           La población objetivo es 0 para Suplementos nutricionales a base de lípidos en pequeñas cantidades

../nutrition/data.py:1006: Exception

Check failure on line 14 in tests/test_tox_databooks.py

See this annotation in the file changed.

@github-actions github-actions / JUnit Test Report

test_tox_databooks.test_databook[en/LiST countries/BIH_databook.xlsx]

ZeroDivisionError: float division by zero
Raw output
path = PosixPath('/home/runner/work/Nutrition/Nutrition/inputs/en/LiST countries/BIH_databook.xlsx')

    @pytest.mark.parametrize('path', excel_files, ids=lambda x: str(x.relative_to(inputdir)))
    def test_databook(path):
        P = nu.Project("test")
>       P.load_data(inputspath=path)

test_tox_databooks.py:14: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../nutrition/project.py:184: in load_data
    self.add_model(name, growth=growth)  # add model associated with the dataset or datasets
../nutrition/utils.py:85: in wrapper
    return f(*args, **kwargs)
../nutrition/project.py:372: in add_model
    model = Model(dataset, t, growth=growth)
../nutrition/model.py:25: in __init__
    self._set_progs(self.prog_info.base_progset())
../nutrition/model.py:71: in _set_progs
    self.prog_info.set_init_covs(self.pops)
../nutrition/programs.py:661: in set_init_covs
    prog.set_pop_sizes(pops)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <nutrition.programs.Program at 0x7ff003c8bb10>
[<class 'nutrition.programs.Program'>, <class 'sciris.sc_printing.prett...  6,  7,  8,  9, 10,
                    11])
————————————————————————————————————————————————————————————————————————

pops = [<nutrition.populations.Children at 0x7ff003ae47d0>
[<class 'nutrition.populations.Children'>, <class 'nutrition.popul...90>
              [<class 'nutrition.s [...]
————————————————————————————————————————————————————————————————————————
]

    def set_pop_sizes(self, pops):
        self._set_restrpop(pops)
        self._set_unrestrpop(pops)
        # this accounts for different fractions within age bands
>       self.sat_unrestr = self.restr_popsize / self.unrestr_popsize
E       ZeroDivisionError: float division by zero

../nutrition/programs.py:112: ZeroDivisionError

Check failure on line 14 in tests/test_tox_databooks.py

See this annotation in the file changed.

@github-actions github-actions / JUnit Test Report

test_tox_databooks.test_databook[en/LiST countries/TON_databook.xlsx]

Exception: Error in program data: Target population is 0 for Oral rehydration salts

Target population is 0 for Zinc for treatment + ORS
Raw output
self = <nutrition.data.Dataset at 0x7ff00424fa10>
[<class 'nutrition.data.Dataset'>]
————————————————————————————————————————...  name: 'TON_databook'
          region: None
————————————————————————————————————————————————————————————————————————

databook = <pandas.io.excel._base.ExcelFile object at 0x7ff0045b4050>
country = None, region = None, name = 'TON_databook'

    def __init__(self, databook: pandas.ExcelFile, country=None, region=None, name=None):
        """
        :param databook: Databook that is being used in the model
        :param country: The country of interest for data
        :param region: The region of interest in the country (in geospatial optimization)
        :param name:
        """
    
        self.country = country
        self.region = region
        self.name = name
    
        self.calcscache = CalcCellCache()
    
        # Read them into actual data
        try:
            self.demographic_data = DemographicData(databook, self.calcscache)
        except Exception as E:
            raise Exception("Error in databook: %s" % str(E)) from E
    
        try:
>           self.prog_data = ProgramData(databook, self.demographic_data, self.calcscache)

../nutrition/data.py:1004: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../nutrition/data.py:683: in __init__
    self.validate()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <nutrition.data.ProgramData at 0x7ff0034d4d90>
[<class 'nutrition.data.ProgramData'>]
————————————————————————————————...190>
                 [<class 'nutritio [...]
————————————————————————————————————————————————————————————————————————


    def validate(self):
        """ Validate program data """
        invalid = []
        for progname in self.base_prog_set:
            cov = self.base_cov[progname]
            if cov < 0 or cov > 1:
                errormsg = _("Baseline coverage is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            sat = self.sat[progname]
            if sat < 0 or sat > 1:
                errormsg = _("Saturation is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            max_inc = self.max_inc[progname]
            if max_inc < 0 or max_inc > 1:
                errormsg = _("Maximum increase is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            max_dec = self.max_dec[progname]
            if max_dec < 0 or max_dec > 1:
                errormsg = _("Maximum decrease is outside the interval (0, 100) for %s") % progname
    
                invalid.append(errormsg)
            cost = self.costs[progname]
            if cost <= 0:
                errormsg = _("Cost is 0 or negative for %s") % progname
                invalid.append(errormsg)
            if progname not in self.prog_target.keys():
                errormsg = _("Target population not defined for %s") % progname
                invalid.append(errormsg)
            elif sum(self.prog_target[progname].values()) == 0:
                errormsg = _("Target population is 0 for %s") % progname
                invalid.append(errormsg)
        if invalid:
            errors = "\n\n".join(invalid)
>           raise Exception(errors)
E           Exception: Target population is 0 for Oral rehydration salts
E           
E           Target population is 0 for Zinc for treatment + ORS

../nutrition/data.py:727: Exception

The above exception was the direct cause of the following exception:

path = PosixPath('/home/runner/work/Nutrition/Nutrition/inputs/en/LiST countries/TON_databook.xlsx')

    @pytest.mark.parametrize('path', excel_files, ids=lambda x: str(x.relative_to(inputdir)))
    def test_databook(path):
        P = nu.Project("test")
>       P.load_data(inputspath=path)

test_tox_databooks.py:14: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../nutrition/project.py:175: in load_data
    dataset = Dataset(databook=databook, country=country, region=region, name=name)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <nutrition.data.Dataset at 0x7ff00424fa10>
[<class 'nutrition.data.Dataset'>]
————————————————————————————————————————...  name: 'TON_databook'
          region: None
————————————————————————————————————————————————————————————————————————

databook = <pandas.io.excel._base.ExcelFile object at 0x7ff0045b4050>
country = None, region = None, name = 'TON_databook'

    def __init__(self, databook: pandas.ExcelFile, country=None, region=None, name=None):
        """
        :param databook: Databook that is being used in the model
        :param country: The country of interest for data
        :param region: The region of interest in the country (in geospatial optimization)
        :param name:
        """
    
        self.country = country
        self.region = region
        self.name = name
    
        self.calcscache = CalcCellCache()
    
        # Read them into actual data
        try:
            self.demographic_data = DemographicData(databook, self.calcscache)
        except Exception as E:
            raise Exception("Error in databook: %s" % str(E)) from E
    
        try:
            self.prog_data = ProgramData(databook, self.demographic_data, self.calcscache)
        except Exception as E:
>           raise Exception("Error in program data: %s" % str(E)) from E
E           Exception: Error in program data: Target population is 0 for Oral rehydration salts
E           
E           Target population is 0 for Zinc for treatment + ORS

../nutrition/data.py:1006: Exception

Check failure on line 14 in tests/test_tox_databooks.py

See this annotation in the file changed.

@github-actions github-actions / JUnit Test Report

test_tox_databooks.test_databook[es/LiST countries/KAZ_databook.xlsx]

Exception: Error in program data: La población objetivo es 0 para Suplemento energético-proteico equilibrado

La población objetivo es 0 para Transferencias de efectivo

La población objetivo es 0 para Suplementos nutricionales a base de lípidos

La población objetivo es 0 para Suministro público de alimentos complementarios

La población objetivo es 0 para Suplementos nutricionales a base de lípidos en pequeñas cantidades
Raw output
self = <nutrition.data.Dataset at 0x7ff003cc5790>
[<class 'nutrition.data.Dataset'>]
————————————————————————————————————————...  name: 'KAZ_databook'
          region: None
————————————————————————————————————————————————————————————————————————

databook = <pandas.io.excel._base.ExcelFile object at 0x7ff02c3656d0>
country = None, region = None, name = 'KAZ_databook'

    def __init__(self, databook: pandas.ExcelFile, country=None, region=None, name=None):
        """
        :param databook: Databook that is being used in the model
        :param country: The country of interest for data
        :param region: The region of interest in the country (in geospatial optimization)
        :param name:
        """
    
        self.country = country
        self.region = region
        self.name = name
    
        self.calcscache = CalcCellCache()
    
        # Read them into actual data
        try:
            self.demographic_data = DemographicData(databook, self.calcscache)
        except Exception as E:
            raise Exception("Error in databook: %s" % str(E)) from E
    
        try:
>           self.prog_data = ProgramData(databook, self.demographic_data, self.calcscache)

../nutrition/data.py:1004: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../nutrition/data.py:683: in __init__
    self.validate()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <nutrition.data.ProgramData at 0x7ff00419cf90>
[<class 'nutrition.data.ProgramData'>]
————————————————————————————————...450>
                 [<class 'nutritio [...]
————————————————————————————————————————————————————————————————————————


    def validate(self):
        """ Validate program data """
        invalid = []
        for progname in self.base_prog_set:
            cov = self.base_cov[progname]
            if cov < 0 or cov > 1:
                errormsg = _("Baseline coverage is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            sat = self.sat[progname]
            if sat < 0 or sat > 1:
                errormsg = _("Saturation is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            max_inc = self.max_inc[progname]
            if max_inc < 0 or max_inc > 1:
                errormsg = _("Maximum increase is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            max_dec = self.max_dec[progname]
            if max_dec < 0 or max_dec > 1:
                errormsg = _("Maximum decrease is outside the interval (0, 100) for %s") % progname
    
                invalid.append(errormsg)
            cost = self.costs[progname]
            if cost <= 0:
                errormsg = _("Cost is 0 or negative for %s") % progname
                invalid.append(errormsg)
            if progname not in self.prog_target.keys():
                errormsg = _("Target population not defined for %s") % progname
                invalid.append(errormsg)
            elif sum(self.prog_target[progname].values()) == 0:
                errormsg = _("Target population is 0 for %s") % progname
                invalid.append(errormsg)
        if invalid:
            errors = "\n\n".join(invalid)
>           raise Exception(errors)
E           Exception: La población objetivo es 0 para Suplemento energético-proteico equilibrado
E           
E           La población objetivo es 0 para Transferencias de efectivo
E           
E           La población objetivo es 0 para Suplementos nutricionales a base de lípidos
E           
E           La población objetivo es 0 para Suministro público de alimentos complementarios
E           
E           La población objetivo es 0 para Suplementos nutricionales a base de lípidos en pequeñas cantidades

../nutrition/data.py:727: Exception

The above exception was the direct cause of the following exception:

path = PosixPath('/home/runner/work/Nutrition/Nutrition/inputs/es/LiST countries/KAZ_databook.xlsx')

    @pytest.mark.parametrize('path', excel_files, ids=lambda x: str(x.relative_to(inputdir)))
    def test_databook(path):
        P = nu.Project("test")
>       P.load_data(inputspath=path)

test_tox_databooks.py:14: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../nutrition/project.py:175: in load_data
    dataset = Dataset(databook=databook, country=country, region=region, name=name)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <nutrition.data.Dataset at 0x7ff003cc5790>
[<class 'nutrition.data.Dataset'>]
————————————————————————————————————————...  name: 'KAZ_databook'
          region: None
————————————————————————————————————————————————————————————————————————

databook = <pandas.io.excel._base.ExcelFile object at 0x7ff02c3656d0>
country = None, region = None, name = 'KAZ_databook'

    def __init__(self, databook: pandas.ExcelFile, country=None, region=None, name=None):
        """
        :param databook: Databook that is being used in the model
        :param country: The country of interest for data
        :param region: The region of interest in the country (in geospatial optimization)
        :param name:
        """
    
        self.country = country
        self.region = region
        self.name = name
    
        self.calcscache = CalcCellCache()
    
        # Read them into actual data
        try:
            self.demographic_data = DemographicData(databook, self.calcscache)
        except Exception as E:
            raise Exception("Error in databook: %s" % str(E)) from E
    
        try:
            self.prog_data = ProgramData(databook, self.demographic_data, self.calcscache)
        except Exception as E:
>           raise Exception("Error in program data: %s" % str(E)) from E
E           Exception: Error in program data: La población objetivo es 0 para Suplemento energético-proteico equilibrado
E           
E           La población objetivo es 0 para Transferencias de efectivo
E           
E           La población objetivo es 0 para Suplementos nutricionales a base de lípidos
E           
E           La población objetivo es 0 para Suministro público de alimentos complementarios
E           
E           La población objetivo es 0 para Suplementos nutricionales a base de lípidos en pequeñas cantidades

../nutrition/data.py:1006: Exception

Check failure on line 14 in tests/test_tox_databooks.py

See this annotation in the file changed.

@github-actions github-actions / JUnit Test Report

test_tox_databooks.test_databook[es/LiST countries/UKR_databook.xlsx]

Exception: Error in program data: La población objetivo es 0 para Suplemento energético-proteico equilibrado

La población objetivo es 0 para Transferencias de efectivo

La población objetivo es 0 para Suplementos nutricionales a base de lípidos

La población objetivo es 0 para Suministro público de alimentos complementarios

La población objetivo es 0 para Suplementos nutricionales a base de lípidos en pequeñas cantidades
Raw output
self = <nutrition.data.Dataset at 0x7ff0041a7d90>
[<class 'nutrition.data.Dataset'>]
————————————————————————————————————————...  name: 'UKR_databook'
          region: None
————————————————————————————————————————————————————————————————————————

databook = <pandas.io.excel._base.ExcelFile object at 0x7ff0045b4610>
country = None, region = None, name = 'UKR_databook'

    def __init__(self, databook: pandas.ExcelFile, country=None, region=None, name=None):
        """
        :param databook: Databook that is being used in the model
        :param country: The country of interest for data
        :param region: The region of interest in the country (in geospatial optimization)
        :param name:
        """
    
        self.country = country
        self.region = region
        self.name = name
    
        self.calcscache = CalcCellCache()
    
        # Read them into actual data
        try:
            self.demographic_data = DemographicData(databook, self.calcscache)
        except Exception as E:
            raise Exception("Error in databook: %s" % str(E)) from E
    
        try:
>           self.prog_data = ProgramData(databook, self.demographic_data, self.calcscache)

../nutrition/data.py:1004: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../nutrition/data.py:683: in __init__
    self.validate()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <nutrition.data.ProgramData at 0x7ff00400ca90>
[<class 'nutrition.data.ProgramData'>]
————————————————————————————————...190>
                 [<class 'nutritio [...]
————————————————————————————————————————————————————————————————————————


    def validate(self):
        """ Validate program data """
        invalid = []
        for progname in self.base_prog_set:
            cov = self.base_cov[progname]
            if cov < 0 or cov > 1:
                errormsg = _("Baseline coverage is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            sat = self.sat[progname]
            if sat < 0 or sat > 1:
                errormsg = _("Saturation is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            max_inc = self.max_inc[progname]
            if max_inc < 0 or max_inc > 1:
                errormsg = _("Maximum increase is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            max_dec = self.max_dec[progname]
            if max_dec < 0 or max_dec > 1:
                errormsg = _("Maximum decrease is outside the interval (0, 100) for %s") % progname
    
                invalid.append(errormsg)
            cost = self.costs[progname]
            if cost <= 0:
                errormsg = _("Cost is 0 or negative for %s") % progname
                invalid.append(errormsg)
            if progname not in self.prog_target.keys():
                errormsg = _("Target population not defined for %s") % progname
                invalid.append(errormsg)
            elif sum(self.prog_target[progname].values()) == 0:
                errormsg = _("Target population is 0 for %s") % progname
                invalid.append(errormsg)
        if invalid:
            errors = "\n\n".join(invalid)
>           raise Exception(errors)
E           Exception: La población objetivo es 0 para Suplemento energético-proteico equilibrado
E           
E           La población objetivo es 0 para Transferencias de efectivo
E           
E           La población objetivo es 0 para Suplementos nutricionales a base de lípidos
E           
E           La población objetivo es 0 para Suministro público de alimentos complementarios
E           
E           La población objetivo es 0 para Suplementos nutricionales a base de lípidos en pequeñas cantidades

../nutrition/data.py:727: Exception

The above exception was the direct cause of the following exception:

path = PosixPath('/home/runner/work/Nutrition/Nutrition/inputs/es/LiST countries/UKR_databook.xlsx')

    @pytest.mark.parametrize('path', excel_files, ids=lambda x: str(x.relative_to(inputdir)))
    def test_databook(path):
        P = nu.Project("test")
>       P.load_data(inputspath=path)

test_tox_databooks.py:14: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../nutrition/project.py:175: in load_data
    dataset = Dataset(databook=databook, country=country, region=region, name=name)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <nutrition.data.Dataset at 0x7ff0041a7d90>
[<class 'nutrition.data.Dataset'>]
————————————————————————————————————————...  name: 'UKR_databook'
          region: None
————————————————————————————————————————————————————————————————————————

databook = <pandas.io.excel._base.ExcelFile object at 0x7ff0045b4610>
country = None, region = None, name = 'UKR_databook'

    def __init__(self, databook: pandas.ExcelFile, country=None, region=None, name=None):
        """
        :param databook: Databook that is being used in the model
        :param country: The country of interest for data
        :param region: The region of interest in the country (in geospatial optimization)
        :param name:
        """
    
        self.country = country
        self.region = region
        self.name = name
    
        self.calcscache = CalcCellCache()
    
        # Read them into actual data
        try:
            self.demographic_data = DemographicData(databook, self.calcscache)
        except Exception as E:
            raise Exception("Error in databook: %s" % str(E)) from E
    
        try:
            self.prog_data = ProgramData(databook, self.demographic_data, self.calcscache)
        except Exception as E:
>           raise Exception("Error in program data: %s" % str(E)) from E
E           Exception: Error in program data: La población objetivo es 0 para Suplemento energético-proteico equilibrado
E           
E           La población objetivo es 0 para Transferencias de efectivo
E           
E           La población objetivo es 0 para Suplementos nutricionales a base de lípidos
E           
E           La población objetivo es 0 para Suministro público de alimentos complementarios
E           
E           La población objetivo es 0 para Suplementos nutricionales a base de lípidos en pequeñas cantidades

../nutrition/data.py:1006: Exception

Check failure on line 14 in tests/test_tox_databooks.py

See this annotation in the file changed.

@github-actions github-actions / JUnit Test Report

test_tox_databooks.test_databook[es/LiST countries/THA_databook.xlsx]

Exception: Error in program data: La población objetivo es 0 para Suplemento energético-proteico equilibrado

La población objetivo es 0 para Transferencias de efectivo

La población objetivo es 0 para Suplementos nutricionales a base de lípidos

La población objetivo es 0 para Suministro público de alimentos complementarios

La población objetivo es 0 para Suplementos nutricionales a base de lípidos en pequeñas cantidades
Raw output
self = <nutrition.data.Dataset at 0x7f8c2fff2710>
[<class 'nutrition.data.Dataset'>]
————————————————————————————————————————...  name: 'THA_databook'
          region: None
————————————————————————————————————————————————————————————————————————

databook = <pandas.io.excel._base.ExcelFile object at 0x7f8c2fc58bd0>
country = None, region = None, name = 'THA_databook'

    def __init__(self, databook: pandas.ExcelFile, country=None, region=None, name=None):
        """
        :param databook: Databook that is being used in the model
        :param country: The country of interest for data
        :param region: The region of interest in the country (in geospatial optimization)
        :param name:
        """
    
        self.country = country
        self.region = region
        self.name = name
    
        self.calcscache = CalcCellCache()
    
        # Read them into actual data
        try:
            self.demographic_data = DemographicData(databook, self.calcscache)
        except Exception as E:
            raise Exception("Error in databook: %s" % str(E)) from E
    
        try:
>           self.prog_data = ProgramData(databook, self.demographic_data, self.calcscache)

../nutrition/data.py:1004: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../nutrition/data.py:683: in __init__
    self.validate()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <nutrition.data.ProgramData at 0x7f8c2ff03c50>
[<class 'nutrition.data.ProgramData'>]
————————————————————————————————...0d0>
                 [<class 'nutritio [...]
————————————————————————————————————————————————————————————————————————


    def validate(self):
        """ Validate program data """
        invalid = []
        for progname in self.base_prog_set:
            cov = self.base_cov[progname]
            if cov < 0 or cov > 1:
                errormsg = _("Baseline coverage is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            sat = self.sat[progname]
            if sat < 0 or sat > 1:
                errormsg = _("Saturation is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            max_inc = self.max_inc[progname]
            if max_inc < 0 or max_inc > 1:
                errormsg = _("Maximum increase is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            max_dec = self.max_dec[progname]
            if max_dec < 0 or max_dec > 1:
                errormsg = _("Maximum decrease is outside the interval (0, 100) for %s") % progname
    
                invalid.append(errormsg)
            cost = self.costs[progname]
            if cost <= 0:
                errormsg = _("Cost is 0 or negative for %s") % progname
                invalid.append(errormsg)
            if progname not in self.prog_target.keys():
                errormsg = _("Target population not defined for %s") % progname
                invalid.append(errormsg)
            elif sum(self.prog_target[progname].values()) == 0:
                errormsg = _("Target population is 0 for %s") % progname
                invalid.append(errormsg)
        if invalid:
            errors = "\n\n".join(invalid)
>           raise Exception(errors)
E           Exception: La población objetivo es 0 para Suplemento energético-proteico equilibrado
E           
E           La población objetivo es 0 para Transferencias de efectivo
E           
E           La población objetivo es 0 para Suplementos nutricionales a base de lípidos
E           
E           La población objetivo es 0 para Suministro público de alimentos complementarios
E           
E           La población objetivo es 0 para Suplementos nutricionales a base de lípidos en pequeñas cantidades

../nutrition/data.py:727: Exception

The above exception was the direct cause of the following exception:

path = PosixPath('/home/runner/work/Nutrition/Nutrition/inputs/es/LiST countries/THA_databook.xlsx')

    @pytest.mark.parametrize('path', excel_files, ids=lambda x: str(x.relative_to(inputdir)))
    def test_databook(path):
        P = nu.Project("test")
>       P.load_data(inputspath=path)

test_tox_databooks.py:14: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../nutrition/project.py:175: in load_data
    dataset = Dataset(databook=databook, country=country, region=region, name=name)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <nutrition.data.Dataset at 0x7f8c2fff2710>
[<class 'nutrition.data.Dataset'>]
————————————————————————————————————————...  name: 'THA_databook'
          region: None
————————————————————————————————————————————————————————————————————————

databook = <pandas.io.excel._base.ExcelFile object at 0x7f8c2fc58bd0>
country = None, region = None, name = 'THA_databook'

    def __init__(self, databook: pandas.ExcelFile, country=None, region=None, name=None):
        """
        :param databook: Databook that is being used in the model
        :param country: The country of interest for data
        :param region: The region of interest in the country (in geospatial optimization)
        :param name:
        """
    
        self.country = country
        self.region = region
        self.name = name
    
        self.calcscache = CalcCellCache()
    
        # Read them into actual data
        try:
            self.demographic_data = DemographicData(databook, self.calcscache)
        except Exception as E:
            raise Exception("Error in databook: %s" % str(E)) from E
    
        try:
            self.prog_data = ProgramData(databook, self.demographic_data, self.calcscache)
        except Exception as E:
>           raise Exception("Error in program data: %s" % str(E)) from E
E           Exception: Error in program data: La población objetivo es 0 para Suplemento energético-proteico equilibrado
E           
E           La población objetivo es 0 para Transferencias de efectivo
E           
E           La población objetivo es 0 para Suplementos nutricionales a base de lípidos
E           
E           La población objetivo es 0 para Suministro público de alimentos complementarios
E           
E           La población objetivo es 0 para Suplementos nutricionales a base de lípidos en pequeñas cantidades

../nutrition/data.py:1006: Exception

Check failure on line 14 in tests/test_tox_databooks.py

See this annotation in the file changed.

@github-actions github-actions / JUnit Test Report

test_tox_databooks.test_databook[es/LiST countries/LCA_databook.xlsx]

Exception: Error in program data: El costo es 0 o negativo para Tratamiento de la MAS
Raw output
self = <nutrition.data.Dataset at 0x7ff003805990>
[<class 'nutrition.data.Dataset'>]
————————————————————————————————————————...  name: 'LCA_databook'
          region: None
————————————————————————————————————————————————————————————————————————

databook = <pandas.io.excel._base.ExcelFile object at 0x7ff003807150>
country = None, region = None, name = 'LCA_databook'

    def __init__(self, databook: pandas.ExcelFile, country=None, region=None, name=None):
        """
        :param databook: Databook that is being used in the model
        :param country: The country of interest for data
        :param region: The region of interest in the country (in geospatial optimization)
        :param name:
        """
    
        self.country = country
        self.region = region
        self.name = name
    
        self.calcscache = CalcCellCache()
    
        # Read them into actual data
        try:
            self.demographic_data = DemographicData(databook, self.calcscache)
        except Exception as E:
            raise Exception("Error in databook: %s" % str(E)) from E
    
        try:
>           self.prog_data = ProgramData(databook, self.demographic_data, self.calcscache)

../nutrition/data.py:1004: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../nutrition/data.py:683: in __init__
    self.validate()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <nutrition.data.ProgramData at 0x7ff003e2b6d0>
[<class 'nutrition.data.ProgramData'>]
————————————————————————————————...450>
                 [<class 'nutritio [...]
————————————————————————————————————————————————————————————————————————


    def validate(self):
        """ Validate program data """
        invalid = []
        for progname in self.base_prog_set:
            cov = self.base_cov[progname]
            if cov < 0 or cov > 1:
                errormsg = _("Baseline coverage is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            sat = self.sat[progname]
            if sat < 0 or sat > 1:
                errormsg = _("Saturation is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            max_inc = self.max_inc[progname]
            if max_inc < 0 or max_inc > 1:
                errormsg = _("Maximum increase is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            max_dec = self.max_dec[progname]
            if max_dec < 0 or max_dec > 1:
                errormsg = _("Maximum decrease is outside the interval (0, 100) for %s") % progname
    
                invalid.append(errormsg)
            cost = self.costs[progname]
            if cost <= 0:
                errormsg = _("Cost is 0 or negative for %s") % progname
                invalid.append(errormsg)
            if progname not in self.prog_target.keys():
                errormsg = _("Target population not defined for %s") % progname
                invalid.append(errormsg)
            elif sum(self.prog_target[progname].values()) == 0:
                errormsg = _("Target population is 0 for %s") % progname
                invalid.append(errormsg)
        if invalid:
            errors = "\n\n".join(invalid)
>           raise Exception(errors)
E           Exception: El costo es 0 o negativo para Tratamiento de la MAS

../nutrition/data.py:727: Exception

The above exception was the direct cause of the following exception:

path = PosixPath('/home/runner/work/Nutrition/Nutrition/inputs/es/LiST countries/LCA_databook.xlsx')

    @pytest.mark.parametrize('path', excel_files, ids=lambda x: str(x.relative_to(inputdir)))
    def test_databook(path):
        P = nu.Project("test")
>       P.load_data(inputspath=path)

test_tox_databooks.py:14: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../nutrition/project.py:175: in load_data
    dataset = Dataset(databook=databook, country=country, region=region, name=name)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <nutrition.data.Dataset at 0x7ff003805990>
[<class 'nutrition.data.Dataset'>]
————————————————————————————————————————...  name: 'LCA_databook'
          region: None
————————————————————————————————————————————————————————————————————————

databook = <pandas.io.excel._base.ExcelFile object at 0x7ff003807150>
country = None, region = None, name = 'LCA_databook'

    def __init__(self, databook: pandas.ExcelFile, country=None, region=None, name=None):
        """
        :param databook: Databook that is being used in the model
        :param country: The country of interest for data
        :param region: The region of interest in the country (in geospatial optimization)
        :param name:
        """
    
        self.country = country
        self.region = region
        self.name = name
    
        self.calcscache = CalcCellCache()
    
        # Read them into actual data
        try:
            self.demographic_data = DemographicData(databook, self.calcscache)
        except Exception as E:
            raise Exception("Error in databook: %s" % str(E)) from E
    
        try:
            self.prog_data = ProgramData(databook, self.demographic_data, self.calcscache)
        except Exception as E:
>           raise Exception("Error in program data: %s" % str(E)) from E
E           Exception: Error in program data: El costo es 0 o negativo para Tratamiento de la MAS

../nutrition/data.py:1006: Exception

Check failure on line 14 in tests/test_tox_databooks.py

See this annotation in the file changed.

@github-actions github-actions / JUnit Test Report

test_tox_databooks.test_databook[es/LiST countries/AZE_databook.xlsx]

Exception: Error in program data: La población objetivo es 0 para Suplemento energético-proteico equilibrado

La población objetivo es 0 para Transferencias de efectivo

La población objetivo es 0 para Suplementos nutricionales a base de lípidos

La población objetivo es 0 para Suministro público de alimentos complementarios

La población objetivo es 0 para Suplementos nutricionales a base de lípidos en pequeñas cantidades
Raw output
self = <nutrition.data.Dataset at 0x7f8c3040c110>
[<class 'nutrition.data.Dataset'>]
————————————————————————————————————————...  name: 'AZE_databook'
          region: None
————————————————————————————————————————————————————————————————————————

databook = <pandas.io.excel._base.ExcelFile object at 0x7f8c3040f010>
country = None, region = None, name = 'AZE_databook'

    def __init__(self, databook: pandas.ExcelFile, country=None, region=None, name=None):
        """
        :param databook: Databook that is being used in the model
        :param country: The country of interest for data
        :param region: The region of interest in the country (in geospatial optimization)
        :param name:
        """
    
        self.country = country
        self.region = region
        self.name = name
    
        self.calcscache = CalcCellCache()
    
        # Read them into actual data
        try:
            self.demographic_data = DemographicData(databook, self.calcscache)
        except Exception as E:
            raise Exception("Error in databook: %s" % str(E)) from E
    
        try:
>           self.prog_data = ProgramData(databook, self.demographic_data, self.calcscache)

../nutrition/data.py:1004: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../nutrition/data.py:683: in __init__
    self.validate()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <nutrition.data.ProgramData at 0x7f8c30308a90>
[<class 'nutrition.data.ProgramData'>]
————————————————————————————————...f90>
                 [<class 'nutritio [...]
————————————————————————————————————————————————————————————————————————


    def validate(self):
        """ Validate program data """
        invalid = []
        for progname in self.base_prog_set:
            cov = self.base_cov[progname]
            if cov < 0 or cov > 1:
                errormsg = _("Baseline coverage is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            sat = self.sat[progname]
            if sat < 0 or sat > 1:
                errormsg = _("Saturation is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            max_inc = self.max_inc[progname]
            if max_inc < 0 or max_inc > 1:
                errormsg = _("Maximum increase is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            max_dec = self.max_dec[progname]
            if max_dec < 0 or max_dec > 1:
                errormsg = _("Maximum decrease is outside the interval (0, 100) for %s") % progname
    
                invalid.append(errormsg)
            cost = self.costs[progname]
            if cost <= 0:
                errormsg = _("Cost is 0 or negative for %s") % progname
                invalid.append(errormsg)
            if progname not in self.prog_target.keys():
                errormsg = _("Target population not defined for %s") % progname
                invalid.append(errormsg)
            elif sum(self.prog_target[progname].values()) == 0:
                errormsg = _("Target population is 0 for %s") % progname
                invalid.append(errormsg)
        if invalid:
            errors = "\n\n".join(invalid)
>           raise Exception(errors)
E           Exception: La población objetivo es 0 para Suplemento energético-proteico equilibrado
E           
E           La población objetivo es 0 para Transferencias de efectivo
E           
E           La población objetivo es 0 para Suplementos nutricionales a base de lípidos
E           
E           La población objetivo es 0 para Suministro público de alimentos complementarios
E           
E           La población objetivo es 0 para Suplementos nutricionales a base de lípidos en pequeñas cantidades

../nutrition/data.py:727: Exception

The above exception was the direct cause of the following exception:

path = PosixPath('/home/runner/work/Nutrition/Nutrition/inputs/es/LiST countries/AZE_databook.xlsx')

    @pytest.mark.parametrize('path', excel_files, ids=lambda x: str(x.relative_to(inputdir)))
    def test_databook(path):
        P = nu.Project("test")
>       P.load_data(inputspath=path)

test_tox_databooks.py:14: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../nutrition/project.py:175: in load_data
    dataset = Dataset(databook=databook, country=country, region=region, name=name)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <nutrition.data.Dataset at 0x7f8c3040c110>
[<class 'nutrition.data.Dataset'>]
————————————————————————————————————————...  name: 'AZE_databook'
          region: None
————————————————————————————————————————————————————————————————————————

databook = <pandas.io.excel._base.ExcelFile object at 0x7f8c3040f010>
country = None, region = None, name = 'AZE_databook'

    def __init__(self, databook: pandas.ExcelFile, country=None, region=None, name=None):
        """
        :param databook: Databook that is being used in the model
        :param country: The country of interest for data
        :param region: The region of interest in the country (in geospatial optimization)
        :param name:
        """
    
        self.country = country
        self.region = region
        self.name = name
    
        self.calcscache = CalcCellCache()
    
        # Read them into actual data
        try:
            self.demographic_data = DemographicData(databook, self.calcscache)
        except Exception as E:
            raise Exception("Error in databook: %s" % str(E)) from E
    
        try:
            self.prog_data = ProgramData(databook, self.demographic_data, self.calcscache)
        except Exception as E:
>           raise Exception("Error in program data: %s" % str(E)) from E
E           Exception: Error in program data: La población objetivo es 0 para Suplemento energético-proteico equilibrado
E           
E           La población objetivo es 0 para Transferencias de efectivo
E           
E           La población objetivo es 0 para Suplementos nutricionales a base de lípidos
E           
E           La población objetivo es 0 para Suministro público de alimentos complementarios
E           
E           La población objetivo es 0 para Suplementos nutricionales a base de lípidos en pequeñas cantidades

../nutrition/data.py:1006: Exception

Check failure on line 14 in tests/test_tox_databooks.py

See this annotation in the file changed.

@github-actions github-actions / JUnit Test Report

test_tox_databooks.test_databook[es/LiST countries/MYS_databook.xlsx]

Exception: Error in program data: La población objetivo es 0 para Suplemento energético-proteico equilibrado

La población objetivo es 0 para Transferencias de efectivo

La población objetivo es 0 para Suplementos nutricionales a base de lípidos

La población objetivo es 0 para Suministro público de alimentos complementarios

La población objetivo es 0 para Suplementos nutricionales a base de lípidos en pequeñas cantidades
Raw output
self = <nutrition.data.Dataset at 0x7f8c30056dd0>
[<class 'nutrition.data.Dataset'>]
————————————————————————————————————————...  name: 'MYS_databook'
          region: None
————————————————————————————————————————————————————————————————————————

databook = <pandas.io.excel._base.ExcelFile object at 0x7f8c30056a50>
country = None, region = None, name = 'MYS_databook'

    def __init__(self, databook: pandas.ExcelFile, country=None, region=None, name=None):
        """
        :param databook: Databook that is being used in the model
        :param country: The country of interest for data
        :param region: The region of interest in the country (in geospatial optimization)
        :param name:
        """
    
        self.country = country
        self.region = region
        self.name = name
    
        self.calcscache = CalcCellCache()
    
        # Read them into actual data
        try:
            self.demographic_data = DemographicData(databook, self.calcscache)
        except Exception as E:
            raise Exception("Error in databook: %s" % str(E)) from E
    
        try:
>           self.prog_data = ProgramData(databook, self.demographic_data, self.calcscache)

../nutrition/data.py:1004: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../nutrition/data.py:683: in __init__
    self.validate()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <nutrition.data.ProgramData at 0x7f8c309036d0>
[<class 'nutrition.data.ProgramData'>]
————————————————————————————————...d10>
                 [<class 'nutritio [...]
————————————————————————————————————————————————————————————————————————


    def validate(self):
        """ Validate program data """
        invalid = []
        for progname in self.base_prog_set:
            cov = self.base_cov[progname]
            if cov < 0 or cov > 1:
                errormsg = _("Baseline coverage is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            sat = self.sat[progname]
            if sat < 0 or sat > 1:
                errormsg = _("Saturation is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            max_inc = self.max_inc[progname]
            if max_inc < 0 or max_inc > 1:
                errormsg = _("Maximum increase is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            max_dec = self.max_dec[progname]
            if max_dec < 0 or max_dec > 1:
                errormsg = _("Maximum decrease is outside the interval (0, 100) for %s") % progname
    
                invalid.append(errormsg)
            cost = self.costs[progname]
            if cost <= 0:
                errormsg = _("Cost is 0 or negative for %s") % progname
                invalid.append(errormsg)
            if progname not in self.prog_target.keys():
                errormsg = _("Target population not defined for %s") % progname
                invalid.append(errormsg)
            elif sum(self.prog_target[progname].values()) == 0:
                errormsg = _("Target population is 0 for %s") % progname
                invalid.append(errormsg)
        if invalid:
            errors = "\n\n".join(invalid)
>           raise Exception(errors)
E           Exception: La población objetivo es 0 para Suplemento energético-proteico equilibrado
E           
E           La población objetivo es 0 para Transferencias de efectivo
E           
E           La población objetivo es 0 para Suplementos nutricionales a base de lípidos
E           
E           La población objetivo es 0 para Suministro público de alimentos complementarios
E           
E           La población objetivo es 0 para Suplementos nutricionales a base de lípidos en pequeñas cantidades

../nutrition/data.py:727: Exception

The above exception was the direct cause of the following exception:

path = PosixPath('/home/runner/work/Nutrition/Nutrition/inputs/es/LiST countries/MYS_databook.xlsx')

    @pytest.mark.parametrize('path', excel_files, ids=lambda x: str(x.relative_to(inputdir)))
    def test_databook(path):
        P = nu.Project("test")
>       P.load_data(inputspath=path)

test_tox_databooks.py:14: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../nutrition/project.py:175: in load_data
    dataset = Dataset(databook=databook, country=country, region=region, name=name)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <nutrition.data.Dataset at 0x7f8c30056dd0>
[<class 'nutrition.data.Dataset'>]
————————————————————————————————————————...  name: 'MYS_databook'
          region: None
————————————————————————————————————————————————————————————————————————

databook = <pandas.io.excel._base.ExcelFile object at 0x7f8c30056a50>
country = None, region = None, name = 'MYS_databook'

    def __init__(self, databook: pandas.ExcelFile, country=None, region=None, name=None):
        """
        :param databook: Databook that is being used in the model
        :param country: The country of interest for data
        :param region: The region of interest in the country (in geospatial optimization)
        :param name:
        """
    
        self.country = country
        self.region = region
        self.name = name
    
        self.calcscache = CalcCellCache()
    
        # Read them into actual data
        try:
            self.demographic_data = DemographicData(databook, self.calcscache)
        except Exception as E:
            raise Exception("Error in databook: %s" % str(E)) from E
    
        try:
            self.prog_data = ProgramData(databook, self.demographic_data, self.calcscache)
        except Exception as E:
>           raise Exception("Error in program data: %s" % str(E)) from E
E           Exception: Error in program data: La población objetivo es 0 para Suplemento energético-proteico equilibrado
E           
E           La población objetivo es 0 para Transferencias de efectivo
E           
E           La población objetivo es 0 para Suplementos nutricionales a base de lípidos
E           
E           La población objetivo es 0 para Suministro público de alimentos complementarios
E           
E           La población objetivo es 0 para Suplementos nutricionales a base de lípidos en pequeñas cantidades

../nutrition/data.py:1006: Exception

Check failure on line 14 in tests/test_tox_databooks.py

See this annotation in the file changed.

@github-actions github-actions / JUnit Test Report

test_tox_databooks.test_databook[es/LiST countries/TUR_databook.xlsx]

ZeroDivisionError: float division by zero
Raw output
path = PosixPath('/home/runner/work/Nutrition/Nutrition/inputs/es/LiST countries/TUR_databook.xlsx')

    @pytest.mark.parametrize('path', excel_files, ids=lambda x: str(x.relative_to(inputdir)))
    def test_databook(path):
        P = nu.Project("test")
>       P.load_data(inputspath=path)

test_tox_databooks.py:14: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../nutrition/project.py:184: in load_data
    self.add_model(name, growth=growth)  # add model associated with the dataset or datasets
../nutrition/utils.py:85: in wrapper
    return f(*args, **kwargs)
../nutrition/project.py:372: in add_model
    model = Model(dataset, t, growth=growth)
../nutrition/model.py:25: in __init__
    self._set_progs(self.prog_info.base_progset())
../nutrition/model.py:71: in _set_progs
    self.prog_info.set_init_covs(self.pops)
../nutrition/programs.py:661: in set_init_covs
    prog.set_pop_sizes(pops)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <nutrition.programs.Program at 0x7f8c300756d0>
[<class 'nutrition.programs.Program'>, <class 'sciris.sc_printing.prett... years: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
————————————————————————————————————————————————————————————————————————

pops = [<nutrition.populations.Children at 0x7f8c2fee6010>
[<class 'nutrition.populations.Children'>, <class 'nutrition.popul...d0>
              [<class 'nutrition.s [...]
————————————————————————————————————————————————————————————————————————
]

    def set_pop_sizes(self, pops):
        self._set_restrpop(pops)
        self._set_unrestrpop(pops)
        # this accounts for different fractions within age bands
>       self.sat_unrestr = self.restr_popsize / self.unrestr_popsize
E       ZeroDivisionError: float division by zero

../nutrition/programs.py:112: ZeroDivisionError

Check failure on line 14 in tests/test_tox_databooks.py

See this annotation in the file changed.

@github-actions github-actions / JUnit Test Report

test_tox_databooks.test_databook[es/LiST countries/JOR_databook.xlsx]

ZeroDivisionError: float division by zero
Raw output
path = PosixPath('/home/runner/work/Nutrition/Nutrition/inputs/es/LiST countries/JOR_databook.xlsx')

    @pytest.mark.parametrize('path', excel_files, ids=lambda x: str(x.relative_to(inputdir)))
    def test_databook(path):
        P = nu.Project("test")
>       P.load_data(inputspath=path)

test_tox_databooks.py:14: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../nutrition/project.py:184: in load_data
    self.add_model(name, growth=growth)  # add model associated with the dataset or datasets
../nutrition/utils.py:85: in wrapper
    return f(*args, **kwargs)
../nutrition/project.py:372: in add_model
    model = Model(dataset, t, growth=growth)
../nutrition/model.py:25: in __init__
    self._set_progs(self.prog_info.base_progset())
../nutrition/model.py:71: in _set_progs
    self.prog_info.set_init_covs(self.pops)
../nutrition/programs.py:661: in set_init_covs
    prog.set_pop_sizes(pops)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <nutrition.programs.Program at 0x7f8c3024be10>
[<class 'nutrition.programs.Program'>, <class 'sciris.sc_printing.prett... years: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
————————————————————————————————————————————————————————————————————————

pops = [<nutrition.populations.Children at 0x7f8c307b6010>
[<class 'nutrition.populations.Children'>, <class 'nutrition.popul...10>
              [<class 'nutrition.s [...]
————————————————————————————————————————————————————————————————————————
]

    def set_pop_sizes(self, pops):
        self._set_restrpop(pops)
        self._set_unrestrpop(pops)
        # this accounts for different fractions within age bands
>       self.sat_unrestr = self.restr_popsize / self.unrestr_popsize
E       ZeroDivisionError: float division by zero

../nutrition/programs.py:112: ZeroDivisionError

Check failure on line 14 in tests/test_tox_databooks.py

See this annotation in the file changed.

@github-actions github-actions / JUnit Test Report

test_tox_databooks.test_databook[fr/LiST countries/LCA_databook.xlsx]

Exception: Error in program data: Le coût est égal à 0 ou négatif pour Traitement de la MAS
Raw output
self = <nutrition.data.Dataset at 0x7ff003618150>
[<class 'nutrition.data.Dataset'>]
————————————————————————————————————————...  name: 'LCA_databook'
          region: None
————————————————————————————————————————————————————————————————————————

databook = <pandas.io.excel._base.ExcelFile object at 0x7ff0040935d0>
country = None, region = None, name = 'LCA_databook'

    def __init__(self, databook: pandas.ExcelFile, country=None, region=None, name=None):
        """
        :param databook: Databook that is being used in the model
        :param country: The country of interest for data
        :param region: The region of interest in the country (in geospatial optimization)
        :param name:
        """
    
        self.country = country
        self.region = region
        self.name = name
    
        self.calcscache = CalcCellCache()
    
        # Read them into actual data
        try:
            self.demographic_data = DemographicData(databook, self.calcscache)
        except Exception as E:
            raise Exception("Error in databook: %s" % str(E)) from E
    
        try:
>           self.prog_data = ProgramData(databook, self.demographic_data, self.calcscache)

../nutrition/data.py:1004: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../nutrition/data.py:683: in __init__
    self.validate()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <nutrition.data.ProgramData at 0x7ff0037a1810>
[<class 'nutrition.data.ProgramData'>]
————————————————————————————————...5d0>
                 [<class 'nutritio [...]
————————————————————————————————————————————————————————————————————————


    def validate(self):
        """ Validate program data """
        invalid = []
        for progname in self.base_prog_set:
            cov = self.base_cov[progname]
            if cov < 0 or cov > 1:
                errormsg = _("Baseline coverage is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            sat = self.sat[progname]
            if sat < 0 or sat > 1:
                errormsg = _("Saturation is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            max_inc = self.max_inc[progname]
            if max_inc < 0 or max_inc > 1:
                errormsg = _("Maximum increase is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            max_dec = self.max_dec[progname]
            if max_dec < 0 or max_dec > 1:
                errormsg = _("Maximum decrease is outside the interval (0, 100) for %s") % progname
    
                invalid.append(errormsg)
            cost = self.costs[progname]
            if cost <= 0:
                errormsg = _("Cost is 0 or negative for %s") % progname
                invalid.append(errormsg)
            if progname not in self.prog_target.keys():
                errormsg = _("Target population not defined for %s") % progname
                invalid.append(errormsg)
            elif sum(self.prog_target[progname].values()) == 0:
                errormsg = _("Target population is 0 for %s") % progname
                invalid.append(errormsg)
        if invalid:
            errors = "\n\n".join(invalid)
>           raise Exception(errors)
E           Exception: Le coût est égal à 0 ou négatif pour Traitement de la MAS

../nutrition/data.py:727: Exception

The above exception was the direct cause of the following exception:

path = PosixPath('/home/runner/work/Nutrition/Nutrition/inputs/fr/LiST countries/LCA_databook.xlsx')

    @pytest.mark.parametrize('path', excel_files, ids=lambda x: str(x.relative_to(inputdir)))
    def test_databook(path):
        P = nu.Project("test")
>       P.load_data(inputspath=path)

test_tox_databooks.py:14: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../nutrition/project.py:175: in load_data
    dataset = Dataset(databook=databook, country=country, region=region, name=name)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <nutrition.data.Dataset at 0x7ff003618150>
[<class 'nutrition.data.Dataset'>]
————————————————————————————————————————...  name: 'LCA_databook'
          region: None
————————————————————————————————————————————————————————————————————————

databook = <pandas.io.excel._base.ExcelFile object at 0x7ff0040935d0>
country = None, region = None, name = 'LCA_databook'

    def __init__(self, databook: pandas.ExcelFile, country=None, region=None, name=None):
        """
        :param databook: Databook that is being used in the model
        :param country: The country of interest for data
        :param region: The region of interest in the country (in geospatial optimization)
        :param name:
        """
    
        self.country = country
        self.region = region
        self.name = name
    
        self.calcscache = CalcCellCache()
    
        # Read them into actual data
        try:
            self.demographic_data = DemographicData(databook, self.calcscache)
        except Exception as E:
            raise Exception("Error in databook: %s" % str(E)) from E
    
        try:
            self.prog_data = ProgramData(databook, self.demographic_data, self.calcscache)
        except Exception as E:
>           raise Exception("Error in program data: %s" % str(E)) from E
E           Exception: Error in program data: Le coût est égal à 0 ou négatif pour Traitement de la MAS

../nutrition/data.py:1006: Exception

Check failure on line 14 in tests/test_tox_databooks.py

See this annotation in the file changed.

@github-actions github-actions / JUnit Test Report

test_tox_databooks.test_databook[es/LiST countries/BIH_databook.xlsx]

ZeroDivisionError: float division by zero
Raw output
path = PosixPath('/home/runner/work/Nutrition/Nutrition/inputs/es/LiST countries/BIH_databook.xlsx')

    @pytest.mark.parametrize('path', excel_files, ids=lambda x: str(x.relative_to(inputdir)))
    def test_databook(path):
        P = nu.Project("test")
>       P.load_data(inputspath=path)

test_tox_databooks.py:14: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../nutrition/project.py:184: in load_data
    self.add_model(name, growth=growth)  # add model associated with the dataset or datasets
../nutrition/utils.py:85: in wrapper
    return f(*args, **kwargs)
../nutrition/project.py:372: in add_model
    model = Model(dataset, t, growth=growth)
../nutrition/model.py:25: in __init__
    self._set_progs(self.prog_info.base_progset())
../nutrition/model.py:71: in _set_progs
    self.prog_info.set_init_covs(self.pops)
../nutrition/programs.py:661: in set_init_covs
    prog.set_pop_sizes(pops)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <nutrition.programs.Program at 0x7f8c2f7c5050>
[<class 'nutrition.programs.Program'>, <class 'sciris.sc_printing.prett... years: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
————————————————————————————————————————————————————————————————————————

pops = [<nutrition.populations.Children at 0x7f8c2fb586d0>
[<class 'nutrition.populations.Children'>, <class 'nutrition.popul...50>
              [<class 'nutrition.s [...]
————————————————————————————————————————————————————————————————————————
]

    def set_pop_sizes(self, pops):
        self._set_restrpop(pops)
        self._set_unrestrpop(pops)
        # this accounts for different fractions within age bands
>       self.sat_unrestr = self.restr_popsize / self.unrestr_popsize
E       ZeroDivisionError: float division by zero

../nutrition/programs.py:112: ZeroDivisionError

Check failure on line 14 in tests/test_tox_databooks.py

See this annotation in the file changed.

@github-actions github-actions / JUnit Test Report

test_tox_databooks.test_databook[es/LiST countries/TON_databook.xlsx]

Exception: Error in program data: La población objetivo es 0 para Sales de rehidratación oral

La población objetivo es 0 para Zinc para el tratamiento + SRO
Raw output
self = <nutrition.data.Dataset at 0x7f8c30052710>
[<class 'nutrition.data.Dataset'>]
————————————————————————————————————————...  name: 'TON_databook'
          region: None
————————————————————————————————————————————————————————————————————————

databook = <pandas.io.excel._base.ExcelFile object at 0x7f8c302d9a50>
country = None, region = None, name = 'TON_databook'

    def __init__(self, databook: pandas.ExcelFile, country=None, region=None, name=None):
        """
        :param databook: Databook that is being used in the model
        :param country: The country of interest for data
        :param region: The region of interest in the country (in geospatial optimization)
        :param name:
        """
    
        self.country = country
        self.region = region
        self.name = name
    
        self.calcscache = CalcCellCache()
    
        # Read them into actual data
        try:
            self.demographic_data = DemographicData(databook, self.calcscache)
        except Exception as E:
            raise Exception("Error in databook: %s" % str(E)) from E
    
        try:
>           self.prog_data = ProgramData(databook, self.demographic_data, self.calcscache)

../nutrition/data.py:1004: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../nutrition/data.py:683: in __init__
    self.validate()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <nutrition.data.ProgramData at 0x7f8c2fcf1b10>
[<class 'nutrition.data.ProgramData'>]
————————————————————————————————...0d0>
                 [<class 'nutritio [...]
————————————————————————————————————————————————————————————————————————


    def validate(self):
        """ Validate program data """
        invalid = []
        for progname in self.base_prog_set:
            cov = self.base_cov[progname]
            if cov < 0 or cov > 1:
                errormsg = _("Baseline coverage is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            sat = self.sat[progname]
            if sat < 0 or sat > 1:
                errormsg = _("Saturation is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            max_inc = self.max_inc[progname]
            if max_inc < 0 or max_inc > 1:
                errormsg = _("Maximum increase is outside the interval (0, 100) for %s") % progname
                invalid.append(errormsg)
            max_dec = self.max_dec[progname]
            if max_dec < 0 or max_dec > 1:
                errormsg = _("Maximum decrease is outside the interval (0, 100) for %s") % progname
    
                invalid.append(errormsg)
            cost = self.costs[progname]
            if cost <= 0:
                errormsg = _("Cost is 0 or negative for %s") % progname
                invalid.append(errormsg)
            if progname not in self.prog_target.keys():
                errormsg = _("Target population not defined for %s") % progname
                invalid.append(errormsg)
            elif sum(self.prog_target[progname].values()) == 0:
                errormsg = _("Target population is 0 for %s") % progname
                invalid.append(errormsg)
        if invalid:
            errors = "\n\n".join(invalid)
>           raise Exception(errors)
E           Exception: La población objetivo es 0 para Sales de rehidratación oral
E           
E           La población objetivo es 0 para Zinc para el tratamiento + SRO

../nutrition/data.py:727: Exception

The above exception was the direct cause of the following exception:

path = PosixPath('/home/runner/work/Nutrition/Nutrition/inputs/es/LiST countries/TON_databook.xlsx')

    @pytest.mark.parametrize('path', excel_files, ids=lambda x: str(x.relative_to(inputdir)))
    def test_databook(path):
        P = nu.Project("test")
>       P.load_data(inputspath=path)

test_tox_databooks.py:14: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../nutrition/project.py:175: in load_data
    dataset = Dataset(databook=databook, country=country, region=region, name=name)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <nutrition.data.Dataset at 0x7f8c30052710>
[<class 'nutrition.data.Dataset'>]
————————————————————————————————————————...  name: 'TON_databook'
          region: None
————————————————————————————————————————————————————————————————————————

databook = <pandas.io.excel._base.ExcelFile object at 0x7f8c302d9a50>
country = None, region = None, name = 'TON_databook'

    def __init__(self, databook: pandas.ExcelFile, country=None, region=None, name=None):
        """
        :param databook: Databook that is being used in the model
        :param country: The country of interest for data
        :param region: The region of interest in the country (in geospatial optimization)
        :param name:
        """
    
        self.country = country
        self.region = region
        self.name = name
    
        self.calcscache = CalcCellCache()
    
        # Read them into actual data
        try:
            self.demographic_data = DemographicData(databook, self.calcscache)
        except Exception as E:
            raise Exception("Error in databook: %s" % str(E)) from E
    
        try:
            self.prog_data = ProgramData(databook, self.demographic_data, self.calcscache)
        except Exception as E:
>           raise Exception("Error in program data: %s" % str(E)) from E
E           Exception: Error in program data: La población objetivo es 0 para Sales de rehidratación oral
E           
E           La población objetivo es 0 para Zinc para el tratamiento + SRO

../nutrition/data.py:1006: Exception