Source code for bluesky_spreadsheet

import pandas

from ._version import get_versions
__version__ = get_versions()['version']
del get_versions


[docs]class ExcelSpreadsheet: """ A bluesky plan parameterized by an Excel spreadsheet Parameters ---------- filepath: string path to Excel file plan: callable Expected signature: ``plan(row)`` where row is a row from the spreadsheet given as a dict. quiet: boolean, optional False by default. Set True to silence printing of rows when they are parsed. Attributes ---------- filepath plan quiet """ def __init__(self, filepath, plan, quiet=False): self.filepath = filepath self.plan = plan self._current_row = 0 self.quiet = quiet
[docs] def __call__(self, start_at=None): """Use the plan. Parameters ---------- start_at: integer, optional If None, start where we left off from the last ``__call__``. """ if start_at is not None: self._current_row = start_at while True: df = pandas.read_excel(self.filepath) try: row = df.ffill().loc[self._current_row].to_dict() except KeyError: # We have reached the end. break if not self.quiet: print(row) yield from self.plan(row) self._current_row += 1