From d45e1b61e6db04ea53206389769ff22a1722ad5a Mon Sep 17 00:00:00 2001 From: SebakThapa Date: Mon, 22 Apr 2024 19:52:07 +0545 Subject: [PATCH 1/6] FIX: file not exist error when --output is passed a directory --- school_center.py | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/school_center.py b/school_center.py index dd93f88..f7b4cc6 100644 --- a/school_center.py +++ b/school_center.py @@ -1,4 +1,4 @@ -OUTPUT_DIR = 'results/' +DEFAULT_OUTPUT_DIR = 'results' PREF_DISTANCE_THRESHOLD = 2 # Preferred threshold distance in kilometers ABS_DISTANCE_THRESHOLD = 7 # Absolute threshold distance in kilometers @@ -11,7 +11,7 @@ import random import logging import argparse -import os +from os import path, makedirs from typing import Dict, List from utils.custom_logger import configure_logging @@ -21,13 +21,6 @@ logger = logging.getLogger(__name__) -def create_dir(dirPath:str): - """ - Create the given directory if it doesn't exists - - Creates all the directories needed to resolve to the provided directory path - """ - if not os.path.exists(dirPath): - os.makedirs(dirPath) def haversine_distance(lat1, lon1, lat2, lon2): """ @@ -160,9 +153,24 @@ def is_allocated(scode1: str, scode2:str) -> bool: remaining = 0 # stores count of non allocated students allocations = {} # to track mutual allocations -create_dir(OUTPUT_DIR) # Create the output directory if not exists -with open('{}school-center-distance.tsv'.format(OUTPUT_DIR), 'w', encoding='utf-8') as intermediate_file, \ -open(OUTPUT_DIR + args.output, 'w', encoding='utf-8') as a_file: + +def get_output_dir(): + dirname = path.dirname(args.output) + if(dirname): + return dirname + else: + return DEFAULT_OUTPUT_DIR + +def get_output_filename(): + return path.basename(args.output) + + +output_dirname = get_output_dir() +output_filename = get_output_filename() +makedirs(output_dirname, exist_ok=True) # Create the output directory if not exists + +with open(path.join(output_dirname, "school-center-distance.tsv"), 'w', encoding='utf-8') as intermediate_file, \ +open(path.join(output_dirname, 'output_filename'), 'w', encoding='utf-8') as a_file: writer = csv.writer(intermediate_file, delimiter="\t") writer.writerow(["scode", "s_count", "school_name", "school_lat", "school_long", "cscode", "center_name", "center_address", "center_capacity", "distance_km"]) From f9b7d88a063a9a106bfb30049a15b1c636efc304 Mon Sep 17 00:00:00 2001 From: SebakThapa Date: Wed, 24 Apr 2024 19:47:55 +0545 Subject: [PATCH 2/6] FIX: merge conflicts --- school_center.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/school_center.py b/school_center.py index 8050d4c..f0b3751 100644 --- a/school_center.py +++ b/school_center.py @@ -1,6 +1,6 @@ from utils.custom_logger import configure_logging from typing import Dict, List -import os +from os import path, makedirs import argparse import logging import random @@ -13,6 +13,7 @@ MIN_STUDENT_IN_CENTER = 10 # Min. no of students from a school to be assigned to a center in normal circumstances STRETCH_CAPACITY_FACTOR = 0.02 # How much can center capacity be streched if need arises PREF_CUTOFF = -4 # Do not allocate students with pref score less than cutoff +DEFAULT_OUTPUT_DIR = 'results' # Default directory to create output files if --output not provided configure_logging() logger = logging.getLogger(__name__) From 2a7d44cba75b846a0493091b8a0c383594af9544 Mon Sep 17 00:00:00 2001 From: SebakThapa Date: Thu, 25 Apr 2024 07:28:28 +0545 Subject: [PATCH 3/6] Fix: using output_filename variable as string --- school_center.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/school_center.py b/school_center.py index f0b3751..77d79c6 100644 --- a/school_center.py +++ b/school_center.py @@ -215,7 +215,7 @@ def get_output_filename(): makedirs(output_dirname, exist_ok=True) # Create the output directory if not exists with open(path.join(output_dirname, "school-center-distance.tsv"), 'w', encoding='utf-8') as intermediate_file, \ -open(path.join(output_dirname, 'output_filename'), 'w', encoding='utf-8') as a_file: +open(path.join(output_dirname, output_filename), 'w', encoding='utf-8') as a_file: writer = csv.writer(intermediate_file, delimiter="\t") writer.writerow(["scode", "s_count", From ea57cea5008bf84c32acc4a8e56a415c0867cf3d Mon Sep 17 00:00:00 2001 From: SebakThapa Date: Thu, 25 Apr 2024 07:47:21 +0545 Subject: [PATCH 4/6] FIX: import error --- school_center.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/school_center.py b/school_center.py index 6b5e676..de62caa 100644 --- a/school_center.py +++ b/school_center.py @@ -1,7 +1,6 @@ from utils.custom_logger import configure_logging from typing import Dict, List -from os import sys -import path, makedirs +from os import sys, path, makedirs import argparse import logging import random From 23022f8d5a368a183a48115dd30c7be6916fccea Mon Sep 17 00:00:00 2001 From: SebakThapa Date: Thu, 25 Apr 2024 08:07:41 +0545 Subject: [PATCH 5/6] FIX: error while --output provided directory only --- school_center.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/school_center.py b/school_center.py index de62caa..25af428 100644 --- a/school_center.py +++ b/school_center.py @@ -14,6 +14,7 @@ STRETCH_CAPACITY_FACTOR = 0.02 # How much can center capacity be streched if need arises PREF_CUTOFF = -4 # Do not allocate students with pref score less than cutoff DEFAULT_OUTPUT_DIR = 'results' # Default directory to create output files if --output not provided +DEFAULT_OUTOUT_FILENAME = 'school-center.tsv' configure_logging() logger = logging.getLogger(__name__) @@ -206,7 +207,7 @@ def is_allocated(scode1: str, scode2: str) -> bool: parser.add_argument('prefs_tsv', default='prefs.tsv', help="Tab separated (TSV) file containing preference scores") parser.add_argument( - '-o', '--output', default='school-center.tsv', help='Output file') + '-o', '--output', default = DEFAULT_OUTOUT_FILENAME, help='Output file') parser.add_argument('-s', '--seed', action='store', metavar='SEEDVALUE', default=None, type=float, help='Initialization seed for Random Number Generator') @@ -232,13 +233,19 @@ def get_output_dir(): return DEFAULT_OUTPUT_DIR def get_output_filename(): - return path.basename(args.output) + basename = path.basename(args.output) + if(basename): + return basename + else: + return DEFAULT_OUTOUT_FILENAME output_dirname = get_output_dir() output_filename = get_output_filename() makedirs(output_dirname, exist_ok=True) # Create the output directory if not exists +print(path.join(output_dirname, output_filename)) + with open(path.join(output_dirname, "school-center-distance.tsv"), 'w', encoding='utf-8') as intermediate_file, \ open(path.join(output_dirname, output_filename), 'w', encoding='utf-8') as a_file: writer = csv.writer(intermediate_file, delimiter="\t") From a5d6331b86a9c9f02160a0a3a747acf3f8b8b043 Mon Sep 17 00:00:00 2001 From: SebakThapa Date: Thu, 25 Apr 2024 09:27:44 +0545 Subject: [PATCH 6/6] FIX: typo and removed unwanted print statements --- school_center.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/school_center.py b/school_center.py index 25af428..89ed29c 100644 --- a/school_center.py +++ b/school_center.py @@ -14,7 +14,7 @@ STRETCH_CAPACITY_FACTOR = 0.02 # How much can center capacity be streched if need arises PREF_CUTOFF = -4 # Do not allocate students with pref score less than cutoff DEFAULT_OUTPUT_DIR = 'results' # Default directory to create output files if --output not provided -DEFAULT_OUTOUT_FILENAME = 'school-center.tsv' +DEFAULT_OUTPUT_FILENAME = 'school-center.tsv' configure_logging() logger = logging.getLogger(__name__) @@ -207,7 +207,7 @@ def is_allocated(scode1: str, scode2: str) -> bool: parser.add_argument('prefs_tsv', default='prefs.tsv', help="Tab separated (TSV) file containing preference scores") parser.add_argument( - '-o', '--output', default = DEFAULT_OUTOUT_FILENAME, help='Output file') + '-o', '--output', default = DEFAULT_OUTPUT_FILENAME, help='Output file') parser.add_argument('-s', '--seed', action='store', metavar='SEEDVALUE', default=None, type=float, help='Initialization seed for Random Number Generator') @@ -244,8 +244,6 @@ def get_output_filename(): output_filename = get_output_filename() makedirs(output_dirname, exist_ok=True) # Create the output directory if not exists -print(path.join(output_dirname, output_filename)) - with open(path.join(output_dirname, "school-center-distance.tsv"), 'w', encoding='utf-8') as intermediate_file, \ open(path.join(output_dirname, output_filename), 'w', encoding='utf-8') as a_file: writer = csv.writer(intermediate_file, delimiter="\t")