ATLAS Offline Software
Functions | Variables
python.general Namespace Reference

Functions

def get_package_version (package_name, default_prefix="DataQuality")
 
def kgrind_profile (filename="profile.kgrind")
 
def daemonize (function, delay, error_args=None, **kwargs)
 
def send_error_email (exception_info, from_, subject, body)
 
def all_equal (*inputs)
 
def all_permutations (input_list)
 
def flattened (l)
 
def _flatten (l, fn, val=[])
 
def silence (log_level=None, logger=None)
 
def timer (name)
 
def interleave (*args)
 
def date_to_nanounix (date_string)
 
def nanounix_to_date (nanounix)
 

Variables

 log
 

Function Documentation

◆ _flatten()

def python.general._flatten (   l,
  fn,
  val = [] 
)
private

Definition at line 133 of file general.py.

133 def _flatten(l, fn, val=[]):
134  if type(l) is not list:
135  return fn(l)
136  if len(l) == 0:
137  return fn(val)
138  return [lambda x: _flatten(l[0], lambda y: _flatten(l[1:],fn,y), x), val]
139 
140 @contextmanager

◆ all_equal()

def python.general.all_equal ( inputs)
Returns true if all input arguments are equal (must be hashable)

Definition at line 106 of file general.py.

106 def all_equal(*inputs):
107  """
108  Returns true if all input arguments are equal (must be hashable)
109  """
110  return len(set(inputs)) == 1
111 

◆ all_permutations()

def python.general.all_permutations (   input_list)
Generate all permutations of `input_list`

Definition at line 112 of file general.py.

112 def all_permutations(input_list):
113  """
114  Generate all permutations of `input_list`
115  """
116  if len(input_list) <= 1:
117  yield input_list
118  else:
119  for perm in all_permutations(input_list[1:]):
120  for i in range(len(perm)+1):
121  yield perm[:i] + input_list[0:1] + perm[i:]
122 
123 # Taken from:
124 # http://caolanmcmahon.com/flatten_for_python

◆ daemonize()

def python.general.daemonize (   function,
  delay,
  error_args = None,
**  kwargs 
)
Run a daemon which executes `function` every `delay` seconds.

Definition at line 43 of file general.py.

43 def daemonize(function, delay, error_args=None, **kwargs):
44  """
45  Run a daemon which executes `function` every `delay` seconds.
46  """
47  from time import sleep
48  try:
49  while True:
50  log.info("Sleeping for %i seconds..", delay)
51  sleep(delay)
52 
53  log.info("Current time: %s", strftime("%d/%m/%Y %H:%M:%S"))
54 
55  function(**kwargs)
56  except Exception:
57  if error_args is not None:
58  import sys
59  send_error_email(sys.exc_info(), **error_args)
60  raise
61 

◆ date_to_nanounix()

def python.general.date_to_nanounix (   date_string)
Returns number of nanoseconds between unix epoch and date in the form
'dd/mm/yyyy'

Definition at line 172 of file general.py.

172 def date_to_nanounix(date_string):
173  """
174  Returns number of nanoseconds between unix epoch and date in the form
175  'dd/mm/yyyy'
176  """
177  return int(mktime(strptime(date_string, "%d/%m/%Y")) * 1e9)
178 

◆ flattened()

def python.general.flattened (   l)

Definition at line 125 of file general.py.

125 def flattened(l):
126  result = _flatten(l, lambda x: x)
127  while type(result) is list and len(result) and callable(result[0]):
128  if result[1] != []:
129  yield result[1]
130  result = result[0]([])
131  yield result
132 

◆ get_package_version()

def python.general.get_package_version (   package_name,
  default_prefix = "DataQuality" 
)
Returns package version as determined from "cmt show versions"

Definition at line 14 of file general.py.

14 def get_package_version(package_name, default_prefix="DataQuality"):
15  """
16  Returns package version as determined from "cmt show versions"
17  """
18  if "/" not in package_name and default_prefix:
19  package_name = "/".join([default_prefix, package_name])
20  output = getoutput("cmt show versions %s" % package_name).split("\n")
21  output = list(map(str.strip, output))
22  return " ".join(output[0].split()[1:])
23 
24 @contextmanager

◆ interleave()

def python.general.interleave ( args)

Definition at line 169 of file general.py.

169 def interleave(*args):
170  return [item for items in zip(*args) for item in items]
171 

◆ kgrind_profile()

def python.general.kgrind_profile (   filename = "profile.kgrind")
Generate kcachegrind profile information for a call. 

Example use:

with kgrind_profile() as p:
    p.run("main()")

Definition at line 25 of file general.py.

25 def kgrind_profile(filename="profile.kgrind"):
26  """
27  Generate kcachegrind profile information for a call.
28 
29  Example use:
30 
31  with kgrind_profile() as p:
32  p.run("main()")
33  """
34  from cProfile import Profile
35  p = Profile()
36  try:
37  yield p
38  finally:
39  from .ext.lsprofcalltree import KCacheGrind
40  with open(filename,"w") as fd:
41  KCacheGrind(p).output(fd)
42 

◆ nanounix_to_date()

def python.general.nanounix_to_date (   nanounix)
Returns a string representation of `nanounix` nanoseconds 
since the unix epoch

Definition at line 179 of file general.py.

179 def nanounix_to_date(nanounix):
180  """
181  Returns a string representation of `nanounix` nanoseconds
182  since the unix epoch
183  """
184  sub_second = "%03i" % ((nanounix % int(1e9)) / 1e6)
185  try:
186  return strftime("%Y%m%d:%H%M%S.", gmtime(nanounix / 1e9)) + sub_second
187  except ValueError:
188  return "[BadTime: %s]" % int(nanounix)
189 

◆ send_error_email()

def python.general.send_error_email (   exception_info,
  from_,
  subject,
  body 
)
Send an error email containing `exception_info`
TODO: Doesn't contain complete information

Definition at line 62 of file general.py.

62 def send_error_email(exception_info, from_, subject, body):
63  """
64  Send an error email containing `exception_info`
65  TODO: Doesn't contain complete information
66  """
67  import smtplib
68  import traceback
69 
70  from email.mime.text import MIMEText
71  from getpass import getuser
72  from socket import gethostname
73 
74  exceptionType, exceptionValue, exceptionTraceback = exception_info
75 
76  user, host = getuser(), gethostname()
77 
78  extra_info = ["Was running as user '%s' on machine '%s'" % (user, host),
79  #"Code located at: %s" % code
80  ]
81 
82  msg = MIMEText("\n\n".join(body + extra_info +
83  traceback.format_tb(exceptionTraceback)))
84 
85  msg['Subject'] = subject
86  msg['From'] = from_
87 
88  to = [
89  #"Peter Waller <peter.waller@cern.ch>",
90  "Peter Onyisi <peter.onyisi@cern.ch>"
91  ]
92 
93  #operations = ("Data Quality Operations "
94  # "<hn-atlas-data-quality-operations@cern.ch>")
95 
96  msg['To'] = ", ".join(to)
97  #msg['Cc'] = operations; to.append(operations)
98 
99  s = smtplib.SMTP()
100  s.connect()
101  s.sendmail(from_, to, msg.as_string())
102  s.quit()
103 
104  log.error("Error email sent.")
105 

◆ silence()

def python.general.silence (   log_level = None,
  logger = None 
)
Turn down the logging verbosity temporarily

Definition at line 141 of file general.py.

141 def silence(log_level=None, logger=None):
142  """
143  Turn down the logging verbosity temporarily
144  """
145  if log_level is None:
146  log_level = log.WARNING
147 
148  if logger is None:
149  logger = log.getLogger()
150 
151  orig_level = logger.level
152  logger.setLevel(log_level)
153 
154  try:
155  yield
156  finally:
157  logger.setLevel(orig_level)
158 
159 @contextmanager

◆ timer()

def python.general.timer (   name)

Definition at line 160 of file general.py.

160 def timer(name):
161  "A context manager which spits out how long the block took to execute"
162  start = time()
163  try:
164  yield
165  finally:
166  end = time()
167  log.debug("Took %.2f to %s", end - start, name)
168 

Variable Documentation

◆ log

python.general.log

Definition at line 9 of file general.py.

dso-stats.getoutput
def getoutput(cmd)
Definition: dso-stats.py:20
python.general.get_package_version
def get_package_version(package_name, default_prefix="DataQuality")
Definition: general.py:14
python.general.all_equal
def all_equal(*inputs)
Definition: general.py:106
python.general.kgrind_profile
def kgrind_profile(filename="profile.kgrind")
Definition: general.py:25
python.general.timer
def timer(name)
Definition: general.py:160
python.CaloAddPedShiftConfig.type
type
Definition: CaloAddPedShiftConfig.py:42
python.general._flatten
def _flatten(l, fn, val=[])
Definition: general.py:133
python.getCurrentFolderTag.fn
fn
Definition: getCurrentFolderTag.py:79
plotBeamSpotVxVal.range
range
Definition: plotBeamSpotVxVal.py:194
python.general.interleave
def interleave(*args)
Definition: general.py:169
histSizes.list
def list(name, path='/')
Definition: histSizes.py:38
python.general.silence
def silence(log_level=None, logger=None)
Definition: general.py:141
CxxUtils::set
constexpr std::enable_if_t< is_bitmask_v< E >, E & > set(E &lhs, E rhs)
Convenience function to set bits in a class enum bitmask.
Definition: bitmask.h:232
TCS::join
std::string join(const std::vector< std::string > &v, const char c=',')
Definition: Trigger/TrigT1/L1Topo/L1TopoCommon/Root/StringUtils.cxx:10
python.general.daemonize
def daemonize(function, delay, error_args=None, **kwargs)
Definition: general.py:43
python.general.nanounix_to_date
def nanounix_to_date(nanounix)
Definition: general.py:179
python.general.date_to_nanounix
def date_to_nanounix(date_string)
Definition: general.py:172
python.general.all_permutations
def all_permutations(input_list)
Definition: general.py:112
Trk::open
@ open
Definition: BinningType.h:40
python.general.flattened
def flattened(l)
Definition: general.py:125
python.CaloAddPedShiftConfig.int
int
Definition: CaloAddPedShiftConfig.py:45
CaloSwCorrections.time
def time(flags, cells_name, *args, **kw)
Definition: CaloSwCorrections.py:242
Trk::split
@ split
Definition: LayerMaterialProperties.h:38
python.general.send_error_email
def send_error_email(exception_info, from_, subject, body)
Definition: general.py:62