From eb94632db9e0de0a44f51c0c7415d78b424cc2a0 Mon Sep 17 00:00:00 2001 From: samb1232 Date: Fri, 6 Mar 2026 21:33:40 +0500 Subject: [PATCH 1/5] remove funding --- python/funding_raised.py | 1 - 1 file changed, 1 deletion(-) diff --git a/python/funding_raised.py b/python/funding_raised.py index 4a00ef5..a700bcc 100755 --- a/python/funding_raised.py +++ b/python/funding_raised.py @@ -11,7 +11,6 @@ def where(options = {}): for row in data: csv_data.append(row) - funding = [] if 'company_name' in options: result = [] for row in csv_data: From 46e591a6407024bfb9f821d410094cf45eee0e6c Mon Sep 17 00:00:00 2001 From: samb1232 Date: Fri, 6 Mar 2026 21:46:30 +0500 Subject: [PATCH 2/5] add get_row_from_csv_data function (DRY) --- python/funding_raised.py | 35 ++++++++++++++--------------------- 1 file changed, 14 insertions(+), 21 deletions(-) diff --git a/python/funding_raised.py b/python/funding_raised.py index a700bcc..2f8e283 100755 --- a/python/funding_raised.py +++ b/python/funding_raised.py @@ -1,6 +1,15 @@ import csv class FundingRaised: + + @staticmethod + def get_row_from_csv_data(option: str, csv_data: list, row_index: int): + result = [] + for row in csv_data: + if row[row_index] == option: + result.append(row) + return result + @staticmethod def where(options = {}): with open("../startup_funding.csv", "rt") as csvfile: @@ -12,33 +21,17 @@ def where(options = {}): csv_data.append(row) if 'company_name' in options: - result = [] - for row in csv_data: - if row[1] == options['company_name']: - result.append(row) - csv_data = result + csv_data = FundingRaised.get_row_from_csv_data(options['company_name'], csv_data, 1) if 'city' in options: - result = [] - for row in csv_data: - if row[4] == options['city']: - result.append(row) - csv_data = result + csv_data = FundingRaised.get_row_from_csv_data(options['city'], csv_data, 4) if 'state' in options: - result = [] - for row in csv_data: - if row[5] == options['state']: - result.append(row) - csv_data = result + csv_data = FundingRaised.get_row_from_csv_data(options['state'], csv_data, 5) if 'round' in options: - result = [] - for row in csv_data: - if row[9] == options['round']: - result.append(row) - csv_data = result - + csv_data = FundingRaised.get_row_from_csv_data(options['round'], csv_data, 9) + output = [] for row in csv_data: mapped = {} From ccdabde550e5df205f335c24964a1a86bebb4104 Mon Sep 17 00:00:00 2001 From: samb1232 Date: Fri, 6 Mar 2026 21:51:22 +0500 Subject: [PATCH 3/5] separate get_row_from_csv_data to csv_utils --- python/csv_utils.py | 6 ++++++ python/funding_raised.py | 17 +++++------------ 2 files changed, 11 insertions(+), 12 deletions(-) create mode 100644 python/csv_utils.py diff --git a/python/csv_utils.py b/python/csv_utils.py new file mode 100644 index 0000000..b711742 --- /dev/null +++ b/python/csv_utils.py @@ -0,0 +1,6 @@ +def get_row_from_csv_data(option: str, csv_data: list, row_index: int): + result = [] + for row in csv_data: + if row[row_index] == option: + result.append(row) + return result \ No newline at end of file diff --git a/python/funding_raised.py b/python/funding_raised.py index 2f8e283..2377270 100755 --- a/python/funding_raised.py +++ b/python/funding_raised.py @@ -1,15 +1,8 @@ import csv +from csv_utils import get_row_from_csv_data class FundingRaised: - @staticmethod - def get_row_from_csv_data(option: str, csv_data: list, row_index: int): - result = [] - for row in csv_data: - if row[row_index] == option: - result.append(row) - return result - @staticmethod def where(options = {}): with open("../startup_funding.csv", "rt") as csvfile: @@ -21,16 +14,16 @@ def where(options = {}): csv_data.append(row) if 'company_name' in options: - csv_data = FundingRaised.get_row_from_csv_data(options['company_name'], csv_data, 1) + csv_data = get_row_from_csv_data(options['company_name'], csv_data, 1) if 'city' in options: - csv_data = FundingRaised.get_row_from_csv_data(options['city'], csv_data, 4) + csv_data = get_row_from_csv_data(options['city'], csv_data, 4) if 'state' in options: - csv_data = FundingRaised.get_row_from_csv_data(options['state'], csv_data, 5) + csv_data = get_row_from_csv_data(options['state'], csv_data, 5) if 'round' in options: - csv_data = FundingRaised.get_row_from_csv_data(options['round'], csv_data, 9) + csv_data = get_row_from_csv_data(options['round'], csv_data, 9) output = [] for row in csv_data: From 4b1d74a8a9f9386391f1c8444f02a441e23884fb Mon Sep 17 00:00:00 2001 From: samb1232 Date: Fri, 6 Mar 2026 21:59:11 +0500 Subject: [PATCH 4/5] separate _map_row_to_dict --- python/funding_raised.py | 81 +++++++++++----------------------------- 1 file changed, 21 insertions(+), 60 deletions(-) diff --git a/python/funding_raised.py b/python/funding_raised.py index 2377270..a4a71ca 100755 --- a/python/funding_raised.py +++ b/python/funding_raised.py @@ -3,6 +3,22 @@ class FundingRaised: + @staticmethod + def _map_row_to_dict(row): + """Convert a CSV row array into a mapped dictionary.""" + return { + 'permalink': row[0], + 'company_name': row[1], + 'number_employees': row[2], + 'category': row[3], + 'city': row[4], + 'state': row[5], + 'funded_date': row[6], + 'raised_amount': row[7], + 'raised_currency': row[8], + 'round': row[9] + } + @staticmethod def where(options = {}): with open("../startup_funding.csv", "rt") as csvfile: @@ -27,18 +43,7 @@ def where(options = {}): output = [] for row in csv_data: - mapped = {} - mapped['permalink'] = row[0] - mapped['company_name'] = row[1] - mapped['number_employees'] = row[2] - mapped['category'] = row[3] - mapped['city'] = row[4] - mapped['state'] = row[5] - mapped['funded_date'] = row[6] - mapped['raised_amount'] = row[7] - mapped['raised_currency'] = row[8] - mapped['round'] = row[9] - output.append(mapped) + output.append(FundingRaised._map_row_to_dict(row)) return output @@ -55,66 +60,22 @@ def find_by(options): if 'company_name' in options: for row in csv_data: if row[1] == options['company_name']: - mapped = {} - mapped['permalink'] = row[0] - mapped['company_name'] = row[1] - mapped['number_employees'] = row[2] - mapped['category'] = row[3] - mapped['city'] = row[4] - mapped['state'] = row[5] - mapped['funded_date'] = row[6] - mapped['raised_amount'] = row[7] - mapped['raised_currency'] = row[8] - mapped['round'] = row[9] - return mapped + return FundingRaised._map_row_to_dict(row) if 'city' in options: for row in csv_data: if row[4] == options['city']: - mapped = {} - mapped['permalink'] = row[0] - mapped['company_name'] = row[1] - mapped['number_employees'] = row[2] - mapped['category'] = row[3] - mapped['city'] = row[4] - mapped['state'] = row[5] - mapped['funded_date'] = row[6] - mapped['raised_amount'] = row[7] - mapped['raised_currency'] = row[8] - mapped['round'] = row[9] - return mapped + return FundingRaised._map_row_to_dict(row) if 'state' in options: for row in csv_data: if row[5] == options['state']: - mapped = {} - mapped['permalink'] = row[0] - mapped['company_name'] = row[1] - mapped['number_employees'] = row[2] - mapped['category'] = row[3] - mapped['city'] = row[4] - mapped['state'] = row[5] - mapped['funded_date'] = row[6] - mapped['raised_amount'] = row[7] - mapped['raised_currency'] = row[8] - mapped['round'] = row[9] - return mapped + return FundingRaised._map_row_to_dict(row) if 'round' in options: for row in csv_data: if row[9] == options['round']: - mapped = {} - mapped['permalink'] = row[0] - mapped['company_name'] = row[1] - mapped['number_employees'] = row[2] - mapped['category'] = row[3] - mapped['city'] = row[4] - mapped['state'] = row[5] - mapped['funded_date'] = row[6] - mapped['raised_amount'] = row[7] - mapped['raised_currency'] = row[8] - mapped['round'] = row[9] - return mapped + return FundingRaised._map_row_to_dict(row) raise RecordNotFound From b81f8f6d91d97ab2d4b272d253f2157fa37b9ee3 Mon Sep 17 00:00:00 2001 From: samb1232 Date: Fri, 6 Mar 2026 22:01:17 +0500 Subject: [PATCH 5/5] create field index constants --- python/funding_raised.py | 47 +++++++++++++++++++++++++--------------- 1 file changed, 29 insertions(+), 18 deletions(-) diff --git a/python/funding_raised.py b/python/funding_raised.py index a4a71ca..e7abb50 100755 --- a/python/funding_raised.py +++ b/python/funding_raised.py @@ -3,20 +3,31 @@ class FundingRaised: + PERMALINK_INDEX = 0 + COMPANY_NAME_INDEX = 1 + NUMBER_EMPLOYEES_INDEX = 2 + CATEGORY_INDEX = 3 + CITY_INDEX = 4 + STATE_INDEX = 5 + FUNDED_DATE_INDEX = 6 + RAISED_AMOUNT_INDEX = 7 + RAISED_CURRENCY_INDEX = 8 + ROUND_INDEX = 9 + @staticmethod def _map_row_to_dict(row): """Convert a CSV row array into a mapped dictionary.""" return { - 'permalink': row[0], - 'company_name': row[1], - 'number_employees': row[2], - 'category': row[3], - 'city': row[4], - 'state': row[5], - 'funded_date': row[6], - 'raised_amount': row[7], - 'raised_currency': row[8], - 'round': row[9] + 'permalink': row[FundingRaised.PERMALINK_INDEX], + 'company_name': row[FundingRaised.COMPANY_NAME_INDEX], + 'number_employees': row[FundingRaised.NUMBER_EMPLOYEES_INDEX], + 'category': row[FundingRaised.CATEGORY_INDEX], + 'city': row[FundingRaised.CITY_INDEX], + 'state': row[FundingRaised.STATE_INDEX], + 'funded_date': row[FundingRaised.FUNDED_DATE_INDEX], + 'raised_amount': row[FundingRaised.RAISED_AMOUNT_INDEX], + 'raised_currency': row[FundingRaised.RAISED_CURRENCY_INDEX], + 'round': row[FundingRaised.ROUND_INDEX] } @staticmethod @@ -30,16 +41,16 @@ def where(options = {}): csv_data.append(row) if 'company_name' in options: - csv_data = get_row_from_csv_data(options['company_name'], csv_data, 1) + csv_data = get_row_from_csv_data(options['company_name'], csv_data, FundingRaised.COMPANY_NAME_INDEX) if 'city' in options: - csv_data = get_row_from_csv_data(options['city'], csv_data, 4) + csv_data = get_row_from_csv_data(options['city'], csv_data, FundingRaised.CITY_INDEX) if 'state' in options: - csv_data = get_row_from_csv_data(options['state'], csv_data, 5) + csv_data = get_row_from_csv_data(options['state'], csv_data, FundingRaised.STATE_INDEX) if 'round' in options: - csv_data = get_row_from_csv_data(options['round'], csv_data, 9) + csv_data = get_row_from_csv_data(options['round'], csv_data, FundingRaised.ROUND_INDEX) output = [] for row in csv_data: @@ -59,22 +70,22 @@ def find_by(options): if 'company_name' in options: for row in csv_data: - if row[1] == options['company_name']: + if row[FundingRaised.COMPANY_NAME_INDEX] == options['company_name']: return FundingRaised._map_row_to_dict(row) if 'city' in options: for row in csv_data: - if row[4] == options['city']: + if row[FundingRaised.CITY_INDEX] == options['city']: return FundingRaised._map_row_to_dict(row) if 'state' in options: for row in csv_data: - if row[5] == options['state']: + if row[FundingRaised.STATE_INDEX] == options['state']: return FundingRaised._map_row_to_dict(row) if 'round' in options: for row in csv_data: - if row[9] == options['round']: + if row[FundingRaised.ROUND_INDEX] == options['round']: return FundingRaised._map_row_to_dict(row) raise RecordNotFound