diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..9e2cc1e3edf158b35344021823ab76b03cd90231
--- /dev/null
+++ b/.pre-commit-config.yaml
@@ -0,0 +1,5 @@
+repos:
+-   repo: https://github.com/pre-commit/mirrors-autopep8
+    rev: ''  # Use the sha / tag you want to point at
+    hooks:
+    -   id: autopep8
\ No newline at end of file
diff --git a/Golden_Repo/p/PyTorch/PyTorch-1.6.0_fix-test-dataloader-fixed-affinity.patch b/Golden_Repo/p/PyTorch/PyTorch-1.6.0_fix-test-dataloader-fixed-affinity.patch
deleted file mode 100644
index 39e4d9883bdcafff1586aa278a08a41a8f786527..0000000000000000000000000000000000000000
--- a/Golden_Repo/p/PyTorch/PyTorch-1.6.0_fix-test-dataloader-fixed-affinity.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From c7c7460fd3a49a9d289394b80d9ecf61898edf49 Mon Sep 17 00:00:00 2001
-From: Alexander Grund <alexander.grund@tu-dresden.de>
-Date: Wed, 9 Sep 2020 08:47:03 +0200
-Subject: [PATCH] Choose test affinity based on current affinity
-
----
- test/test_dataloader.py | 18 ++++++++++++------
- 1 file changed, 12 insertions(+), 6 deletions(-)
-
-diff --git a/test/test_dataloader.py b/test/test_dataloader.py
-index ca0c9e6cb511f..745942bcf01f2 100644
---- a/test/test_dataloader.py
-+++ b/test/test_dataloader.py
-@@ -2128,22 +2128,28 @@ def __iter__(self):
-         after = os.sched_getaffinity(0)
-         return iter(after)
- 
--
--def worker_set_affinity(_):
--    os.sched_setaffinity(0, [2])
--
--
- @unittest.skipIf(
-     not hasattr(os, 'sched_setaffinity'),
-     "os.sched_setaffinity is not available")
- class TestSetAffinity(TestCase):
-     def test_set_affinity_in_worker_init(self):
-+        # Query the current affinity mask to avoid setting a disallowed one
-+        old_affinity = os.sched_getaffinity(0)
-+        if not old_affinity:
-+            self.skipTest("No affinity information")
-+        # Choose any
-+        expected_affinity = list(old_affinity)[-1]
-+
-+        def worker_set_affinity(_):
-+            os.sched_setaffinity(0, [expected_affinity])
-+
-+
-         dataset = SetAffinityDataset()
- 
-         dataloader = torch.utils.data.DataLoader(
-             dataset, num_workers=2, worker_init_fn=worker_set_affinity)
-         for sample in dataloader:
--            self.assertEqual(sample, [2])
-+            self.assertEqual(sample, [expected_affinity])
- 
- 
- 
diff --git a/Golden_Repo/p/PyTorch/PyTorch-1.7.0-gcccoremkl-2020-Python-3.8.5.eb b/Golden_Repo/p/PyTorch/PyTorch-1.7.0-gcccoremkl-2020-Python-3.8.5.eb
deleted file mode 100644
index 1422b8f3f7a65ccf1e301c22b9494ed34fcd0ca3..0000000000000000000000000000000000000000
--- a/Golden_Repo/p/PyTorch/PyTorch-1.7.0-gcccoremkl-2020-Python-3.8.5.eb
+++ /dev/null
@@ -1,291 +0,0 @@
-name = 'PyTorch'
-version = '1.7.0'
-versionsuffix = '-Python-%(pyver)s'
-
-homepage = 'https://pytorch.org/'
-description = """Tensors and Dynamic neural networks in Python with strong GPU acceleration.
-PyTorch is a deep learning framework that puts Python first."""
-
-toolchain = {'name': 'gcccoremkl', 'version': '9.3.0-2020.2.254'}
-
-site_contacts = 'Alexandre Strube <a.strube@fz-juelich.de>'
-
-osdependencies = [OS_PKG_IBVERBS_DEV]
-local_cudaver = '11.0'
-parallel = 128  # apparently this is solemny ignored
-
-builddependencies = [
-    ('CMake', '3.18.0'),
-    ('hypothesis', '4.44.2', versionsuffix),
-]
-
-dependencies = [
-    ('Ninja', '1.10.0'),
-    ('Python', '3.8.5'),
-    ('protobuf', '3.13.0'),
-    ('protobuf-python', '3.13.0', versionsuffix),
-    ('pybind11', '2.5.0', versionsuffix),
-    ('SciPy-Stack', '2020', versionsuffix, ('gcccoremkl', '9.3.0-2020.2.254')),
-    ('MPFR', '4.1.0'),
-    ('GMP', '6.2.0'),
-    ('numactl', '2.0.13', '', True),
-    ('FFmpeg', '4.3.1'),
-    ('cuDNN', '8.0.2.39', '-CUDA-%s' % local_cudaver, True),
-    ('magma', '2.5.4'),
-    ('NCCL', '2.8.3-1', '-CUDA-%s' % local_cudaver),
-    ('LLVM', '10.0.1'),
-    ('future', '0.18.2', versionsuffix),
-    ('libvpx', '1.9.0'),
-]
-
-
-# default CUDA compute capabilities to use (override via --cuda-compute-capabilities)
-cuda_compute_capabilities = ['7.0', '7.5', '8.0']
-
-
-# PyTorch pulls in a bunch of submodules that are not releases.
-# We download the submodule revisions from their repos.
-# The list is generated by easybuild-framework/easybuild/scripts/createSubmoduleDeps.sh
-local_extract_cmd_pattern = 'tar -C pytorch-%%(version)s/third_party/%s --strip-components=1 -xf %%s'
-
-local_cudaver = '11.0'
-
-source_urls = ['https://github.com/pytorch/pytorch/archive']
-
-sources = [
-    'v%(version)s.tar.gz',  # PyTorch
-    {
-        'source_urls': ['https://github.com/Maratyszcza/FP16/archive'],
-        'download_filename': '4dfe081cf6bcd15db339cf2680b9281b8451eeb3.tar.gz',
-        'filename': 'FP16-20200514.tar.gz',
-        'extract_cmd': local_extract_cmd_pattern % 'FP16',
-    },
-    {
-        'source_urls': ['https://github.com/Maratyszcza/FXdiv/archive'],
-        'download_filename': 'b408327ac2a15ec3e43352421954f5b1967701d1.tar.gz',
-        'filename': 'FXdiv-20200417.tar.gz',
-        'extract_cmd': local_extract_cmd_pattern % 'FXdiv',
-    },
-    {
-        'source_urls': ['https://github.com/Maratyszcza/NNPACK/archive'],
-        'download_filename': '24b55303f5cf65d75844714513a0d1b1409809bd.tar.gz',
-        'filename': 'NNPACK-20191007.tar.gz',
-        'extract_cmd': local_extract_cmd_pattern % 'NNPACK',
-    },
-    {
-        'source_urls': ['https://github.com/pytorch/QNNPACK/archive'],
-        'download_filename': '7d2a4e9931a82adc3814275b6219a03e24e36b4c.tar.gz',
-        'filename': 'QNNPACK-20190828.tar.gz',
-        'extract_cmd': local_extract_cmd_pattern % 'QNNPACK',
-    },
-    {
-        'source_urls': ['https://github.com/google/XNNPACK/archive'],
-        'download_filename': '1b354636b5942826547055252f3b359b54acff95.tar.gz',
-        'filename': 'XNNPACK-20200323.tar.gz',
-        'extract_cmd': local_extract_cmd_pattern % 'XNNPACK',
-    },
-    {
-        'source_urls': ['https://github.com/google/benchmark/archive'],
-        'download_filename': '505be96ab23056580a3a2315abba048f4428b04e.tar.gz',
-        'filename': 'benchmark-20180606.tar.gz',
-        'extract_cmd': local_extract_cmd_pattern % 'benchmark',
-    },
-    {
-        'source_urls': ['https://github.com/pytorch/cpuinfo/archive'],
-        'download_filename': '63b254577ed77a8004a9be6ac707f3dccc4e1fd9.tar.gz',
-        'filename': 'cpuinfo-20200611.tar.gz',
-        'extract_cmd': local_extract_cmd_pattern % 'cpuinfo',
-    },
-    {
-        'source_urls': ['https://github.com/NVlabs/cub/archive'],
-        'download_filename': 'd106ddb991a56c3df1b6d51b2409e36ba8181ce4.tar.gz',
-        'filename': 'cub-20200512.tar.gz',
-        'extract_cmd': local_extract_cmd_pattern % 'cub',
-    },
-    {
-        'source_urls': ['https://github.com/eigenteam/eigen-git-mirror/archive'],
-        'download_filename': 'd41dc4dd74acce21fb210e7625d5d135751fa9e5.tar.gz',
-        'filename': 'eigen-20190125.tar.gz',
-        'extract_cmd': local_extract_cmd_pattern % 'eigen',
-    },
-    {
-        'source_urls': ['https://github.com/pytorch/fbgemm/archive'],
-        'download_filename': '1d710393d5b7588f5de3b83f51c22bbddf095229.tar.gz',
-        'filename': 'fbgemm-20200914.tar.gz',
-        'extract_cmd': local_extract_cmd_pattern % 'fbgemm',
-    },
-    {
-        'source_urls': ['https://github.com/asmjit/asmjit/archive'],
-        'download_filename': '9057aa30b620f0662ff51e2230c126a345063064.tar.gz',
-        'filename': 'asmjit-20200429.tar.gz',
-        'extract_cmd': local_extract_cmd_pattern % 'fbgemm/third_party/asmjit',
-    },
-    {
-        'source_urls': ['https://github.com/pytorch/cpuinfo/archive'],
-        'download_filename': 'd5e37adf1406cf899d7d9ec1d317c47506ccb970.tar.gz',
-        'filename': 'cpuinfo-20190201.tar.gz',
-        'extract_cmd': local_extract_cmd_pattern % 'fbgemm/third_party/cpuinfo',
-    },
-    {
-        'source_urls': ['https://github.com/google/googletest/archive'],
-        'download_filename': '0fc5466dbb9e623029b1ada539717d10bd45e99e.tar.gz',
-        'filename': 'googletest-20180925.tar.gz',
-        'extract_cmd': local_extract_cmd_pattern % 'fbgemm/third_party/googletest',
-    },
-    {
-        'source_urls': ['https://github.com/fmtlib/fmt/archive'],
-        'download_filename': 'cd4af11efc9c622896a3e4cb599fa28668ca3d05.tar.gz',
-        'filename': 'fmt-20200806.tar.gz',
-        'extract_cmd': local_extract_cmd_pattern % 'fmt',
-    },
-    {
-        'source_urls': ['https://github.com/houseroad/foxi/archive'],
-        'download_filename': '4aba696ec8f31794fd42880346dc586486205e0a.tar.gz',
-        'filename': 'foxi-20200922.tar.gz',
-        'extract_cmd': local_extract_cmd_pattern % 'foxi',
-    },
-    {
-        'source_urls': ['https://github.com/google/gemmlowp/archive'],
-        'download_filename': '3fb5c176c17c765a3492cd2f0321b0dab712f350.tar.gz',
-        'filename': 'gemmlowp-20181126.tar.gz',
-        'extract_cmd': local_extract_cmd_pattern % 'gemmlowp/gemmlowp',
-    },
-    {
-        'source_urls': ['https://github.com/facebookincubator/gloo/archive'],
-        'download_filename': '3dc0328fe6a9d47bd47c0c6ca145a0d8a21845c6.tar.gz',
-        'filename': 'gloo-20200918.tar.gz',
-        'extract_cmd': local_extract_cmd_pattern % 'gloo',
-    },
-    {
-        'source_urls': ['https://github.com/google/googletest/archive'],
-        'download_filename': '2fe3bd994b3189899d93f1d5a881e725e046fdc2.tar.gz',
-        'filename': 'googletest-20180831.tar.gz',
-        'extract_cmd': local_extract_cmd_pattern % 'googletest',
-    },
-    {
-        'source_urls': ['https://github.com/intel/ideep/archive'],
-        'download_filename': 'ba885200dbbc1f144c7b58eba487378eb324f281.tar.gz',
-        'filename': 'ideep-20200915.tar.gz',
-        'extract_cmd': local_extract_cmd_pattern % 'ideep',
-    },
-    {
-        'source_urls': ['https://github.com/intel/mkl-dnn/archive'],
-        'download_filename': '5ef631a030a6f73131c77892041042805a06064f.tar.gz',
-        'filename': 'mkl-dnn-20200909.tar.gz',
-        'extract_cmd': local_extract_cmd_pattern % 'ideep/mkl-dnn',
-    },
-    {
-        'source_urls': ['https://github.com/onnx/onnx/archive'],
-        'download_filename': 'a82c6a7010e2e332d8f74ad5b0c726fd47c85376.tar.gz',
-        'filename': 'onnx-20200531.tar.gz',
-        'extract_cmd': local_extract_cmd_pattern % 'onnx',
-    },
-    {
-        'source_urls': ['https://github.com/google/benchmark/archive'],
-        'download_filename': 'e776aa0275e293707b6a0901e0e8d8a8a3679508.tar.gz',
-        'filename': 'benchmark-20180525.tar.gz',
-        'extract_cmd': local_extract_cmd_pattern % 'onnx/third_party/benchmark',
-    },
-    {
-        'source_urls': ['https://github.com/onnx/onnx-tensorrt/archive'],
-        'download_filename': 'c153211418a7c57ce071d9ce2a41f8d1c85a878f.tar.gz',
-        'filename': 'onnx-tensorrt-20190916.tar.gz',
-        'extract_cmd': local_extract_cmd_pattern % 'onnx-tensorrt',
-    },
-    {
-        'source_urls': ['https://github.com/Maratyszcza/psimd/archive'],
-        'download_filename': '072586a71b55b7f8c584153d223e95687148a900.tar.gz',
-        'filename': 'psimd-20200517.tar.gz',
-        'extract_cmd': local_extract_cmd_pattern % 'psimd',
-    },
-    {
-        'source_urls': ['https://github.com/Maratyszcza/pthreadpool/archive'],
-        'download_filename': '029c88620802e1361ccf41d1970bd5b07fd6b7bb.tar.gz',
-        'filename': 'pthreadpool-20200615.tar.gz',
-        'extract_cmd': local_extract_cmd_pattern % 'pthreadpool',
-    },
-    {
-        'source_urls': ['https://github.com/Maratyszcza/PeachPy/archive'],
-        'download_filename': '07d8fde8ac45d7705129475c0f94ed8925b93473.tar.gz',
-        'filename': 'PeachPy-20180218.tar.gz',
-        'extract_cmd': local_extract_cmd_pattern % 'python-peachpy',
-    },
-    {
-        'source_urls': ['https://github.com/shibatch/sleef/archive'],
-        'download_filename': '7f523de651585fe25cade462efccca647dcc8d02.tar.gz',
-        'filename': 'sleef-20190730.tar.gz',
-        'extract_cmd': local_extract_cmd_pattern % 'sleef',
-    },
-    {
-        'source_urls': ['https://github.com/01org/tbb/archive'],
-        'download_filename': 'a51a90bc609bb73db8ea13841b5cf7aa4344d4a9.tar.gz',
-        'filename': 'tbb-20181009.tar.gz',
-        'extract_cmd': local_extract_cmd_pattern % 'tbb',
-    },
-    {
-        'source_urls': ['https://github.com/pytorch/tensorpipe/archive'],
-        'download_filename': '95ff9319161fcdb3c674d2bb63fac3e94095b343.tar.gz',
-        'filename': 'tensorpipe-20200928.tar.gz',
-        'extract_cmd': local_extract_cmd_pattern % 'tensorpipe',
-    },
-    {
-        'source_urls': ['https://github.com/google/googletest/archive'],
-        'download_filename': '2fe3bd994b3189899d93f1d5a881e725e046fdc2.tar.gz',
-        'filename': 'googletest-20180831.tar.gz',
-        'extract_cmd': local_extract_cmd_pattern % 'tensorpipe/third_party/googletest',
-    },
-    {
-        'source_urls': ['https://github.com/google/libnop/archive'],
-        'download_filename': 'aa95422ea8c409e3f078d2ee7708a5f59a8b9fa2.tar.gz',
-        'filename': 'libnop-20200723.tar.gz',
-        'extract_cmd': local_extract_cmd_pattern % 'tensorpipe/third_party/libnop',
-    },
-    {
-        'source_urls': ['https://github.com/libuv/libuv/archive'],
-        'download_filename': '02a9e1be252b623ee032a3137c0b0c94afbe6809.tar.gz',
-        'filename': 'libuv-20200419.tar.gz',
-        'extract_cmd': local_extract_cmd_pattern % 'tensorpipe/third_party/libuv',
-    },
-]
-patches = [
-    'PyTorch-1.6.0_fix-test-dataloader-fixed-affinity.patch',
-    'PyTorch-1.7.0_fix_test_DistributedDataParallel.patch',
-    'PyTorch-1.7.0_fix_typing_python38.patch',
-    'PyTorch-1.7.0_fix_remove_backports.patch',
-]
-
-excluded_tests = {
-    '': [
-        # Fails on HDFML. Probably needs a GPU and a network - needs NCCL
-        'distributed/test_distributed_fork',
-        # Fails on HDFML.
-        'distributed/test_distributed_spawn',
-        # Fails on JUWELS (cluster) with SIGXCPU and on JUWELSBOOSTER
-        'test_foreach',
-        'test_xnnpack_integration',
-        # Fails on JUSUF
-        'distributed/rpc/test_process_group_agent',
-        'distributed/rpc/test_tensorpipe_agent',
-        'test_autograd',
-        'test_jit',
-        # Disabling all distributed tests because I don't have the whole year. Each test takes 2 hours
-        'distributed/nn/jit/test_instantiator',
-        'distributed/rpc/test_faulty_agent',
-        'distributed/rpc/test_process_group_agent',
-        'distributed/rpc/test_tensorpipe_agent',
-        # This test fails everywhere: https://github.com/pytorch/pytorch/issues/41242
-        # 'test_cpp_extensions_jit',
-        # Throws illegal memory access due to float16: https://github.com/pytorch/pytorch/issues/41340
-        # 'test_torch',
-        # Potentially problematic save/load issue with test_lstm on only some machines. Tell users to verify save&load!
-        # https://github.com/pytorch/pytorch/issues/43209
-        # 'test_quantization',
-    ],
-}
-
-runtest = 'cd test && %(python)s run_test.py --verbose %(excluded_tests)s'
-
-sanity_check_commands = ["python -c 'import caffe2.python'"]
-tests = ['PyTorch-check-cpp-extension.py']
-
-moduleclass = 'devel'
diff --git a/Golden_Repo/p/PyTorch/PyTorch-1.7.0_fix_remove_backports.patch b/Golden_Repo/p/PyTorch/PyTorch-1.7.0_fix_remove_backports.patch
deleted file mode 100644
index 8449d476f473e8b86edb86591f8512433a8f5482..0000000000000000000000000000000000000000
--- a/Golden_Repo/p/PyTorch/PyTorch-1.7.0_fix_remove_backports.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- setup.py.orig	2020-11-12 14:13:54.727306249 +0100
-+++ setup.py	2020-11-12 14:14:42.105485851 +0100
-@@ -337,7 +337,7 @@
- ################################################################################
- 
- # the list of runtime dependencies required by this built package
--install_requires = ['future', 'typing_extensions', 'dataclasses']
-+install_requires = ['future']
- 
- missing_pydep = '''
- Missing build dependency: Unable to `import {importname}`.
diff --git a/Golden_Repo/p/PyTorch/PyTorch-1.7.0_fix_test_DistributedDataParallel.patch b/Golden_Repo/p/PyTorch/PyTorch-1.7.0_fix_test_DistributedDataParallel.patch
deleted file mode 100644
index 18c874c475b985602f88a4113851df806107edce..0000000000000000000000000000000000000000
--- a/Golden_Repo/p/PyTorch/PyTorch-1.7.0_fix_test_DistributedDataParallel.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 4ee880e1645da7c581a04de6cfe30d911f659f57 Mon Sep 17 00:00:00 2001
-From: Alexander Grund <alexander.grund@tu-dresden.de>
-Date: Thu, 15 Oct 2020 14:30:03 +0200
-Subject: [PATCH] Distribute GPUs in round robin mode for distributed_test
-
-The ProcessGroupNCCL::barrier implementation assumes that when
-1 GPU/rank is used the GPU-Index equals the rank. Due to NCCL
-communicator reuse this then leads to rank 0 using the (kinda)
-temporary communicator while the other processes might use other GPUs
-leading to them trying to create a new communicator and waiting for
-rank 0 until that creates a new (potentially unrelated) one.
-
-See #46248 for details
----
- torch/testing/_internal/distributed/distributed_test.py | 6 ++----
- 1 file changed, 2 insertions(+), 4 deletions(-)
-
-diff --git a/torch/testing/_internal/distributed/distributed_test.py b/torch/testing/_internal/distributed/distributed_test.py
-index ccaccbda529aa..4d7c23b613d7c 100644
---- a/torch/testing/_internal/distributed/distributed_test.py
-+++ b/torch/testing/_internal/distributed/distributed_test.py
-@@ -362,16 +362,14 @@ def _init_multigpu_helper(self):
-             """
-             nGPUs = torch.cuda.device_count()
-             world_size = dist.get_world_size()
--            visible_devices = range(nGPUs)
- 
-             if BACKEND == "nccl":
-                 apply_hack_for_nccl()
- 
-             nGPUs_per_process = nGPUs // world_size
-             rank_to_GPU = {
--                i: list(
--                    visible_devices[i * nGPUs_per_process: (i + 1) * nGPUs_per_process]
--                )
-+                # Each rank has to get the GPU with the index equal to its rank
-+                i: [i + gpu_num * world_size for gpu_num in range(nGPUs_per_process)]
-                 for i in range(world_size)
-             }
-             return rank_to_GPU
\ No newline at end of file
diff --git a/Golden_Repo/p/PyTorch/PyTorch-1.7.0_fix_typing_python38.patch b/Golden_Repo/p/PyTorch/PyTorch-1.7.0_fix_typing_python38.patch
deleted file mode 100644
index da556eaef46876c75aae77b2f50a0dc5d55e592e..0000000000000000000000000000000000000000
--- a/Golden_Repo/p/PyTorch/PyTorch-1.7.0_fix_typing_python38.patch
+++ /dev/null
@@ -1,19 +0,0 @@
---- test/jit/test_recursive_script.py.orig	2020-11-11 18:40:22.959601697 +0100
-+++ test/jit/test_recursive_script.py	2020-11-11 18:40:44.718092798 +0100
-@@ -2,7 +2,6 @@
- import os
- import sys
- import typing
--import typing_extensions
- from typing import List, Dict, Optional, Tuple
- 
- import torch
-@@ -174,7 +173,7 @@
-         self.checkModule(M1(), (torch.randn(2, 2),))
- 
-         class M2(torch.nn.Module):
--            x : typing_extensions.Final[int]
-+            x : typing.Final[int]
- 
-             def __init__(self):
-                 super().__init__()
diff --git a/Golden_Repo/p/PyTorch/PyTorch-check-cpp-extension.py b/Golden_Repo/p/PyTorch/PyTorch-check-cpp-extension.py
deleted file mode 100755
index 0a8f6d3e6c59ed07b073470e1a7db54548099e37..0000000000000000000000000000000000000000
--- a/Golden_Repo/p/PyTorch/PyTorch-check-cpp-extension.py
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/usr/bin/env python
-
-# Verify that PyTorch can JIT compile C++ extensions
-# This requires at least Ninja and a working C++ compiler, preferably GCC
-#
-# Heavily based on the PyTorch tutorial for C++ extensions
-# Author: Alexander Grund (TU Dresden)
-
-from torch.utils.cpp_extension import load_inline
-
-cpp_source = "torch::Tensor test_func(torch::Tensor x) { return x; }"
-
-module = load_inline(name='inline_extension',
-                     cpp_sources=cpp_source,
-                     functions=['test_func'])
-assert module