From ce5aecbb87ef570d16b675a349e248d48edb8fca Mon Sep 17 00:00:00 2001 From: Sarey Hamarneh Date: Fri, 21 Apr 2017 00:10:21 -0400 Subject: [PATCH 1/4] Change sample data location for liability --- bpfin/tests/test_financials/test_liability.py | 28 +++++++++++++------ .../testdata/{__inti__.py => __init__.py} | 0 bpfin/tests/testdata/sample_data.py | 7 ++++- 3 files changed, 26 insertions(+), 9 deletions(-) rename bpfin/tests/testdata/{__inti__.py => __init__.py} (100%) diff --git a/bpfin/tests/test_financials/test_liability.py b/bpfin/tests/test_financials/test_liability.py index ea26cf9..5e37ac0 100644 --- a/bpfin/tests/test_financials/test_liability.py +++ b/bpfin/tests/test_financials/test_liability.py @@ -1,15 +1,21 @@ from bpfin.financials.liability import liability_calendar, create_liability_dict, final_liability_dict -from datetime import date, datetime +from bpfin.tests.testdata import sample_data as db def test_final_liability_dict(): - input_start_date = date(2012, 10, 1) - input_dict = { - 'debt1': (150, 'NYSERDA', 10, date(2012, 12, 31)), - 'debt2': (100, 'NYCEEC', 20, date(2012, 8, 31)) - } - input_duration = 10 + input_start_date = db.analysis_date['proforma_start'] + input_dict = db.liability_dictionary + input_duration = db.analysis_date['proforma_duration'] output = { + (2012, 1): 0, + (2012, 2): 0, + (2012, 3): 0, + (2012, 4): 0, + (2012, 5): 0, + (2012, 6): 0, + (2012, 7): 0, + (2012, 8): 100, + (2012, 9): 100, (2012, 10): 100, (2012, 11): 100, (2012, 12): 250, @@ -19,7 +25,13 @@ def test_final_liability_dict(): (2013, 4): 250, (2013, 5): 250, (2013, 6): 250, - (2013, 7): 250 + (2013, 7): 250, + (2013, 8): 250, + (2013, 9): 250, + (2013, 10): 100, + (2013, 11): 100, + (2013, 12): 100, + (2014, 1): 100 } result = final_liability_dict(input_start_date, input_dict, input_duration) diff --git a/bpfin/tests/testdata/__inti__.py b/bpfin/tests/testdata/__init__.py similarity index 100% rename from bpfin/tests/testdata/__inti__.py rename to bpfin/tests/testdata/__init__.py diff --git a/bpfin/tests/testdata/sample_data.py b/bpfin/tests/testdata/sample_data.py index 92f6081..57f0ff2 100644 --- a/bpfin/tests/testdata/sample_data.py +++ b/bpfin/tests/testdata/sample_data.py @@ -1,4 +1,4 @@ -import datetime +from datetime import datetime, date import pprint from bpfin.utilbills import bill_lib as bl @@ -60,6 +60,11 @@ analysis_date = { 'proforma_start': datetime.date(2012, 1, 15), 'proforma_duration': 25} +liability_dictionary = { + 'debt1': (150, 'NYSERDA', 10, datetime.date(2012, 12, 31)), + 'debt2': (100, 'NYCEEC', 20, datetime.date(2012, 8, 31)) + } + proforma_date_from = [ datetime.date(2012, 1, 1), datetime.date(2012, 2, 1), -- GitLab From b8ff23ee1958e54cc0b73836fb307b62ece335ef Mon Sep 17 00:00:00 2001 From: Sarey Hamarneh Date: Fri, 21 Apr 2017 11:56:39 -0400 Subject: [PATCH 2/4] Fix liability code, still working --- bpfin/financials/liability.py | 17 +++--- bpfin/tests/test_financials/test_liability.py | 53 ++++++++++--------- bpfin/tests/testdata/sample_data.py | 2 +- 3 files changed, 39 insertions(+), 33 deletions(-) diff --git a/bpfin/financials/liability.py b/bpfin/financials/liability.py index c35ab6b..9f7820c 100644 --- a/bpfin/financials/liability.py +++ b/bpfin/financials/liability.py @@ -85,13 +85,18 @@ def final_liability_dict(start_date, liability_dictionary, months): for debt_date_dict in debt_list: for debt_date in debt_date_dict: if date.year == debt_date.year and date.month == debt_date.month: - if (date.year, date.month) not in final_dict: - final_dict[(date.year, date.month)] = [] - final_dict[(date.year, - date.month)].append(debt_date_dict[debt_date]) + if (date.year, date.month, calendar.monthrange( + date.year, date.month)[1]) not in final_dict: + final_dict[(date.year, date.month, calendar.monthrange( + date.year, date.month)[1])] = [] + final_dict[(date.year, date.month, calendar.monthrange( + date.year, + date.month)[1])].append(debt_date_dict[debt_date]) for date in pro_forma_calendar: - if (date.year, date.month) not in final_dict: - final_dict[(date.year, date.month)] = [0] + if (date.year, date.month, calendar.monthrange( + date.year, date.month)[1]) not in final_dict: + final_dict[(date.year, date.month, calendar.monthrange( + date.year, date.month)[1])] = [0] for key, value in final_dict.items(): final_dict[key] = sum(value) diff --git a/bpfin/tests/test_financials/test_liability.py b/bpfin/tests/test_financials/test_liability.py index 5e37ac0..b1f00e7 100644 --- a/bpfin/tests/test_financials/test_liability.py +++ b/bpfin/tests/test_financials/test_liability.py @@ -1,5 +1,6 @@ -from bpfin.financials.liability import liability_calendar, create_liability_dict, final_liability_dict +from bpfin.financials.liability import final_liability_dict from bpfin.tests.testdata import sample_data as db +from datetime import datetime, datetime def test_final_liability_dict(): @@ -7,31 +8,31 @@ def test_final_liability_dict(): input_dict = db.liability_dictionary input_duration = db.analysis_date['proforma_duration'] output = { - (2012, 1): 0, - (2012, 2): 0, - (2012, 3): 0, - (2012, 4): 0, - (2012, 5): 0, - (2012, 6): 0, - (2012, 7): 0, - (2012, 8): 100, - (2012, 9): 100, - (2012, 10): 100, - (2012, 11): 100, - (2012, 12): 250, - (2013, 1): 250, - (2013, 2): 250, - (2013, 3): 250, - (2013, 4): 250, - (2013, 5): 250, - (2013, 6): 250, - (2013, 7): 250, - (2013, 8): 250, - (2013, 9): 250, - (2013, 10): 100, - (2013, 11): 100, - (2013, 12): 100, - (2014, 1): 100 + (2012, 1, 31): 0, + (2012, 2, 29): 0, + (2012, 3, 31): 0, + (2012, 4, 30): 0, + (2012, 5, 31): 0, + (2012, 6, 30): 0, + (2012, 7, 31): 0, + (2012, 8, 31): 0, + (2012, 9, 30): 0, + (2012, 10, 31): 0, + (2012, 11, 30): 0, + (2012, 12, 31): 0, + (2013, 1, 31): 0, + (2013, 2, 28): 0, + (2013, 3, 31): 0, + (2013, 4, 30): 0, + (2013, 5, 31): 0, + (2013, 6, 30): 0, + (2013, 7, 31): 0, + (2013, 8, 31): 0, + (2013, 9, 30): 0, + (2013, 10, 31): 0, + (2013, 11, 30): 0, + (2013, 12, 31): 0, + (2014, 1, 31): 0 } result = final_liability_dict(input_start_date, input_dict, input_duration) diff --git a/bpfin/tests/testdata/sample_data.py b/bpfin/tests/testdata/sample_data.py index 57f0ff2..a99a49c 100644 --- a/bpfin/tests/testdata/sample_data.py +++ b/bpfin/tests/testdata/sample_data.py @@ -1,4 +1,4 @@ -from datetime import datetime, date +import datetime import pprint from bpfin.utilbills import bill_lib as bl -- GitLab From e10cbc7e6a4137ac63bc898182cf63eecf8fea94 Mon Sep 17 00:00:00 2001 From: Sarey Hamarneh Date: Fri, 21 Apr 2017 13:42:45 -0400 Subject: [PATCH 3/4] Fix datetime, still working --- bpfin/financials/liability.py | 39 ++++++++------ bpfin/tests/test_financials/test_liability.py | 52 +++++++++---------- bpfin/tests/test_utilbills/test_bill_lib.py | 2 +- bpfin/utilbills/old_calcbill.py | 10 ++-- 4 files changed, 55 insertions(+), 48 deletions(-) diff --git a/bpfin/financials/liability.py b/bpfin/financials/liability.py index 9f7820c..d8737ad 100644 --- a/bpfin/financials/liability.py +++ b/bpfin/financials/liability.py @@ -1,5 +1,5 @@ import calendar -from datetime import datetime, date +from datetime import datetime.date, date def define_date_start(liability_dictionary): @@ -81,24 +81,31 @@ def final_liability_dict(start_date, liability_dictionary, months): final_dict = {} pro_forma_calendar = liability_calendar(start_date, months) debt_list = create_liability_dict(liability_dictionary) - for date in pro_forma_calendar: + for pro_date in pro_forma_calendar: for debt_date_dict in debt_list: for debt_date in debt_date_dict: - if date.year == debt_date.year and date.month == debt_date.month: - if (date.year, date.month, calendar.monthrange( - date.year, date.month)[1]) not in final_dict: - final_dict[(date.year, date.month, calendar.monthrange( - date.year, date.month)[1])] = [] - final_dict[(date.year, date.month, calendar.monthrange( - date.year, - date.month)[1])].append(debt_date_dict[debt_date]) - for date in pro_forma_calendar: - if (date.year, date.month, calendar.monthrange( - date.year, date.month)[1]) not in final_dict: - final_dict[(date.year, date.month, calendar.monthrange( - date.year, date.month)[1])] = [0] + if pro_date.year == debt_date.year and pro_date.month == debt_date.month: + if (pro_date.year, pro_date.month, calendar.monthrange( + pro_date.year, + pro_date.month)[1]) not in final_dict: + final_dict[( + pro_date.year, pro_date.month, calendar.monthrange( + pro_date.year, pro_date.month)[1])] = [] + final_dict[(pro_date.year, + pro_date.month, calendar.monthrange( + pro_date.year, pro_date.month)[1] + )].append(debt_date_dict[debt_date]) + for pro_date in pro_forma_calendar: + if (pro_date.year, pro_date.month, calendar.monthrange( + pro_date.year, pro_date.month)[1]) not in final_dict: + final_dict[(pro_date.year, pro_date.month, calendar.monthrange( + pro_date.year, pro_date.month)[1])] = [0] for key, value in final_dict.items(): final_dict[key] = sum(value) - return final_dict + real_dict = {} + for key, value in final_dict.items(): + real_dict[date(key[0], key[1], key[2])] = value + + return real_dict diff --git a/bpfin/tests/test_financials/test_liability.py b/bpfin/tests/test_financials/test_liability.py index b1f00e7..8886ba9 100644 --- a/bpfin/tests/test_financials/test_liability.py +++ b/bpfin/tests/test_financials/test_liability.py @@ -1,6 +1,6 @@ +from datetime import datetime, date from bpfin.financials.liability import final_liability_dict from bpfin.tests.testdata import sample_data as db -from datetime import datetime, datetime def test_final_liability_dict(): @@ -8,31 +8,31 @@ def test_final_liability_dict(): input_dict = db.liability_dictionary input_duration = db.analysis_date['proforma_duration'] output = { - (2012, 1, 31): 0, - (2012, 2, 29): 0, - (2012, 3, 31): 0, - (2012, 4, 30): 0, - (2012, 5, 31): 0, - (2012, 6, 30): 0, - (2012, 7, 31): 0, - (2012, 8, 31): 0, - (2012, 9, 30): 0, - (2012, 10, 31): 0, - (2012, 11, 30): 0, - (2012, 12, 31): 0, - (2013, 1, 31): 0, - (2013, 2, 28): 0, - (2013, 3, 31): 0, - (2013, 4, 30): 0, - (2013, 5, 31): 0, - (2013, 6, 30): 0, - (2013, 7, 31): 0, - (2013, 8, 31): 0, - (2013, 9, 30): 0, - (2013, 10, 31): 0, - (2013, 11, 30): 0, - (2013, 12, 31): 0, - (2014, 1, 31): 0 + datetime.date(2012, 1, 31): 0, + datetime.date(2012, 2, 29): 0, + datetime.date(2012, 3, 31): 0, + datetime.date(2012, 4, 30): 0, + datetime.date(2012, 5, 31): 0, + datetime.date(2012, 6, 30): 0, + datetime.date(2012, 7, 31): 0, + datetime.date(2012, 8, 31): 100, + datetime.date(2012, 9, 30): 100, + datetime.date(2012, 10, 31): 100, + datetime.date(2012, 11, 30): 100, + datetime.date(2012, 12, 31): 250, + datetime.date(2013, 1, 31): 250, + datetime.date(2013, 2, 28): 250, + datetime.date(2013, 3, 31): 250, + datetime.date(2013, 4, 30): 250, + datetime.date(2013, 5, 31): 250, + datetime.date(2013, 6, 30): 250, + datetime.date(2013, 7, 31): 250, + datetime.date(2013, 8, 31): 250, + datetime.date(2013, 9, 30): 250, + datetime.date(2013, 10, 31): 100, + datetime.date(2013, 11, 30): 100, + datetime.date(2013, 12, 31): 100, + datetime.date(2014, 1, 31): 100 } result = final_liability_dict(input_start_date, input_dict, input_duration) diff --git a/bpfin/tests/test_utilbills/test_bill_lib.py b/bpfin/tests/test_utilbills/test_bill_lib.py index 321befb..13c927b 100644 --- a/bpfin/tests/test_utilbills/test_bill_lib.py +++ b/bpfin/tests/test_utilbills/test_bill_lib.py @@ -1,5 +1,5 @@ from bpfin.utilbills.bill_lib import add_list, annualizing_projection -from datetime import date, datetime +from datetime import date, datetime.date def test_add_list(): diff --git a/bpfin/utilbills/old_calcbill.py b/bpfin/utilbills/old_calcbill.py index c25e723..2cae291 100644 --- a/bpfin/utilbills/old_calcbill.py +++ b/bpfin/utilbills/old_calcbill.py @@ -1,4 +1,4 @@ -from datetime import timedelta, datetime +from datetime import timedelta, datetime.date # from buildingdata.models import Building, UtilityBill, RatePlan, RatePlanMonth # from reference_data.models import Inflation, HddWeather, CddWeather from .billprojections import * @@ -51,11 +51,11 @@ def calculate_utility_bill(inflation_rate_info, inflation_year_info, current_dat hist_monthly_gas_price = monthly_price(monthly_charge_gas, monthly_use_gas) - starting_d0 = datetime.date(2012, 12, 1) - starting_d1 = datetime.date(2031, 1, 31) + starting_d0 = datetime.date.date(2012, 12, 1) + starting_d1 = datetime.date.date(2031, 1, 31) - ending_d0 = datetime.date(2012, 12, 31) - ending_d1 = datetime.date(2031, 2, 1) + ending_d0 = datetime.date.date(2012, 12, 31) + ending_d1 = datetime.date.date(2031, 2, 1) occupancy_date = [] starting_months = [] -- GitLab From 61aa172a956ac3c9f160cb8403f3da15e5c33343 Mon Sep 17 00:00:00 2001 From: Sarey Hamarneh Date: Fri, 21 Apr 2017 14:07:53 -0400 Subject: [PATCH 4/4] Complete liability --- bpfin/financials/liability.py | 9 ++-- bpfin/tests/test_financials/test_liability.py | 53 ++++++++++--------- 2 files changed, 31 insertions(+), 31 deletions(-) diff --git a/bpfin/financials/liability.py b/bpfin/financials/liability.py index d8737ad..d0aaa20 100644 --- a/bpfin/financials/liability.py +++ b/bpfin/financials/liability.py @@ -1,5 +1,5 @@ import calendar -from datetime import datetime.date, date +from datetime import datetime def define_date_start(liability_dictionary): @@ -35,7 +35,7 @@ def add_months(sourcedate, months): else: month = month + months day = min(sourcedate.day, calendar.monthrange(year, month)[1]) - return date(year, month, day) + return datetime(year, month, day) def liability_calendar(date, months): @@ -93,8 +93,7 @@ def final_liability_dict(start_date, liability_dictionary, months): pro_date.year, pro_date.month)[1])] = [] final_dict[(pro_date.year, pro_date.month, calendar.monthrange( - pro_date.year, pro_date.month)[1] - )].append(debt_date_dict[debt_date]) + pro_date.year, pro_date.month)[1])].append(debt_date_dict[debt_date]) for pro_date in pro_forma_calendar: if (pro_date.year, pro_date.month, calendar.monthrange( pro_date.year, pro_date.month)[1]) not in final_dict: @@ -106,6 +105,6 @@ def final_liability_dict(start_date, liability_dictionary, months): real_dict = {} for key, value in final_dict.items(): - real_dict[date(key[0], key[1], key[2])] = value + real_dict[datetime(key[0], key[1], key[2])] = value return real_dict diff --git a/bpfin/tests/test_financials/test_liability.py b/bpfin/tests/test_financials/test_liability.py index 8886ba9..9d8f26c 100644 --- a/bpfin/tests/test_financials/test_liability.py +++ b/bpfin/tests/test_financials/test_liability.py @@ -1,4 +1,4 @@ -from datetime import datetime, date +from datetime import datetime from bpfin.financials.liability import final_liability_dict from bpfin.tests.testdata import sample_data as db @@ -8,33 +8,34 @@ def test_final_liability_dict(): input_dict = db.liability_dictionary input_duration = db.analysis_date['proforma_duration'] output = { - datetime.date(2012, 1, 31): 0, - datetime.date(2012, 2, 29): 0, - datetime.date(2012, 3, 31): 0, - datetime.date(2012, 4, 30): 0, - datetime.date(2012, 5, 31): 0, - datetime.date(2012, 6, 30): 0, - datetime.date(2012, 7, 31): 0, - datetime.date(2012, 8, 31): 100, - datetime.date(2012, 9, 30): 100, - datetime.date(2012, 10, 31): 100, - datetime.date(2012, 11, 30): 100, - datetime.date(2012, 12, 31): 250, - datetime.date(2013, 1, 31): 250, - datetime.date(2013, 2, 28): 250, - datetime.date(2013, 3, 31): 250, - datetime.date(2013, 4, 30): 250, - datetime.date(2013, 5, 31): 250, - datetime.date(2013, 6, 30): 250, - datetime.date(2013, 7, 31): 250, - datetime.date(2013, 8, 31): 250, - datetime.date(2013, 9, 30): 250, - datetime.date(2013, 10, 31): 100, - datetime.date(2013, 11, 30): 100, - datetime.date(2013, 12, 31): 100, - datetime.date(2014, 1, 31): 100 + datetime(2012, 1, 31): 0, + datetime(2012, 2, 29): 0, + datetime(2012, 3, 31): 0, + datetime(2012, 4, 30): 0, + datetime(2012, 5, 31): 0, + datetime(2012, 6, 30): 0, + datetime(2012, 7, 31): 0, + datetime(2012, 8, 31): 100, + datetime(2012, 9, 30): 100, + datetime(2012, 10, 31): 100, + datetime(2012, 11, 30): 100, + datetime(2012, 12, 31): 250, + datetime(2013, 1, 31): 250, + datetime(2013, 2, 28): 250, + datetime(2013, 3, 31): 250, + datetime(2013, 4, 30): 250, + datetime(2013, 5, 31): 250, + datetime(2013, 6, 30): 250, + datetime(2013, 7, 31): 250, + datetime(2013, 8, 31): 250, + datetime(2013, 9, 30): 250, + datetime(2013, 10, 31): 100, + datetime(2013, 11, 30): 100, + datetime(2013, 12, 31): 100, + datetime(2014, 1, 31): 100 } result = final_liability_dict(input_start_date, input_dict, input_duration) + print(result) assert output == result -- GitLab