From 81ece448bac0f522525398be2f1467f979036bd5 Mon Sep 17 00:00:00 2001 From: Andres Nava Date: Wed, 8 Nov 2023 15:07:42 -0800 Subject: [PATCH 01/11] made edits to postprocessing.py so that it can create vbf templates in a new branch --- src/HHbbVV/postprocessing/postprocessing.py | 154 +++++++++++++++++++- 1 file changed, 148 insertions(+), 6 deletions(-) diff --git a/src/HHbbVV/postprocessing/postprocessing.py b/src/HHbbVV/postprocessing/postprocessing.py index 5423ee22..39bb6ef0 100644 --- a/src/HHbbVV/postprocessing/postprocessing.py +++ b/src/HHbbVV/postprocessing/postprocessing.py @@ -184,7 +184,12 @@ def get_nonres_vbf_selection_regions( "VVFatJetPt": pt_cuts, "bbFatJetParticleNetMD_Txbb": [txbb_cut, CUT_MAX_VAL], "VVFatJetParTMD_THWWvsT": [thww_wp, CUT_MAX_VAL], - # add more + "vbf_Mass_jj": [500, 10000], + "vbf_dEta_jj": [4, 10000], + "ak8FatJetEta0": [-2.4, 2.4], + "ak8FatJetEta1": [-2.4, 2.4], + "DijetdEta": [0, 2.0], + "DijetdPhi": [2.6, 10000], }, label="Pass", ), @@ -194,7 +199,12 @@ def get_nonres_vbf_selection_regions( "VVFatJetPt": pt_cuts, "bbFatJetParticleNetMD_Txbb": [0.8, txbb_cut], "VVFatJetParTMD_THWWvsT": [thww_wp, CUT_MAX_VAL], - # add more + "vbf_Mass_jj": [500, 10000], + "vbf_dEta_jj": [4, 10000], + "ak8FatJetEta0": [-2.4, 2.4], + "ak8FatJetEta1": [-2.4, 2.4], + "DijetdEta": [0, 2.0], + "DijetdPhi": [2.6, 10000], }, label="Fail", ), @@ -339,8 +349,8 @@ def get_res_selection_regions( # TODO: check which of these applies to resonant as well weight_shifts = { "pileup": Syst(samples=nonres_sig_keys + res_sig_keys + bg_keys, label="Pileup"), - "PDFalphaS": Syst(samples=nonres_sig_keys, label="PDF"), - "QCDscale": Syst(samples=nonres_sig_keys, label="QCDscale"), + #"PDFalphaS": Syst(samples=nonres_sig_keys, label="PDF"), + #"QCDscale": Syst(samples=nonres_sig_keys, label="QCDscale"), "ISRPartonShower": Syst(samples=nonres_sig_keys_ggf + ["V+Jets"], label="ISR Parton Shower"), "FSRPartonShower": Syst(samples=nonres_sig_keys_ggf + ["V+Jets"], label="FSR Parton Shower"), "L1EcalPrefiring": Syst( @@ -393,6 +403,27 @@ def main(args): jec_jmsr_shifts=True, ) print("Loaded BDT preds\n") + + # Load VBF Variables (edits events_dict so that all of the events have the appropriate variables and stuff) TODO: + if args.vbf: + pt_labels = ["JES", "JER"] + m_labels = ["JMS", "JMR"] + for key, df in events_dict.items(): + bb_mask = ( + df[("ak8FatJetParticleNetMD_Txbb", 0)] > df[("ak8FatJetParticleNetMD_Txbb", 1)] + ) + _add_vbf_columns(df, bb_mask, ptlabel="", mlabel="") + + if key == "Data": + continue + + for var in pt_labels: + for direction in ["down", "up"]: + _add_vbf_columns(df, bb_mask, ptlabel=f"_{var}_{direction}", mlabel="") + + for var in m_labels: + for direction in ["down", "up"]: + _add_vbf_columns(df, bb_mask, ptlabel="", mlabel=f"_{var}_{direction}") # Control plots if args.control_plots: @@ -531,11 +562,122 @@ def _init(args): return shape_vars, scan, scan_cuts, scan_wps +# adds all necessary columns to dataframes from events_dict +def _add_vbf_columns(df, bb_mask, ptlabel, mlabel): + import vector + + bbJet = vector.array( + { + "pt": np.where(bb_mask, df[f"ak8FatJetPt{ptlabel}"][0], df[f"ak8FatJetPt{ptlabel}"][1]), + "phi": np.where(bb_mask, df["ak8FatJetPhi"][0], df["ak8FatJetPhi"][1]), + "eta": np.where(bb_mask, df["ak8FatJetEta"][0], df["ak8FatJetEta"][1]), + "M": np.where( + bb_mask, + df[f"ak8FatJetParticleNetMass{mlabel}"][0], + df[f"ak8FatJetParticleNetMass{mlabel}"][1], + ), + } + ) + + VVJet = vector.array( + { + "pt": np.where( + ~bb_mask, df[f"ak8FatJetPt{ptlabel}"][0], df[f"ak8FatJetPt{ptlabel}"][1] + ), + "phi": np.where(~bb_mask, df["ak8FatJetPhi"][0], df["ak8FatJetPhi"][1]), + "eta": np.where(~bb_mask, df["ak8FatJetEta"][0], df["ak8FatJetEta"][1]), + "M": np.where( + ~bb_mask, + df[f"ak8FatJetParticleNetMass{mlabel}"][0], + df[f"ak8FatJetParticleNetMass{mlabel}"][1], + ), + } + ) + + vbf1 = vector.array( + { + "pt": df[(f"VBFJetPt{ptlabel}", 0)], + "phi": df[("VBFJetPhi", 0)], + "eta": df[("VBFJetEta", 0)], + "M": df[("VBFJetMass", 0)], + } + ) + + vbf2 = vector.array( + { + "pt": df[(f"VBFJetPt{ptlabel}", 1)], + "phi": df[("VBFJetPhi", 1)], + "eta": df[("VBFJetEta", 1)], + "M": df[("VBFJetMass", 1)], + } + ) + + jj = vbf1 + vbf2 + + mass_jj_cut_sorted_pt = jj.mass > 500 + eta_jj_cut_sorted_pt = np.abs(vbf1.eta - vbf2.eta) > 4.0 + + # Adapted from HIG-20-005 ggF_Killer 6.2.2 + # https://coffeateam.github.io/coffea/api/coffea.nanoevents.methods.vector.PtEtaPhiMLorentzVector.html + # https://coffeateam.github.io/coffea/api/coffea.nanoevents.methods.vector.LorentzVector.html + # Adding variables defined in HIG-20-005 that show strong differentiation for VBF signal events and background + + # seperation between both ak8 higgs jets + if "vbf_dR_HH" not in df.columns: + df[f"vbf_dR_HH"] = VVJet.deltaR(bbJet) + if "vbf_dR_j0_HVV" not in df.columns: + df[f"vbf_dR_j0_HVV"] = vbf1.deltaR(VVJet) + if "vbf_dR_j1_HVV" not in df.columns: + df[f"vbf_dR_j1_HVV"] = vbf2.deltaR(VVJet) + if "vbf_dR_j0_Hbb" not in df.columns: + df[f"vbf_dR_j0_Hbb"] = vbf1.deltaR(bbJet) + if "vbf_dR_j1_Hbb" not in df.columns: + df[f"vbf_dR_j1_Hbb"] = vbf2.deltaR(bbJet) + if "vbf_dR_jj" not in df.columns: + df[f"vbf_dR_jj"] = vbf1.deltaR(vbf2) + if "vbf_Mass_jj{ptlabel}" not in df.columns: + df[f"vbf_Mass_jj{ptlabel}"] = jj.M + if "vbf_dEta_jj" not in df.columns: + df[f"vbf_dEta_jj"] = np.abs(vbf1.eta - vbf2.eta) + + if "DijetdEta" not in df.columns: + df[f"DijetdEta"] = np.abs(bbJet.eta - VVJet.eta) + if "DijetdPhi" not in df.columns: + df[f"DijetdPhi"] = np.abs(bbJet.phi - VVJet.phi) + + # Subleading VBF-jet cos(θ) in the HH+2j center of mass frame: + # https://github.com/scikit-hep/vector/blob/main/src/vector/_methods.py#L916 + system_4vec = vbf1 + vbf2 + VVJet + bbJet + j1_CMF = vbf1.boostCM_of_p4(system_4vec) + + # Leading VBF-jet cos(θ) in the HH+2j center of mass frame: + thetab1 = 2 * np.arctan(np.exp(-j1_CMF.eta)) + thetab1 = np.cos(thetab1) # 12 + + if f"vbf_cos_j1{ptlabel}{mlabel}" not in df.columns: + df[f"vbf_cos_j1{ptlabel}{mlabel}"] = np.abs(thetab1) + + # Subleading VBF-jet cos(θ) in the HH+2j center of mass frame: + j2_CMF = vbf2.boostCM_of_p4(system_4vec) + thetab2 = 2 * np.arctan(np.exp(-j2_CMF.eta)) + thetab2 = np.cos(thetab2) + if f"vbf_cos_j2{ptlabel}{mlabel}" not in df.columns: + df[f"vbf_cos_j2{ptlabel}{mlabel}"] = np.abs(thetab2) + + if "vbf_prod_centrality" not in df.columns: + # H1-centrality * H2-centrality: + delta_eta = vbf1.eta - vbf2.eta + avg_eta = (vbf1.eta + vbf2.eta) / 2 + prod_centrality = np.exp( + -np.power((VVJet.eta - avg_eta) / delta_eta, 2) + - np.power((bbJet.eta - avg_eta) / delta_eta, 2) + ) + df[f"vbf_prod_centrality"] = prod_centrality def _process_samples(args, BDT_sample_order: List[str] = None): sig_samples = res_samples if args.resonant else nonres_samples - if not args.resonant and BDT_sample_order is None: + if not args.resonant and BDT_sample_order is None and not args.vbf: with open(f"{args.bdt_preds_dir}/{args.year}/sample_order.txt", "r") as f: BDT_sample_order = list(eval(f.read()).keys()) @@ -580,7 +722,7 @@ def _process_samples(args, BDT_sample_order: List[str] = None): if bg_key not in args.bg_keys and bg_key != data_key: del bg_samples[bg_key] - if not args.resonant: + if not args.resonant and not args.vbf: for key in sig_samples.copy(): if key not in BDT_sample_order: del sig_samples[key] From ff55bbbb9cf2ca9abada75669916df4551fcc37b Mon Sep 17 00:00:00 2001 From: Lint Action Date: Wed, 8 Nov 2023 23:08:17 +0000 Subject: [PATCH 02/11] Fix code style issues with Black --- src/HHbbVV/postprocessing/postprocessing.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/HHbbVV/postprocessing/postprocessing.py b/src/HHbbVV/postprocessing/postprocessing.py index 39bb6ef0..648e6d84 100644 --- a/src/HHbbVV/postprocessing/postprocessing.py +++ b/src/HHbbVV/postprocessing/postprocessing.py @@ -349,8 +349,8 @@ def get_res_selection_regions( # TODO: check which of these applies to resonant as well weight_shifts = { "pileup": Syst(samples=nonres_sig_keys + res_sig_keys + bg_keys, label="Pileup"), - #"PDFalphaS": Syst(samples=nonres_sig_keys, label="PDF"), - #"QCDscale": Syst(samples=nonres_sig_keys, label="QCDscale"), + # "PDFalphaS": Syst(samples=nonres_sig_keys, label="PDF"), + # "QCDscale": Syst(samples=nonres_sig_keys, label="QCDscale"), "ISRPartonShower": Syst(samples=nonres_sig_keys_ggf + ["V+Jets"], label="ISR Parton Shower"), "FSRPartonShower": Syst(samples=nonres_sig_keys_ggf + ["V+Jets"], label="FSR Parton Shower"), "L1EcalPrefiring": Syst( @@ -403,7 +403,7 @@ def main(args): jec_jmsr_shifts=True, ) print("Loaded BDT preds\n") - + # Load VBF Variables (edits events_dict so that all of the events have the appropriate variables and stuff) TODO: if args.vbf: pt_labels = ["JES", "JER"] @@ -562,6 +562,7 @@ def _init(args): return shape_vars, scan, scan_cuts, scan_wps + # adds all necessary columns to dataframes from events_dict def _add_vbf_columns(df, bb_mask, ptlabel, mlabel): import vector @@ -674,6 +675,7 @@ def _add_vbf_columns(df, bb_mask, ptlabel, mlabel): ) df[f"vbf_prod_centrality"] = prod_centrality + def _process_samples(args, BDT_sample_order: List[str] = None): sig_samples = res_samples if args.resonant else nonres_samples From 235b30446e039564396ed0784e83830e3a2b95ad Mon Sep 17 00:00:00 2001 From: Andres Nava Date: Fri, 10 Nov 2023 12:59:46 -0800 Subject: [PATCH 03/11] added pileup weight cut to bbVVSkimmer to handle strange TTbar background --- src/HHbbVV/processors/bbVVSkimmer.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/HHbbVV/processors/bbVVSkimmer.py b/src/HHbbVV/processors/bbVVSkimmer.py index a6b9b2da..d02213be 100644 --- a/src/HHbbVV/processors/bbVVSkimmer.py +++ b/src/HHbbVV/processors/bbVVSkimmer.py @@ -628,6 +628,9 @@ def process(self, events: ak.Array): if self._systematics: systematics += list(weights.variations) + + single_weight_pileup = weights.partial_weight(['single_weight_pileup']) + add_selection("single_weight_pileup", (single_weight_pileup <= 4), *selection_args) # TODO: need to be careful about the sum of gen weights used for the LHE/QCDScale uncertainties logger.debug("weights ", weights._weights.keys()) From dc83bdb09d5c500ea196deca45ffdbe78ded05e5 Mon Sep 17 00:00:00 2001 From: Lint Action Date: Fri, 10 Nov 2023 21:00:42 +0000 Subject: [PATCH 04/11] Fix code style issues with Black --- src/HHbbVV/processors/bbVVSkimmer.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/HHbbVV/processors/bbVVSkimmer.py b/src/HHbbVV/processors/bbVVSkimmer.py index d02213be..e0c4f6df 100644 --- a/src/HHbbVV/processors/bbVVSkimmer.py +++ b/src/HHbbVV/processors/bbVVSkimmer.py @@ -628,8 +628,8 @@ def process(self, events: ak.Array): if self._systematics: systematics += list(weights.variations) - - single_weight_pileup = weights.partial_weight(['single_weight_pileup']) + + single_weight_pileup = weights.partial_weight(["single_weight_pileup"]) add_selection("single_weight_pileup", (single_weight_pileup <= 4), *selection_args) # TODO: need to be careful about the sum of gen weights used for the LHE/QCDScale uncertainties From 6d6d0a79be8e13fc0e38652f4b8038a62e8d24a3 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 13 Nov 2023 17:08:02 +0000 Subject: [PATCH 05/11] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/psf/black-pre-commit-mirror: 23.10.1 → 23.11.0](https://github.com/psf/black-pre-commit-mirror/compare/23.10.1...23.11.0) --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index a4517316..d2c099e0 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,6 +1,6 @@ repos: - repo: https://github.com/psf/black-pre-commit-mirror - rev: "23.10.1" + rev: "23.11.0" hooks: - id: black-jupyter args: [--line-length=100] From 2fc4110669081d565e115d32486c7d555db5bac7 Mon Sep 17 00:00:00 2001 From: Raghav Kansal Date: Mon, 13 Nov 2023 13:53:04 -0600 Subject: [PATCH 06/11] Update auto-merge.yml --- .github/workflows/auto-merge.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/auto-merge.yml b/.github/workflows/auto-merge.yml index 80f0134a..856b0901 100644 --- a/.github/workflows/auto-merge.yml +++ b/.github/workflows/auto-merge.yml @@ -8,7 +8,9 @@ permissions: jobs: dependabot: runs-on: ubuntu-latest - if: ${{ github.actor == 'pre-commit-ci[bot]' && github.event_name == 'pull_request'}} + if: + ${{ github.event_name == 'pull_request' && + github.event.pull_request.user.login == 'pre-commit-ci[bot]'}} steps: - name: Auto-merge PR run: gh pr merge --auto --merge "$PR_URL" From dfa3358bb8994685129374e908f0f11b0a98872b Mon Sep 17 00:00:00 2001 From: Andres Nava Date: Tue, 21 Nov 2023 00:21:40 -0800 Subject: [PATCH 07/11] added slightly modified lepton veto from HH4b analysis --- src/HHbbVV/processors/bbVVSkimmer.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/HHbbVV/processors/bbVVSkimmer.py b/src/HHbbVV/processors/bbVVSkimmer.py index e0c4f6df..5332df4b 100644 --- a/src/HHbbVV/processors/bbVVSkimmer.py +++ b/src/HHbbVV/processors/bbVVSkimmer.py @@ -551,6 +551,19 @@ def process(self, events: ak.Array): & (events.Electron.miniPFRelIso_all < 0.4) & (events.Electron.cutBased >= events.Electron.LOOSE) ) + + # if using HH4b lepton vetoes: + # https://cms.cern.ch/iCMS/user/noteinfo?cmsnoteid=CMS%20AN-2020/231 Section 7.1.2 + # In order to be considered in the lepton veto step, a muon (electron) is required to to pass the selections described in Section 5.2, and to have pT > 15 GeV (pT > 20 GeV), and |η| < 2.4 (2.5). + # A muon is also required to pass loose identification criteria as detailed in [35] and mini-isolation + # (miniPFRelIso all < 0.4). An electron is required to pass mvaFall17V2noIso WP90 identification as well as mini-isolation (miniPFRelIso all < 0.4). + + goodelectron = ( + (events.Electron.pt > 20) + & (abs(events.Electron.eta) < 2.5) + & (events.Electron.miniPFRelIso_all < 0.4) + & (events.Electron.mvaFall17V2noIso_WP90) + ) nelectrons = ak.sum(goodelectron, axis=1) goodmuon = ( From 04a979af704bc2d376f4728c193cff03bb6aa28c Mon Sep 17 00:00:00 2001 From: Lint Action Date: Tue, 21 Nov 2023 08:23:28 +0000 Subject: [PATCH 08/11] Fix code style issues with Black --- src/HHbbVV/processors/bbVVSkimmer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/HHbbVV/processors/bbVVSkimmer.py b/src/HHbbVV/processors/bbVVSkimmer.py index 5332df4b..23064bf1 100644 --- a/src/HHbbVV/processors/bbVVSkimmer.py +++ b/src/HHbbVV/processors/bbVVSkimmer.py @@ -551,7 +551,7 @@ def process(self, events: ak.Array): & (events.Electron.miniPFRelIso_all < 0.4) & (events.Electron.cutBased >= events.Electron.LOOSE) ) - + # if using HH4b lepton vetoes: # https://cms.cern.ch/iCMS/user/noteinfo?cmsnoteid=CMS%20AN-2020/231 Section 7.1.2 # In order to be considered in the lepton veto step, a muon (electron) is required to to pass the selections described in Section 5.2, and to have pT > 15 GeV (pT > 20 GeV), and |η| < 2.4 (2.5). From 93d53bff9c506243a2372f8fba7d3dbbb06258f6 Mon Sep 17 00:00:00 2001 From: Andres Nava Date: Tue, 21 Nov 2023 21:25:47 -0800 Subject: [PATCH 09/11] kept both versions in skimmer and also updated min_branches to reflect change --- src/HHbbVV/processors/bbVVSkimmer.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/HHbbVV/processors/bbVVSkimmer.py b/src/HHbbVV/processors/bbVVSkimmer.py index 23064bf1..8ecc6dbe 100644 --- a/src/HHbbVV/processors/bbVVSkimmer.py +++ b/src/HHbbVV/processors/bbVVSkimmer.py @@ -129,7 +129,8 @@ class bbVVSkimmer(processor.ProcessorABC): "VVFatJetParTMD_THWWvsT", "MET_pt", "MET_phi", - "nGoodElectrons", + "nGoodElectronsHH", + "nGoodElectronsHbb", "nGoodMuons", ] @@ -545,26 +546,26 @@ def process(self, events: ak.Array): # selection from https://github.com/jennetd/hbb-coffea/blob/85bc3692be9e0e0a0c82ae3c78e22cdf5b3e4d68/boostedhiggs/vhbbprocessor.py#L283-L307 # https://indico.cern.ch/event/1154430/#b-471403-higgs-meeting-special - goodelectron = ( + goodelectronHbb = ( (events.Electron.pt > 20) & (abs(events.Electron.eta) < 2.5) & (events.Electron.miniPFRelIso_all < 0.4) & (events.Electron.cutBased >= events.Electron.LOOSE) ) - + nelectronsHbb = ak.sum(goodelectronHbb, axis=1) # if using HH4b lepton vetoes: # https://cms.cern.ch/iCMS/user/noteinfo?cmsnoteid=CMS%20AN-2020/231 Section 7.1.2 # In order to be considered in the lepton veto step, a muon (electron) is required to to pass the selections described in Section 5.2, and to have pT > 15 GeV (pT > 20 GeV), and |η| < 2.4 (2.5). # A muon is also required to pass loose identification criteria as detailed in [35] and mini-isolation # (miniPFRelIso all < 0.4). An electron is required to pass mvaFall17V2noIso WP90 identification as well as mini-isolation (miniPFRelIso all < 0.4). - goodelectron = ( + goodelectronHH = ( (events.Electron.pt > 20) & (abs(events.Electron.eta) < 2.5) & (events.Electron.miniPFRelIso_all < 0.4) & (events.Electron.mvaFall17V2noIso_WP90) ) - nelectrons = ak.sum(goodelectron, axis=1) + nelectronsHH = ak.sum(goodelectronHH, axis=1) goodmuon = ( (events.Muon.pt > 15) @@ -575,7 +576,8 @@ def process(self, events: ak.Array): nmuons = ak.sum(goodmuon, axis=1) skimmed_events["nGoodMuons"] = nmuons.to_numpy() - skimmed_events["nGoodElectrons"] = nelectrons.to_numpy() + skimmed_events["nGoodElectronsHH"] = nelectronsHH.to_numpy() + skimmed_events["nGoodElectronsHbb"] = nelectronsHbb.to_numpy() ###################### # Remove branches From 1e287352c8e647a71aec3558e084863a645234e0 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 18 Dec 2023 17:09:04 +0000 Subject: [PATCH 10/11] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/psf/black-pre-commit-mirror: 23.11.0 → 23.12.0](https://github.com/psf/black-pre-commit-mirror/compare/23.11.0...23.12.0) --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index d2c099e0..015d9b7e 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,6 +1,6 @@ repos: - repo: https://github.com/psf/black-pre-commit-mirror - rev: "23.11.0" + rev: "23.12.0" hooks: - id: black-jupyter args: [--line-length=100] From 38f55b2f3b1999e1f58b475ed2acd37f2e051a6f Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 25 Dec 2023 17:07:45 +0000 Subject: [PATCH 11/11] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/psf/black-pre-commit-mirror: 23.12.0 → 23.12.1](https://github.com/psf/black-pre-commit-mirror/compare/23.12.0...23.12.1) --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 015d9b7e..5e2450bb 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,6 +1,6 @@ repos: - repo: https://github.com/psf/black-pre-commit-mirror - rev: "23.12.0" + rev: "23.12.1" hooks: - id: black-jupyter args: [--line-length=100]