diff options
Diffstat (limited to 'squaredeal/sqd.py')
-rw-r--r-- | squaredeal/sqd.py | 56 |
1 files changed, 3 insertions, 53 deletions
diff --git a/squaredeal/sqd.py b/squaredeal/sqd.py index 0fe51fe..d80c3e0 100644 --- a/squaredeal/sqd.py +++ b/squaredeal/sqd.py @@ -1,29 +1,9 @@ -import base64, hashlib, os, random, re, shutil, string, subprocess +import hashlib, os, random, re, shutil, string, subprocess def generate_session_key(): return ''.join(random.choices(string.ascii_letters + string.digits, k=60)) -def parse_range_str(range_str, max_count): - range_start = 0 - range_end = max_count - if range_str: - try: - range_start = int(range_str) - 1 - range_end = range_start + 1 - except ValueError: - range_match = re.match(r'([0-9]+)-([0-9]+)', range_str) - if range_match: - range_start = int(range_match.group(1))-1 - range_end = int(range_match.group(2)) - else: - raise ValueError('Invalid range string: %s' % (range_str)) - if range_start < 0: - raise ValueError('Value out of range: 0') - if range_end > max_count: - raise ValueError('Value out of range: %d' % (range_end)) - return range(range_start, range_end) - def validate_board_range_str(range_str): if range_str.isdigit(): @@ -53,7 +33,7 @@ class SQDPhase(object): def tostring(self): return ':'.join([str(self.sessions), str(self.boards), self.prefix, self.info or '']) - def _output_file_name(self, session, reserve=False): + def output_file_name(self, session, reserve=False): prefix = self.prefix session_search = re.findall(r'#+', prefix) for session_match in sorted(session_search, reverse=True): @@ -63,7 +43,7 @@ class SQDPhase(object): prefix += 'reserve' return prefix - def _parse_board_ranges(self, range_def): + def parse_board_ranges(self, range_def): ranges = [range_str.strip() for range_str in range_def.split(',')] for range_str in ranges: validate_board_range_str(range_str) @@ -72,27 +52,6 @@ class SQDPhase(object): output_ranges += ranges return output_ranges[0:self.sessions] - def generate(self, session, delayed_info, reserve=False, output_path=None, bigdealx_path=None): - if not bigdealx_path: - raise FileNotFoundError('bigdealx_path not set') - delayed_info = base64.b64encode(delayed_info.encode('utf-8')).decode() - sessions_to_generate = parse_range_str(session, self.sessions) - board_ranges = self._parse_board_ranges(self.boards) - for session in sessions_to_generate: - session_key = self.s_keys[session] - session_key_len = int(len(session_key)/2) - session_left = session_key[0:session_key_len] - session_right = session_key[session_key_len:] - reserve_info = 'reserve' if reserve else 'original' - args = [bigdealx_path, - '-W', session_left, - '-e', session_right, - '-e', delayed_info, - '-e', reserve_info, - '-p', self._output_file_name(session+1, reserve), - '-n', board_ranges[session]] - subprocess.run(args, cwd=output_path, capture_output=True, check=True) - class SQD(object): @@ -214,12 +173,3 @@ class SQD(object): sqd_contents.append('KH %s\n' % (self.hash)) with open(sqdpath, 'w') as sqdfile: sqdfile.writelines(sqd_contents) - - def generate(self, phase, session, reserve=False, bigdealx_path=None): - phases_to_generate = parse_range_str(phase, len(self.phases)) - for phase in phases_to_generate: - self.phases[phase].generate( - session, self.delayed_value, - reserve=reserve, - output_path=os.path.realpath(os.path.dirname(self.sqd_path)) if self.sqd_path else None, - bigdealx_path=bigdealx_path) |