code: 
  
  import hashlib
  import importlib.util
  import json
  import os
  import pathlib
  from types import ModuleType
  
  import pytest
  import requests
  
  __snake_case             =	pathlib.Path.cwd().joinpath('''project_euler''')
  __snake_case             =	pathlib.Path.cwd().joinpath(
      '''scripts''', '''project_euler_answers.json'''
  )
  
  with open(PROJECT_EULER_ANSWERS_PATH) as file_handle:
      __snake_case             =	json.load(file_handle)
  
  
  
  
  
  
  def 		_A		(		_lowercase   )				->   Optional[Any]:
  
  
       """simple docstring"""
  
  
       __UpperCamelCase   = importlib.util.spec_from_file_location(file_path.name				,     str(_lowercase   )   )
       __UpperCamelCase   = importlib.util.module_from_spec(_lowercase   )  # type: ignore
       spec.loader.exec_module(_lowercase   )  # type: ignore
       return module
  
  
  
  
  
  
  def 		_A		(		)				->   Tuple:
  
  
       """simple docstring"""
  
  
       __UpperCamelCase   = []
       for problem_dir_path in PROJECT_EULER_DIR_PATH.iterdir():
            if problem_dir_path.is_file() or problem_dir_path.name.startswith('_'   ):
                 continue
            for file_path in problem_dir_path.iterdir():
                 if file_path.suffix != ".py" or file_path.name.startswith(('_', 'test')   ):
                      continue
                 solution_file_paths.append(_lowercase   )
       return solution_file_paths
  
  
  
  
  
  
  def 		_A		(		)				->   Dict:
  
  
       """simple docstring"""
  
  
       with open(os.environ['GITHUB_EVENT_PATH']   ) as file:
            __UpperCamelCase   = json.load(_lowercase   )
       return event["pull_request"]["url"] + "/files"
  
  
  
  
  
  
  def 		_A		(		)				->   Dict:
  
  
       """simple docstring"""
  
  
       __UpperCamelCase   = []
       __UpperCamelCase   = {
           'Accept': 'application/vnd.github.v3+json',
           'Authorization': 'token ' + os.environ['GITHUB_TOKEN'],
       }
       __UpperCamelCase   = requests.get(get_files_url()				,     headers=_lowercase   ).json()
       for file in files:
            __UpperCamelCase   = pathlib.Path.cwd().joinpath(file['filename']   )
            if (
                filepath.suffix != ".py"
                or filepath.name.startswith(('_', 'test')   )
                or not filepath.name.startswith('sol'   )
            ):
                 continue
            solution_file_paths.append(_lowercase   )
       return solution_file_paths
  
  
  
  
  
  
  def 		_A		(		)				->   Union[str, Any]:
  
  
       """simple docstring"""
  
  
       if os.environ.get('CI'   ) and os.environ.get('GITHUB_EVENT_NAME'   ) == "pull_request":
            # Return only if there are any, otherwise default to all solutions
            if filepaths := added_solution_file_path():
                 return filepaths
       return all_solution_file_paths()
  
  
  
  
  
  
  @pytest.mark.parametrize(
      'solution_path'				,     collect_solution_file_paths()				,     ids=lambda _lowercase   : f'''{path.parent.name}/{path.name}'''				,     )
  def 		_A		(		_lowercase   )				->   str:
  
  
       """simple docstring"""
  
  
       __UpperCamelCase   = solution_path.parent.name[8:].zfill(3   )
       __UpperCamelCase   = PROBLEM_ANSWERS[problem_number]
       __UpperCamelCase   = convert_path_to_module(_lowercase   )
       __UpperCamelCase   = str(solution_module.solution()   )  # type: ignore
       __UpperCamelCase   = hashlib.shaaaa(answer.encode()   ).hexdigest()
       assert (
           answer == expected
       ), f'''Expected solution to {problem_number} to have hash {expected}, got {answer}'''
  
  
  
style_context: 
  
  
  def 		_A		(		_lowercase   )				->   bool:
  
  
       """simple docstring"""
  
  
       if not isinstance(_lowercase				,     _lowercase   ):
            raise ValueError('Input series is not valid, valid series - [1, 2/3, 2]'   )
       if len(_lowercase   ) == 0:
            raise ValueError('Input list must be a non empty list'   )
       if len(_lowercase   ) == 1 and series[0] != 0:
            return True
       __UpperCamelCase   = []
       __UpperCamelCase   = len(_lowercase   )
       for i in range(0				,     _lowercase   ):
            if series[i] == 0:
                 raise ValueError('Input series cannot have 0 as an element'   )
            rec_series.append(1 / series[i]   )
       __UpperCamelCase   = rec_series[1] - rec_series[0]
       for index in range(2				,     _lowercase   ):
            if rec_series[index] - rec_series[index - 1] != common_diff:
                 return False
       return True
  
  
  
  
  
  
  def 		_A		(		_lowercase   )				->   float:
  
  
       """simple docstring"""
  
  
       if not isinstance(_lowercase				,     _lowercase   ):
            raise ValueError('Input series is not valid, valid series - [2, 4, 6]'   )
       if len(_lowercase   ) == 0:
            raise ValueError('Input list must be a non empty list'   )
       __UpperCamelCase   = 0
       for val in series:
            answer += 1 / val
       return len(_lowercase   ) / answer
  
  
  if __name__ == "__main__":
      import doctest
  
      doctest.testmod()
  
  
  