pybnb.misc

Miscellaneous utilities used for development.

Copyright by Gabriel A. Hackebeil (gabe.hackebeil@gmail.com).

class pybnb.misc.MPI_InterruptHandler(handler, disable=False)[source]

A context manager for temporarily assigning a handler to SIGINT and SIGUSR1, depending on the availability of these signals in the current OS.

pybnb.misc.metric_format(num, unit='s', digits=1, align_unit=False)[source]

Format and scale output with metric prefixes.

Example

>>> metric_format(0)
'0.0 s'
>>> metric_format(0, align_unit=True)
'0.0 s '
>>> metric_format(0.002, unit='B')
'2.0 mB'
>>> metric_format(2001, unit='B')
'2.0 KB'
>>> metric_format(2001, unit='B', digits=3)
'2.001 KB'
pybnb.misc.time_format(num, digits=1, align_unit=False)[source]

Format and scale output according to standard time units.

Example

>>> time_format(0)
'0.0 s'
>>> time_format(0, align_unit=True)
'0.0 s '
>>> time_format(0.002)
'2.0 ms'
>>> time_format(2001)
'33.4 m'
>>> time_format(2001, digits=3)
'33.350 m'
pybnb.misc.get_gap_labels(gap, key='gap', format='f')[source]

Get format strings with enough size and precision to print a given gap tolerance.

pybnb.misc.as_stream(stream, mode='w', **kwds)[source]

A utility for handling function arguments that can be a filename or a file object. This function is meant to be used in the context of a with statement.

Parameters
  • stream (file-like object or string) – An existing file-like object or the name of a file to open.

  • mode (string) – Assigned to the mode keyword of the built-in function open when the stream argument is a filename. (default: “w”)

  • **kwds – Additional keywords passed to the built-in function open when the stream argument is a filename.

Returns

A file-like object that can be written to. If the input argument was originally an open file, a dummy context will wrap the file object so that it will not be closed upon exit of the with block.

Return type

file-like object

Example

>>> import tempfile
>>> with tempfile.NamedTemporaryFile() as f:
...     # pass a file
...     with as_stream(f) as g:
...         assert g is f
...     assert not f.closed
...     f.close()
...     # pass a filename
...     with as_stream(f.name) as g:
...         assert not g.closed
...     assert g.closed
pybnb.misc.get_default_args(func)[source]

Get the default arguments for a function as a dictionary mapping argument name to default value.

Example

>>> def f(a, b=None):
...     pass
>>> get_default_args(f)
{'b': None}
pybnb.misc.get_keyword_docs(doc)[source]

Parses a numpy-style docstring to summarize information in the ‘Parameters’ section into a dictionary.

pybnb.misc.get_simple_logger(name='<local>', filename=None, stream=None, console=True, level=20, formatter=None)[source]

Creates a logging object configured to write to any combination of a file, a stream, and the console, or hide all output.

Parameters
  • name (string) – The name assigned to the logging.Logger instance. (default: “<local>”)

  • filename (string, optional) – The name of a file to write to. (default: None)

  • stream (file-like object, optional) – A file-like object to write to. (default: None)

  • console (bool, optional) – If True, the logger will be configured to print output to the console through stdout and stderr. (default: True)

  • level (int, optional) – The logging level to use. (default: logging.INFO)

  • formatter (logging.Formatter, optional) – The logging formatter to use. (default: None)

Returns

A logging object

Return type

logging.Logger

pybnb.misc.create_command_line_solver(problem, parser=None)[source]

Convert a given problem implementation to a command-line example by exposing the pybnb.solver.solve() function arguments using argparse.