From 3b103bf8054e5bd568542019e478fe4a62b78b19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9B=D1=8B=D1=81=D1=8B=D1=85=20=D0=92=2E=D0=90=2E?= Date: Sat, 13 Jun 2026 23:49:47 +0300 Subject: [PATCH 1/2] Extract CSV loading logic --- python/funding_raised.py | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/python/funding_raised.py b/python/funding_raised.py index 4a00ef5..9cfe7f8 100755 --- a/python/funding_raised.py +++ b/python/funding_raised.py @@ -2,14 +2,16 @@ class FundingRaised: @staticmethod - def where(options = {}): + def _load_data(): with open("../startup_funding.csv", "rt") as csvfile: data = csv.reader(csvfile, delimiter=',', quotechar='"') - # skip header next(data) - csv_data = [] - for row in data: - csv_data.append(row) + return list(data) + + @staticmethod + def where(options = {}): + csv_data = FundingRaised._load_data() + funding = [] if 'company_name' in options: @@ -59,13 +61,8 @@ def where(options = {}): @staticmethod def find_by(options): - with open("../startup_funding.csv", "rt") as csvfile: - data = csv.reader(csvfile, delimiter=',', quotechar='"') - # skip header - next(data) - csv_data = [] - for row in data: - csv_data.append(row) + csv_data = FundingRaised._load_data() + if 'company_name' in options: for row in csv_data: From a4ef49b38e933f4464bd272ee8bfd28554c43c37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9B=D1=8B=D1=81=D1=8B=D1=85=20=D0=92=2E=D0=90=2E?= Date: Sun, 14 Jun 2026 00:55:55 +0300 Subject: [PATCH 2/2] Extract row mapping logic --- python/funding_raised.py | 87 +++++++++++----------------------------- 1 file changed, 24 insertions(+), 63 deletions(-) diff --git a/python/funding_raised.py b/python/funding_raised.py index 9cfe7f8..8335762 100755 --- a/python/funding_raised.py +++ b/python/funding_raised.py @@ -8,6 +8,21 @@ def _load_data(): next(data) return list(data) + @staticmethod + def _map_row(row): + 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 = {}): csv_data = FundingRaised._load_data() @@ -43,21 +58,11 @@ def where(options = {}): csv_data = result 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) - - return output + +for row in csv_data: + output.append(FundingRaised._map_row(row)) + +return output @staticmethod def find_by(options): @@ -67,66 +72,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(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(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(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(row) raise RecordNotFound