ATLAS Offline Software
Loading...
Searching...
No Matches
EventGUIDLookupArgClasses.py
Go to the documentation of this file.
1# Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
2"""Custom transform argument classes for EventGUIDLookup."""
3
4import os
5
6from PyJobTransforms.trfLogger import msg
7import PyJobTransforms.trfArgClasses as trfArgClasses
8
9
10class argEventGUIDFile(trfArgClasses.argFile):
11 """Plain text output; nentries = number of non-blank lines, per file."""
12
13 def __init__(self, *args, **kwargs):
14 super().__init__(*args, **kwargs)
15 self._metadataKeys['nentries'] = self._countLines
16 self._metadataKeys['_exists'] = self._existsQuiet
17
18 def _existsQuiet(self, files):
19 present = []
20 for fname in files:
21 if self._urlType == 'posix' and '[' not in fname and not os.path.exists(fname):
22 msg.warning('Optional output file %s was not produced', fname)
23 self._fileMetadata.setdefault(fname, {})['_exists'] = False
24 else:
25 present.append(fname)
26 if present:
27 trfArgClasses.argFile._exists(self, present)
28
29 def _countLines(self, files):
30 for fname in files:
31 if not os.path.exists(fname):
32 continue
33 with open(fname) as f:
34 n = sum(1 for line in f if line.strip())
35 self._fileMetadata.setdefault(fname, {})['nentries'] = n
36
37 def getnentries(self, fast=False):
38 total, found = 0, False
39 for fname in self._value:
40 if os.path.exists(fname):
41 found = True
42 with open(fname) as f:
43 total += sum(1 for line in f if line.strip())
44 return total if found else None
Transform argument class definitions.
Logging configuration for ATLAS job transforms.