diff --git a/.buildinfo b/.buildinfo new file mode 100644 index 00000000..0966ec48 --- /dev/null +++ b/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. +config: a37ef44e16c93530974f22ff46c02416 +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 00000000..e69de29b diff --git a/_images/inheritance-54099195b75b3cfc4cafee25a1733c27754e2e98.png b/_images/inheritance-54099195b75b3cfc4cafee25a1733c27754e2e98.png new file mode 100644 index 00000000..4fcf9af5 Binary files /dev/null and b/_images/inheritance-54099195b75b3cfc4cafee25a1733c27754e2e98.png differ diff --git a/_images/inheritance-54099195b75b3cfc4cafee25a1733c27754e2e98.png.map b/_images/inheritance-54099195b75b3cfc4cafee25a1733c27754e2e98.png.map new file mode 100644 index 00000000..7083e371 --- /dev/null +++ b/_images/inheritance-54099195b75b3cfc4cafee25a1733c27754e2e98.png.map @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_images/inheritance-71a9f107fe0ea93a50703b6e49bc3ab69393f810.png b/_images/inheritance-71a9f107fe0ea93a50703b6e49bc3ab69393f810.png new file mode 100644 index 00000000..7113948d Binary files /dev/null and b/_images/inheritance-71a9f107fe0ea93a50703b6e49bc3ab69393f810.png differ diff --git a/_images/inheritance-71a9f107fe0ea93a50703b6e49bc3ab69393f810.png.map b/_images/inheritance-71a9f107fe0ea93a50703b6e49bc3ab69393f810.png.map new file mode 100644 index 00000000..faeffb78 --- /dev/null +++ b/_images/inheritance-71a9f107fe0ea93a50703b6e49bc3ab69393f810.png.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/_images/inheritance-988e0c2687d9210fd7992077b33f04587ef16bf4.png b/_images/inheritance-988e0c2687d9210fd7992077b33f04587ef16bf4.png new file mode 100644 index 00000000..6cb452d3 Binary files /dev/null and b/_images/inheritance-988e0c2687d9210fd7992077b33f04587ef16bf4.png differ diff --git a/_images/inheritance-988e0c2687d9210fd7992077b33f04587ef16bf4.png.map b/_images/inheritance-988e0c2687d9210fd7992077b33f04587ef16bf4.png.map new file mode 100644 index 00000000..ab5c0fe8 --- /dev/null +++ b/_images/inheritance-988e0c2687d9210fd7992077b33f04587ef16bf4.png.map @@ -0,0 +1,3 @@ + + + diff --git a/_modules/cpymad/madx.html b/_modules/cpymad/madx.html new file mode 100644 index 00000000..57debd76 --- /dev/null +++ b/_modules/cpymad/madx.html @@ -0,0 +1,1715 @@ + + + + + + cpymad.madx — cpymad 1.14.1 documentation + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for cpymad.madx

+"""
+This module defines a convenience layer to access the MAD-X interpreter.
+
+The most interesting class for users is :class:`Madx`.
+"""
+
+from __future__ import absolute_import
+
+from contextlib import contextmanager, suppress
+from functools import wraps
+from itertools import product
+from numbers import Number
+import collections.abc as abc
+import os
+import subprocess
+import sys
+
+import numpy as np
+
+from . import _rpc
+from . import util
+from .stream import AsyncReader, TextCallback
+
+
+__all__ = [
+    'Madx',
+    'ArrayAttribute',
+    'AttrDict',
+    'BaseTypeMap',
+    'Command',
+    'CommandLog',
+    'CommandMap',
+    'Element',
+    'ElementList',
+    'ExpandedElementList',
+    'GlobalElementList',
+    'Metadata',
+    'Sequence',
+    'SequenceMap',
+    'Table',
+    'TableMap',
+    'VarList',
+    'VarParamList',
+    'Version',
+
+    # Data
+    'metadata',
+
+    # Errors:
+    'TwissFailed',
+]
+
+
+
+[docs] +class TwissFailed(RuntimeError): + pass
+ + + +
+[docs] +class Version: + + """Version information struct. """ + + def __init__(self, release, date): + """Store version information.""" + self.release = release + self.date = date + self.info = tuple(map(int, release.split('.'))) + + def __repr__(self): + """Show nice version string to user.""" + return "MAD-X {} ({})".format(self.release, self.date)
+ + + +class NullContext: + __enter__ = __exit__ = lambda *_: None + + +
+[docs] +class CommandLog: + + """Log MAD-X command history to a text file.""" + +
+[docs] + @classmethod + def create(cls, filename, prefix='', suffix='\n'): + """Create CommandLog from filename (overwrite/create).""" + return cls(open(filename, 'wt'), prefix, suffix, own=True)
+ + + def __init__(self, file, prefix='', suffix='\n', own=False): + """Create CommandLog from file instance.""" + self._file = file + self._prefix = prefix + self._suffix = suffix + self._own = own + + def __del__(self): + self.close() + +
+[docs] + def __call__(self, command: str): + """Log a single history line and flush to file immediately.""" + self._file.write(self._prefix + command + self._suffix) + self._file.flush()
+ + +
+[docs] + def close(self): + if self._own: + self._file.close()
+
+ + + +
+[docs] +class Madx: + + """ + Python interface for a MAD-X process. + + For usage instructions, please refer to: + + https://hibtc.github.io/cpymad/getting-started + + Communicates with a MAD-X interpreter in a background process. + + The state of the MAD-X interpreter is controlled by feeding textual MAD-X + commands to the interpreter. + + The state of the MAD-X interpreter is accessed by directly reading the + values from the C variables in-memory and sending the results pickled back + over the pipe. + + Data attributes: + + :ivar command: Mapping of all MAD-X commands. + :ivar globals: Mapping of global MAD-X variables. + :ivar elements: Mapping of globally visible elements. + :ivar base_types: Mapping of MAD-X base elements. + :ivar sequence: Mapping of all sequences in memory. + :ivar table: Mapping of all tables in memory. + """ + + def __init__(self, libmadx=None, command_log=None, stdout=None, + history=None, prompt=None, **Popen_args): + """ + Initialize instance variables. + + :param libmadx: :mod:`libmadx` compatible object + :param command_log: Log all MAD-X commands issued via cpymad. + :param stdout: file descriptor, file object or callable + :param str prompt: prefix for a new :class:`CommandLog` + :param Popen_args: Additional parameters to ``subprocess.Popen`` + + If ``libmadx`` is NOT specified, a new MAD-X interpreter will + automatically be spawned. This is what you will mostly want to do. In + this case any additional keyword arguments are forwarded to + ``subprocess.Popen``. The most prominent use case for this is to + redirect or suppress the MAD-X standard I/O:: + + m = Madx(stdout=False) + + with open('madx_output.log', 'w') as f: + m = Madx(stdout=f) + + m = Madx(stdout=sys.stdout) + """ + if isinstance(command_log, str): + # open new history file: + command_log = CommandLog.create(command_log, prompt or '') + elif hasattr(command_log, 'write'): + # assuming stream already opened: + command_log = CommandLog(command_log, prompt or '') + elif prompt is not None: + assert command_log is None, \ + "Passing fully constructed `command_log` instances is " \ + "incompatible with parameter `prompt`." + command_log = CommandLog(sys.stdout, prompt) + self.reader = NullContext() + # start libmadx subprocess + if libmadx is None: + if stdout is None: + stdout = sys.stdout + if hasattr(stdout, 'write'): + # Detect if stdout is attached to a jupyter notebook: + cls = getattr(stdout, '__class__', type(None)) + qualname = cls.__module__ + '.' + cls.__name__ + if qualname == 'ipykernel.iostream.OutStream': + # In that case we want to behave the same way as `print` + # (i.e. log to the notebook not to the terminal). On + # linux, python>=3.7 within notebooks 6.4 `sys.stdout` has + # a valid sys.stdout.fileno(), but writing to it outputs + # to the terminal, so we have to use `sys.stdout.write()`: + stdout = stdout.write + else: + # Otherwise, let the OS handle MAD-X output, by passing + # the file descriptor if available. This is preferred + # because it is faster, and also because it means that the + # MAD-X output is directly connected to the output as + # binary stream, without potential recoding errors. + try: + stdout = stdout.fileno() + except (AttributeError, OSError, IOError): + stdout = stdout.write + # Check for text stream to prevent TypeError (see #110). + if callable(stdout): + try: + stdout(b'') + except (TypeError, ValueError): + stdout = TextCallback(stdout) + Popen_args['stdout'] = \ + subprocess.PIPE if callable(stdout) else stdout + # stdin=None leads to an error on windows when STDIN is broken. + # Therefore, we need set stdin=os.devnull by passing stdin=False: + Popen_args.setdefault('stdin', False) + Popen_args.setdefault('bufsize', 0) + self._service, self._process = \ + _rpc.LibMadxClient.spawn_subprocess(**Popen_args) + libmadx = self._service.libmadx + if callable(stdout): + self.reader = AsyncReader(self._process.stdout, stdout) + if not libmadx.is_started(): + with self.reader: + libmadx.start() + # init instance variables: + self.history = history + self._libmadx = libmadx + self._command_log = command_log + self.command = CommandMap(self) + self.globals = VarList(self) + self.elements = GlobalElementList(self) + self.base_types = BaseTypeMap(self) + self.sequence = SequenceMap(self) + self.beams = BeamMap(self) + self.table = TableMap(self._libmadx) + self._enter_count = 0 + self._batch = None + + def __bool__(self): + """Check if MAD-X is up and running.""" + try: + libmadx = self._libmadx + # short-circuit implemented in minrpc.client.RemoteModule: + return bool(libmadx) and libmadx.is_started() + except (_rpc.RemoteProcessClosed, _rpc.RemoteProcessCrashed): + return False + + def __getattr__(self, name): + """Resolve missing attributes as commands.""" + try: + return getattr(self.command, name) + except AttributeError: + raise AttributeError( + 'Unknown attribute or command: {!r}'.format(name)) from None + +
+[docs] + def quit(self): + """Shutdown MAD-X interpreter and stop process.""" + with suppress(AttributeError, RuntimeError): + self.input('quit;') + with suppress(AttributeError, RuntimeError): + self._service.close() + with suppress(AttributeError, RuntimeError): + self._process.wait() + if hasattr(self._command_log, 'close'): + self._command_log.close() + self._command_log = None
+ + + exit = quit + + def __enter__(self): + """Use as context manager to ensure that MAD-X is terminated.""" + return self + + def __exit__(self, *exc_info): + self.quit() + + # Data descriptors: + + @property + def version(self) -> Version: + """Get the MAD-X version.""" + return Version(self._libmadx.get_version_number(), + self._libmadx.get_version_date()) + + @property + def options(self) -> "Command": + """Values of current options.""" + return Command(self, self._libmadx.get_options()) + + @property + def beam(self): + """Get the current default beam.""" + return Command(self._madx, self._libmadx.get_current_beam()) + + # Methods: + +
+[docs] + def input(self, text: str) -> bool: + """ + Run any textual MAD-X input. + + :param text: command text + :returns: whether the command has completed without error + """ + text = text.rstrip(';') + ';' + if self._enter_count > 0: + self._batch.append(text) + return True + # write to history before performing the input, so if MAD-X + # crashes, it is easier to see, where it happened: + if self.history is not None: + self.history.append(text) + if self._command_log: + self._command_log(text) + try: + with self.reader: + return self._libmadx.input(text) + except _rpc.RemoteProcessCrashed: + raise RuntimeError("MAD-X has stopped working!") from None
+ + + __call__ = input + +
+[docs] + @contextmanager + def batch(self): + """ + Collect input and send in a single batch when leaving context. This is + useful to improve performance when issueing many related commands in + quick succession. + + Example: + + >>> with madx.batch(): + ... madx.globals.update(optic) + """ + self._enter_count += 1 + if self._enter_count == 1: + self._batch = [] + try: + yield None + finally: + self._enter_count -= 1 + if self._enter_count == 0: + self.input("\n".join(self._batch)) + self._batch = None
+ + +
+[docs] + def expr_vars(self, expr: str) -> list: + """Find all variable names used in an expression. This does *not* + include element attribute nor function names.""" + if not isinstance(expr, str): + return [] + return [v for v in util.expr_symbols(expr) + if util.is_identifier(v) + and v in self.globals + and self._libmadx.get_var_type(v) > 0]
+ + +
+[docs] + def chdir(self, dir: str) -> util.ChangeDirectory: + """ + Change the directory of the MAD-X process (not the current python process). + + :param dir: new path name + :returns: a context manager that can change the directory back + + It can be used as context manager for temporary directory changes:: + + with madx.chdir('/x/y/z'): + madx.call('file.x') + madx.call('file.y') + """ + return util.ChangeDirectory(dir, self._chdir, self._libmadx.getcwd)
+ + + # Turns `dir` into a keyword argument for CHDIR command: + def _chdir(self, dir: str): + return self.command.chdir(dir=dir) + +
+[docs] + def call(self, file: str, chdir: bool = False): + """ + CALL a file in the MAD-X interpreter. + + :param file: file name with path + :param chdir: temporarily change directory in MAD-X process + """ + if chdir: + dirname, basename = os.path.split(file) + with self.chdir(dirname): + self.command.call(file=basename) + else: + self.command.call(file=file)
+ + +
+[docs] + def twiss(self, **kwargs): + """ + Run TWISS. + + :param str sequence: name of sequence + :param kwargs: keyword arguments for the MAD-X command + + Note that the kwargs overwrite any arguments in twiss_init. + """ + if not self.command.twiss(**kwargs): + raise TwissFailed() + table = kwargs.get('table', 'twiss') + if 'file' not in kwargs: + self._libmadx.apply_table_selections(table) + return self.table[table]
+ + +
+[docs] + def survey(self, **kwargs): + """ + Run SURVEY. + + :param str sequence: name of sequence + :param kwargs: keyword arguments for the MAD-X command + """ + self.command.survey(**kwargs) + table = kwargs.get('table', 'survey') + if 'file' not in kwargs: + self._libmadx.apply_table_selections(table) + return self.table[table]
+ + +
+[docs] + def use(self, sequence: str = None, range: str = None, **kwargs): + """ + Run USE to expand a sequence. + + :param str sequence: sequence name + :returns: name of active sequence + """ + self.command.use(sequence=sequence, range=range, **kwargs)
+ + +
+[docs] + def sectormap(self, elems, **kwargs): + """ + Compute the 7D transfer maps (the 7'th column accounting for KICKs) + for the given elements and return as Nx7x7 array. + """ + self.command.select(flag='sectormap', clear=True) + for elem in elems: + self.command.select(flag='sectormap', range=elem) + with util.temp_filename() as sectorfile: + self.twiss(sectormap=True, sectorfile=sectorfile, **kwargs) + return self.sectortable(kwargs.get('sectortable', 'sectortable'))
+ + +
+[docs] + def sectortable(self, name='sectortable'): + """Read sectormap + kicks from memory and return as Nx7x7 array.""" + tab = self.table[name] + cnt = len(tab['r11']) + return np.vstack(( + np.hstack((tab.rmat(slice(None)), + tab.kvec(slice(None)).reshape((6, 1, -1)))), + np.hstack((np.zeros((1, 6, cnt)), + np.ones((1, 1, cnt)))), + )).transpose((2, 0, 1))
+ + +
+[docs] + def sectortable2(self, name='sectortable'): + """Read 2nd order sectormap T_ijk, return as Nx6x6x6 array.""" + tab = self.table[name] + return tab.tmat(slice(None)).transpose((3, 0, 1, 2))
+ + +
+[docs] + def match(self, + constraints=[], + vary=[], + weight=None, + method=('lmdif', {}), + knobfile=None, + limits=None, + **kwargs) -> dict: + """ + Perform a simple MATCH operation. + + For more advanced cases, you should issue the commands manually. + + :param list constraints: constraints to pose during matching + :param list vary: knob names to be varied + :param dict weight: weights for matching parameters + :param str knobfile: file to write the knob values to + :param dict kwargs: keyword arguments for the MAD-X command + :returns: final knob values + + Example: + + >>> from cpymad.madx import Madx + >>> from cpymad.types import Constraint + >>> m = Madx() + >>> m.call('sequence.madx') + >>> twiss_init = {'betx': 1, 'bety': 2, 'alfx': 3, 'alfy': 4} + >>> m.match( + ... sequence='mysequence', + ... constraints=[ + ... dict(range='marker1', + ... betx=Constraint(min=1, max=3), + ... bety=2) + ... ], + ... vary=['qp1->k1', + ... 'qp2->k1'], + ... **twiss_init, + ... ) + >>> tw = m.twiss('mysequence', **twiss_init) + """ + command = self.command + # MATCH (=start) + command.match(**kwargs) + if weight: + command.weight(**weight) + for c in constraints: + command.constraint(**c) + limits = limits or {} + for v in vary: + command.vary(name=v, **limits.get(v, {})) + command[method[0]](**method[1]) + command.endmatch(knobfile=knobfile) + return dict((knob, self.eval(knob)) for knob in vary)
+ + +
+[docs] + def verbose(self, switch=True): + """Turn verbose output on/off.""" + self.command.option(echo=switch, warn=switch, info=switch)
+ + +
+[docs] + def eval(self, expr) -> float: + """ + Evaluates an expression and returns the result as double. + + :param str expr: expression to evaluate. + :returns: numeric value of the expression + """ + if isinstance(expr, (float, int, bool)): + return expr + if isinstance(expr, (list, ArrayAttribute)): + return [self.eval(x) for x in expr] + return self._libmadx.eval(expr)
+
+ + + +class _Mapping(abc.Mapping): + + def __repr__(self): + """String representation of a custom mapping object.""" + return str(dict(self)) + + def __str__(self): + return repr(self) + + def __getattr__(self, key): + key = util._fix_name(key) + try: + return self[key] + except KeyError: + raise AttributeError(self._missing(key)) from None + + def _missing(self, key): + return key + + +class _MutableMapping(_Mapping, abc.MutableMapping): + + __slots__ = () + + def __setattr__(self, key, val): + if key in self.__slots__: + object.__setattr__(self, key, val) + else: + key = util._fix_name(key) + self[key] = val + + def __delattr__(self, key): + if key in self.__slots__: + object.__delattr__(self, key) + else: + key = util._fix_name(key) + del self[key] + + +
+[docs] +class AttrDict(_Mapping): + + def __init__(self, data): + if not isinstance(data, abc.Mapping): + data = dict(data) + self._data = data + + def __iter__(self): + return iter(self._data) + + def __getitem__(self, name): + return self._data[name.lower()] + + def __contains__(self, name): + return name.lower() in self._data + + def __len__(self): + return len(self._data) + +
+[docs] + def update(self, *args, **kwargs): + self._data.update(*args, **kwargs)
+
+ + + +
+[docs] +class SequenceMap(_Mapping): + + """Mapping of all sequences (:class:`Sequence`) in memory.""" + + def __init__(self, madx): + self._madx = madx + self._libmadx = madx._libmadx + + def __iter__(self): + return iter(self._libmadx.get_sequence_names()) + + def __getitem__(self, name): + try: + return Sequence(name, self._madx) + except ValueError: + raise KeyError("Unknown sequence: {!r}".format(name)) from None + + def __contains__(self, name): + return self._libmadx.sequence_exists(name.lower()) + + def __len__(self): + return self._libmadx.get_sequence_count() + +
+[docs] + def __call__(self): + """The active :class:`Sequence` (may be None).""" + try: + return Sequence(self._libmadx.get_active_sequence_name(), + self._madx, _check=False) + except RuntimeError: + return None
+
+ + + +class BeamMap(_Mapping): + """Mapping of all beams (:class:`Beam`) in memory.""" + + def __init__(self, madx): + self._madx = madx + self._libmadx = madx._libmadx + + def __iter__(self): + return iter(self._libmadx.get_beam_names()) + + def __getitem__(self, name): + try: + return Command(self._madx, self._libmadx.get_beam(name)) + except ValueError: + raise KeyError("Unknown beam: {!r}".format(name)) from None + + def __contains__(self, name): + return name in self._libmadx.get_beam_names() + + def __len__(self): + return len(self._libmadx.get_beam_names()) + + +
+[docs] +class TableMap(_Mapping): + + """Mapping of all tables (:class:`Table`) in memory.""" + + def __init__(self, libmadx): + self._libmadx = libmadx + + def __iter__(self): + return iter(self._libmadx.get_table_names()) + + def __getitem__(self, name): + try: + return Table(name, self._libmadx) + except ValueError: + raise KeyError("Table not found {!r}".format(name)) from None + + def __contains__(self, name): + return self._libmadx.table_exists(name.lower()) + + def __len__(self): + return self._libmadx.get_table_count()
+ + + +
+[docs] +class Sequence: + + """ + MAD-X sequence representation. + """ + + def __init__(self, name, madx, _check=True): + """Store sequence name.""" + self._name = name = name.lower() + self._madx = madx + self._libmadx = madx._libmadx + if _check and not self._libmadx.sequence_exists(name): + raise ValueError("Invalid sequence: {!r}".format(name)) + + def __str__(self): + """String representation.""" + return "<{}: {}>".format(self.__class__.__name__, self._name) + + def __eq__(self, other): + """Comparison by sequence name.""" + if isinstance(other, Sequence): + other = other.name + return self.name == other + + __repr__ = __str__ + + @property + def name(self): + """Get the name of the sequence.""" + return self._name + + @property + def beam(self): + """Get the beam dictionary associated to the sequence.""" + return Command(self._madx, self._libmadx.get_sequence_beam(self._name)) + + @beam.setter + def beam(self, beam): + self._madx.command.beam(sequence=self._name, **beam) + + @property + def twiss_table(self): + """Get the TWISS results from the last calculation.""" + return Table(self.twiss_table_name, self._libmadx) + + @property + def twiss_table_name(self): + """Get the name of the table with the TWISS results.""" + return self._libmadx.get_sequence_twiss_table_name(self._name) + + @property + def elements(self): + """Get list of elements.""" + return ElementList(self._madx, self._name) + + def _get_length_parameter(self): + """Return sequence length in the declaration""" + return self._libmadx.get_sequence_length(self._name) + + @property + def length(self): + """Return sequence length in the declaration""" + return self._get_length_parameter().value + + @property + def expanded_elements(self): + """List of elements including implicit drifts.""" + return ExpandedElementList(self._madx, self._name) + +
+[docs] + def element_names(self): + return self._libmadx.get_element_names(self._name)
+ + +
+[docs] + def element_positions(self): + return self._libmadx.get_element_positions(self._name)
+ + +
+[docs] + def expanded_element_names(self): + return self._libmadx.get_expanded_element_names(self._name)
+ + +
+[docs] + def expanded_element_positions(self): + return self._libmadx.get_expanded_element_positions(self._name)
+ + + @property + def is_expanded(self): + """Check if sequence is already expanded.""" + return self._libmadx.is_sequence_expanded(self._name) + + @property + def has_beam(self): + """Check if the sequence has an associated beam.""" + try: + self.beam + return True + except RuntimeError: + return False + +
+[docs] + def expand(self): + """Expand sequence (needed for expanded_elements).""" + if self.is_expanded: + return + if not self.has_beam: + self.beam = {} + self.use()
+ + +
+[docs] + def use(self): + """Set this sequence as active.""" + self._madx.use(self._name)
+
+ + + +
+[docs] +class Command(_MutableMapping): + + """ + Raw python interface to issue and view MAD-X commands. Usage example: + + >>> madx.command.twiss(sequence='LEBT') + >>> madx.command.title('A meaningful phrase') + >>> madx.command.twiss.betx + 0.0 + """ + + __slots__ = ('_madx', '_data', '_attr', 'cmdpar') + + def __init__(self, madx, data): + self._madx = madx + self._data = data.pop('data') # command parameters + self._attr = data # further attributes + self.cmdpar = AttrDict(self._data) + + def __repr__(self): + """String representation as MAD-X statement.""" + overrides = {k: v.value for k, v in self._data.items() if v.inform} + if self._attr.get('parent', self.name) == self.name: + return util.format_command(self, **overrides) + return self.name + ': ' + util.format_command(self.parent, **overrides) + + def __iter__(self): + return iter(self._data) + + def __getattr__(self, name): + try: + return self._attr[name] + except KeyError: + return _Mapping.__getattr__(self, name) + + def __getitem__(self, name): + try: + return self._data[name.lower()].value + except KeyError: + raise KeyError("Unknown command: {!r}".format(name)) from None + + def __delitem__(self, name): + raise NotImplementedError() + + def __setitem__(self, name, value): + self(**{name: value}) + + def __contains__(self, name): + return name.lower() in self._data + + def __len__(self): + return len(self._data) + +
+[docs] + def __call__(*args, **kwargs): + """Perform a single MAD-X command.""" + self, args = args[0], args[1:] + if self.name == 'beam' and self.sequence: + kwargs.setdefault('sequence', self.sequence) + return self._madx.input(util.format_command(self, *args, **kwargs))
+ + +
+[docs] + def clone(*args, **kwargs): + """ + Clone this command, assign the given name. This corresponds to the + colon syntax in MAD-X, e.g.:: + + madx.command.quadrupole.clone('qp', at=2, l=1) + + translates to the MAD-X command:: + + qp: quadrupole, at=2, l=1; + """ + self, name, args = args[0], args[1], args[2:] + self._madx.input( + name + ': ' + util.format_command(self, *args, **kwargs)) + return self._madx.elements.get(name)
+ + + def _missing(self, key): + return ('Unknown attribute {!r} for {!r} command!' + .format(key, self.name)) + + @property + def defs(self): + return AttrDict({ + key: par.definition + for key, par in self.cmdpar.items() + })
+ + + +
+[docs] +class Element(Command): + + def __getitem__(self, name): + value = Command.__getitem__(self, name) + if isinstance(value, list): + return ArrayAttribute(self, value, name) + return value + + def __delitem__(self, name): + if self.parent is self: + raise NotImplementedError( + "Can't delete attribute {!r} in base element {!r}" + .format(self.name, name)) + self[name] = self.parent[name] + + @property + def parent(self): + name = self._attr['parent'] + return (self if self.name == name else self._madx.elements[name]) + + @property + def base_type(self): + name = self._attr['base_type'] + return (self if self.name == name else self._madx.elements[name])
+ + + +
+[docs] +class ArrayAttribute(abc.Sequence): + + def __init__(self, element, values, name): + self._element = element + self._values = values + self._name = name + + def __getitem__(self, index): + return self._values[index] + + def __setitem__(self, index, value): + if index >= len(self._values): + self._values.extend([0] * (index - len(self._values) + 1)) + self._values[index] = value + self._element[self._name] = self._values + + def __eq__(self, other): + return self._values == other + + def __lt__(self, other): + return self._values < other + + def __le__(self, other): + return self._values <= other + + def __gt__(self, other): + return self._values > other + + def __ge__(self, other): + return self._values >= other + + def __iter__(self): + return iter(self._values) + + def __len__(self): + return len(self._values) + + def __repr__(self): + return str(self._values) + + def __str__(self): + return str(self._values)
+ + + +class BaseElementList: + + """ + Immutable list of beam line elements. + + Each element is a dictionary containing its properties. + """ + + def __contains__(self, element): + """Check if sequence contains element with specified name.""" + try: + self.index(element) + return True + except ValueError: + return False + + def __getitem__(self, index): + """Return element with specified index.""" + if isinstance(index, str): + # allow element names to be passed for convenience: + try: + index = self.index(index) + except ValueError: + raise KeyError( + "Unknown element: {!r}".format(index)) from None + # _get_element accepts indices in the range [0, len-1]. The following + # extends the accepted range to [-len, len+1], just like for lists: + _len = len(self) + if index < -_len or index >= _len: + raise IndexError("Index out of bounds: {}, length is: {}" + .format(index, _len)) + if index < 0: + index += _len + data = self._get_element(index) + data['index'] = index + if data['base_type'] == 'sequence': + return Sequence(data['name'], self._madx) + else: + return Element(self._madx, data) + + def __len__(self): + """Get number of elements.""" + return self._get_element_count() + + def index(self, name): + """ + Find index of element with specified name. + + :raises ValueError: if the element is not found + """ + if len(self) == 0: + raise ValueError('Empty element list.') + name = name.lower() + if name == '#s': + return 0 + elif name == '#e': + return len(self) - 1 + index = self._get_element_index(name) + if index == -1: + raise ValueError("Element not in list: {!r}".format(name)) + return index + + +
+[docs] +class ElementList(BaseElementList, abc.Sequence): + + def __init__(self, madx, sequence_name): + """ + Initialize instance. + """ + self._madx = madx + self._libmadx = madx._libmadx + self._sequence_name = sequence_name + +
+[docs] + def at(self, pos): + """Find the element at specified S position.""" + return self._get_element_at(pos)
+ + + def _get_element(self, element_index): + return self._libmadx.get_element(self._sequence_name, element_index) + + def _get_element_count(self): + return self._libmadx.get_element_count(self._sequence_name) + + def _get_element_index(self, element_name): + return self._libmadx.get_element_index(self._sequence_name, element_name) + + def _get_element_at(self, pos): + return self._libmadx.get_element_index_by_position(self._sequence_name, pos) + + def __repr__(self): + return '[{}]'.format(', '.join( + self._libmadx.get_element_names(self._sequence_name)))
+ + + +
+[docs] +class ExpandedElementList(ElementList): + + def _get_element(self, element_index): + return self._libmadx.get_expanded_element( + self._sequence_name, element_index) + + def _get_element_count(self): + return self._libmadx.get_expanded_element_count(self._sequence_name) + + def _get_element_index(self, element_name): + return self._libmadx.get_expanded_element_index( + self._sequence_name, element_name) + + def _get_element_at(self, pos): + return self._libmadx.get_expanded_element_index_by_position( + self._sequence_name, pos) + + def __repr__(self): + return '[{}]'.format(', '.join( + self._libmadx.get_expanded_element_names(self._sequence_name)))
+ + + +
+[docs] +class GlobalElementList(BaseElementList, _Mapping): + + """Mapping of the global elements in MAD-X.""" + + def __init__(self, madx): + self._madx = madx + self._libmadx = libmadx = madx._libmadx + self._get_element = libmadx.get_global_element + self._get_element_count = libmadx.get_global_element_count + self._get_element_index = libmadx.get_global_element_index + + def __iter__(self): + return iter(map(self._libmadx.get_global_element_name, range(len(self)))) + + def __repr__(self): + return '{{{}}}'.format(', '.join(self))
+ + + +def cached(func): + @wraps(func) + def get(self, *args): + try: + val = self._cache[args] + except KeyError: + val = self._cache[args] = func(self, *args) + return val + return get + + +
+[docs] +class CommandMap(_Mapping): + + def __init__(self, madx): + self._madx = madx + self._names = madx._libmadx.get_defined_command_names() + self._cache = {} + + def __iter__(self): + return iter(self._names) + + @cached + def __getitem__(self, name): + madx = self._madx + try: + data = madx._libmadx.get_defined_command(name) + except ValueError: + raise KeyError( + "Not a MAD-X command name: {!r}".format(name)) from None + return Command(madx, data) + + def __contains__(self, name): + return name.lower() in self._names + + def __len__(self): + return len(self._names) + + def __repr__(self): + return '{{{}}}'.format(', '.join(self))
+ + + +
+[docs] +class BaseTypeMap(CommandMap): + + def __init__(self, madx): + self._madx = madx + self._names = madx._libmadx.get_base_type_names() + self._cache = {} + + @cached + def __getitem__(self, name): + return self._madx.elements[name]
+ + + +
+[docs] +class Table(_Mapping): + + """ + MAD-X twiss table. + + Loads individual columns from the MAD-X process lazily only on demand. + """ + + def __init__(self, name, libmadx, *, columns='all', rows='all', _check=True): + """Just store the table name for now.""" + self._name = name = name.lower() + self._libmadx = libmadx + self._columns = columns + self._rows = rows + self._cache = {} + if _check and not libmadx.table_exists(name): + raise ValueError("Invalid table: {!r}".format(name)) + +
+[docs] + def selection(self, columns='selected', rows=None) -> "Table": + """ + Return a Table object that only retrieves the specified rows and + columns by default. + + :param columns: list of names or 'all' or 'selected' + :param rows: list of indices or 'all' or 'selected' + + If only ``columns`` is given, ``rows`` defaults to 'selected' + unless ``columns`` is set to 'all' in which case it also defaults + to 'all'. + """ + if rows is None: + rows = columns if isinstance(columns, str) else 'selected' + return Table( + self._name, self._libmadx, + columns=columns, rows=rows, + _check=False)
+ + + def __getitem__(self, column): + """Get the column data.""" + if isinstance(column, int): + return self.row(column) + try: + return self._cache[column.lower()] + except KeyError: + return self.reload(column) + + def __iter__(self): + """Iterate over all column names.""" + return iter(self.col_names()) + + def __len__(self): + """Return number of columns.""" + return self._libmadx.get_table_column_count(self._name, self._columns) + + def __repr__(self): + return "<{} {!r}: {{{}}}>".format( + self.__class__.__name__, self._name, ', '.join(self)) + + @property + def summary(self): + """Get the table summary.""" + return AttrDict(self._libmadx.get_table_summary(self._name)) + +
+[docs] + def selected_columns(self): + """Get list of column names that were selected by the user (can be + empty).""" + return self._libmadx.get_table_column_names(self._name, selected=True)
+ + +
+[docs] + def selected_rows(self): + """Get list of row indices that were selected by the user (can be + empty).""" + return self._libmadx.get_table_selected_rows(self._name)
+ + +
+[docs] + def col_names(self, columns=None): + """Get list of all columns in the table.""" + if columns is None: + columns = self._columns + if isinstance(columns, str): + return self._libmadx.get_table_column_names( + self._name, selected=columns == 'selected') + else: + return columns
+ + +
+[docs] + def row_names(self, rows=None): + """ + Get table row names. + + WARNING: using ``row_names`` after calling ``USE`` (before recomputing + the table) is unsafe and may lead to segmentation faults or incorrect + results. + """ + if rows is None: + rows = self._rows + return self._libmadx.get_table_row_names(self._name, rows)
+ + + @property + def range(self): + """Get the element names (first, last) of the valid range.""" + row_count = self._libmadx.get_table_row_count(self._name) + range = (0, row_count-1) + return tuple(self._libmadx.get_table_row_names(self._name, range)) + +
+[docs] + def reload(self, column): + """Reload (recache) one column from MAD-X.""" + try: + data = self._cache[column.lower()] = self.column(column) + except ValueError: + raise KeyError( + "Unknown table column: {!r}".format(column)) from None + return data
+ + +
+[docs] + def column(self, column: str, rows=None) -> np.ndarray: + """Retrieve all specified rows in the given column of the table. + + :param column: column name + :param rows: a list of row indices or ``'all'`` or ``'selected'`` + """ + if rows is None: + rows = self._rows + return self._libmadx.get_table_column(self._name, column.lower(), rows)
+ + +
+[docs] + def row(self, index, columns=None): + """Retrieve one row from the table.""" + if columns is None: + columns = self._columns + return AttrDict(self._libmadx.get_table_row(self._name, index, columns))
+ + +
+[docs] + def copy(self, columns=None, rows=None) -> dict: + """ + Return a frozen table with the desired columns. + + :param list columns: column names or ``None`` for all columns. + :returns: column data + :raises ValueError: if the table name is invalid + """ + if rows is None: + rows = columns if isinstance(columns, str) else self._rows + if rows == self._rows: + table = self + else: + table = self.select(rows=rows) + return {column: table[column] for column in self.col_names(columns)}
+ + +
+[docs] + def dframe(self, columns=None, rows=None, *, index=None): + """ + Return table as ``pandas.DataFrame``. + + :param columns: column names or 'all' or 'selected' + :param rows: row indices or 'all' or 'selected' + :param str index: column name or sequence to be used as index, or + ``None`` for using the ``row_names`` + :returns: column data as ``pandas.DataFrame`` + :raises ValueError: if the table name is invalid + + WARNING: using ``index=None`` is unsafe after calling ``USE``. + In this case, please manually specify another column to be used, + e.g. ``index="name"``. + """ + import pandas as pd + if index is None: + index = self.row_names(rows) + elif isinstance(index, str): + index = util.remove_count_suffix_from_name(self[index]) + else: + index = index + return pd.DataFrame(self.copy(columns, rows), index=index)
+ + +
+[docs] + def getmat(self, name, idx, *dim): + s = () if isinstance(idx, int) else (-1,) + return np.array([ + self[name + ''.join(str(i+1) for i in ijk)][idx] + for ijk in product(*map(range, dim)) + ]).reshape(dim+s)
+ + +
+[docs] + def kvec(self, idx, dim=6): + """Kicks.""" + return self.getmat('k', idx, dim)
+ + +
+[docs] + def rmat(self, idx, dim=6): + """Sectormap.""" + return self.getmat('r', idx, dim, dim)
+ + +
+[docs] + def tmat(self, idx, dim=6): + """2nd order sectormap.""" + return self.getmat('t', idx, dim, dim, dim)
+ + +
+[docs] + def sigmat(self, idx, dim=6): + """Beam matrix.""" + return self.getmat('sig', idx, dim, dim)
+
+ + + +
+[docs] +class VarList(_MutableMapping): + + """Mapping of global MAD-X variables.""" + + __slots__ = ('_madx', 'cmdpar') + + def __init__(self, madx): + self._madx = madx + self.cmdpar = VarParamList(madx) + + def __repr__(self): + return str({ + key: par.definition + for key, par in self.cmdpar.items() + if par.inform + }) + + def __getitem__(self, name): + return self.cmdpar[name].value + + def __setitem__(self, name, value): + try: + var = self.cmdpar[name] + v, e = var.value, var.expr + except (TypeError, KeyError): + v, e = None, None + if isinstance(value, Number): + if value != v or e: + self._madx.input(name + ' = ' + str(value) + ';') + else: + if value != e: + self._madx.input(name + ' := ' + str(value) + ';') + + def __delitem__(self, name): + raise NotImplementedError("Can't erase a MAD-X global.") + + def __iter__(self): + """Iterate names of all non-constant globals.""" + return iter(self.cmdpar) + + def __len__(self): + return len(self.cmdpar) + + @property + def defs(self): + return AttrDict({ + key: par.definition + for key, par in self.cmdpar.items() + })
+ + + +
+[docs] +class VarParamList(_Mapping): + + """Mapping of global MAD-X variables.""" + + __slots__ = ('_madx', '_libmadx') + + def __init__(self, madx): + self._madx = madx + self._libmadx = madx._libmadx + + def __getitem__(self, name): + return self._libmadx.get_var(name.lower()) + + def __iter__(self): + """Iterate names of all non-constant globals.""" + return iter(self._libmadx.get_globals()) + + def __len__(self): + return self._libmadx.num_globals()
+ + + +
+[docs] +class Metadata: + + """MAD-X metadata (license info, etc).""" + + __title__ = u'MAD-X' + + @property + def __version__(self): + return self._get_libmadx().get_version_number() + + __summary__ = ( + u'MAD is a project with a long history, aiming to be at the ' + u'forefront of computational physics in the field of particle ' + u'accelerator design and simulation. The MAD scripting language ' + u'is de facto the standard to describe particle accelerators, ' + u'simulate beam dynamics and optimize beam optics.' + ) + + __uri__ = u'http://madx.web.cern.ch/madx/' + + __credits__ = ( + u'MAD-X is developed at CERN and has many contributors. ' + u'For more information see:\n' + u'\n' + u'http://madx.web.cern.ch/madx/www/contributors.html' + ) + + + + + _libmadx = None + + def _get_libmadx(self): + if not self._libmadx: + # Need to disable stdin to avoid deadlock that occurs if starting + # with closed or invalid stdin: + svc, proc = _rpc.LibMadxClient.spawn_subprocess(stdin=False) + self._libmadx = svc.libmadx + return self._libmadx
+ + + +metadata = Metadata() +
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/cpymad/types.html b/_modules/cpymad/types.html new file mode 100644 index 00000000..10eb420b --- /dev/null +++ b/_modules/cpymad/types.html @@ -0,0 +1,229 @@ + + + + + + cpymad.types — cpymad 1.14.1 documentation + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for cpymad.types

+"""
+Python type analogues for MAD-X data structures.
+"""
+
+from collections import namedtuple
+
+__all__ = [
+    'Constraint',
+    'Parameter',
+    'Range',
+
+    'AlignError',
+    'FieldError',
+    'PhaseError',
+
+    # constants:
+    'PARAM_TYPE_LOGICAL',
+    'PARAM_TYPE_INTEGER',
+    'PARAM_TYPE_DOUBLE',
+    'PARAM_TYPE_STRING',
+    'PARAM_TYPE_CONSTRAINT',
+    'PARAM_TYPE_LOGICAL_ARRAY',
+    'PARAM_TYPE_INTEGER_ARRAY',
+    'PARAM_TYPE_DOUBLE_ARRAY',
+    'PARAM_TYPE_STRING_ARRAY',
+    'VAR_TYPE_CONST',
+    'VAR_TYPE_DIRECT',
+    'VAR_TYPE_DEFERRED',
+    'VAR_TYPE_STRING',
+]
+
+
+PARAM_TYPE_LOGICAL       = 0
+PARAM_TYPE_INTEGER       = 1
+PARAM_TYPE_DOUBLE        = 2
+PARAM_TYPE_STRING        = 3
+PARAM_TYPE_CONSTRAINT    = 4
+PARAM_TYPE_LOGICAL_ARRAY = 10
+PARAM_TYPE_INTEGER_ARRAY = 11
+PARAM_TYPE_DOUBLE_ARRAY  = 12
+PARAM_TYPE_STRING_ARRAY  = 13
+
+VAR_TYPE_CONST    = 0
+VAR_TYPE_DIRECT   = 1
+VAR_TYPE_DEFERRED = 2
+VAR_TYPE_STRING   = 3
+
+dtype_to_native = {
+    PARAM_TYPE_LOGICAL: bool,
+    PARAM_TYPE_INTEGER: int,
+    PARAM_TYPE_DOUBLE: float,
+    PARAM_TYPE_STRING: str,
+    PARAM_TYPE_LOGICAL_ARRAY: list,
+    PARAM_TYPE_INTEGER_ARRAY: list,
+    PARAM_TYPE_DOUBLE_ARRAY: list,
+    PARAM_TYPE_STRING_ARRAY: list,
+}
+
+
+Range = namedtuple('Range', ['first', 'last'])
+
+AlignError = namedtuple('AlignError', [
+    'dx', 'dy', 'ds',
+    'dphi', 'dtheta', 'dpsi',
+    'mrex', 'mrey', 'mredx', 'mredy',
+    'arex', 'arey', 'mscalx', 'mscaly',
+])
+FieldError = namedtuple('FieldError', ['dkn', 'dks'])
+PhaseError = namedtuple('PhaseError', ['dpn', 'dps'])
+
+
+
+[docs] +class Parameter: + + __slots__ = ('name', 'value', 'expr', 'dtype', 'inform', 'var_type') + + def __init__(self, name, value, expr, dtype, inform, var_type=None): + self.name = name + self.value = value + self.expr = expr + self.dtype = dtype + self.inform = inform + if var_type is None: + if isinstance(value, str): + var_type = VAR_TYPE_STRING + else: + has_expr = expr and (not isinstance(value, list) or any(expr)) + var_type = VAR_TYPE_DEFERRED if has_expr else VAR_TYPE_DIRECT + self.var_type = var_type + +
+[docs] + def __call__(self): + return self.definition
+ + + @property + def definition(self): + """Return command argument as should be used for MAD-X input to + create an identical element.""" + if isinstance(self.value, list): + return [e or v for v, e in zip(self.value, self.expr)] + else: + return self.expr or self.value + + def __str__(self): + return str(self.definition)
+ + + +
+[docs] +class Constraint: + + """Represents a MAD-X constraint, which has either min/max/both/value.""" + + def __init__(self, val=None, min=None, max=None): + """Just store the values""" + self.val = val + self.min = min + self.max = max
+ +
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/cpymad/util.html b/_modules/cpymad/util.html new file mode 100644 index 00000000..f0a7739c --- /dev/null +++ b/_modules/cpymad/util.html @@ -0,0 +1,671 @@ + + + + + + cpymad.util — cpymad 1.14.1 documentation + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for cpymad.util

+"""
+Utility functions used in other parts of the pymad package.
+"""
+import re
+import os
+import sys
+import tempfile
+from collections import namedtuple
+from contextlib import contextmanager
+from enum import Enum
+from numbers import Number
+import collections.abc as abc
+
+import numpy as np
+
+from cpymad.parsing import Parser
+from cpymad.types import (
+    Range, Constraint,
+    PARAM_TYPE_LOGICAL, PARAM_TYPE_INTEGER,
+    PARAM_TYPE_DOUBLE, PARAM_TYPE_STRING, PARAM_TYPE_CONSTRAINT,
+    PARAM_TYPE_LOGICAL_ARRAY, PARAM_TYPE_INTEGER_ARRAY,
+    PARAM_TYPE_DOUBLE_ARRAY, PARAM_TYPE_STRING_ARRAY)
+
+
+__all__ = [
+    'mad_quote',
+    'is_identifier',
+    'name_from_internal',
+    'name_to_internal',
+    'format_param',
+    'format_cmdpar',
+    'format_command',
+    'check_expression',
+    'temp_filename',
+    'ChangeDirectory',
+]
+
+
+# In CPython 3.6 dicts preserve insertion order (until deleting an element)
+# Although, this is considered an implementation detail that should not be
+# relied upon, we do so anyway:
+ordered_keys = dict.keys if sys.version_info >= (3, 6) else sorted
+
+
+
+[docs] +def mad_quote(value: str) -> str: + """Add quotes to a string value.""" + if '"' not in value: + return '"' + value + '"' + if "'" not in value: + return "'" + value + "'" + # MAD-X doesn't do any unescaping (otherwise I'd simply use `json.dumps`): + raise ValueError("MAD-X unable to parse string with escaped quotes: {!r}" + .format(value))
+ + + +def _fix_name(name: str) -> str: + if name.startswith('_'): + raise AttributeError("Unknown item: {!r}! Did you mean {!r}?" + .format(name, name.strip('_') + '_')) + if name.endswith('_'): + name = name[:-1] + return name + + +# precompile regexes for performance: +re_compile = lambda s: re.compile(s, re.IGNORECASE) +_re_is_identifier = re_compile(r'^[a-z_][a-z0-9_]*$') +_re_symbol = re_compile(r'([a-z_][a-z0-9._]*(->[a-z_][a-z0-9._]*(\[[0-9]+\])?)?)') +_re_element_internal = re_compile(r'^([a-z_][a-z0-9_.$]*)(:\d+)?$') +_re_element_external = re_compile(r'^([a-z_][a-z0-9_.$]*)(\[\d+\])?$') + + +
+[docs] +def is_identifier(name: str) -> bool: + """Check if ``name`` is a valid identifier in MAD-X.""" + return bool(_re_is_identifier.match(name))
+ + + +def expr_symbols(expr: str) -> set: + """ + Return all symbols names used in an expression. + + For now this includes not only variables but also element attributes (e.g. + ``quad->k1``) as well as function names (e.g. ``sin``). + """ + return {m[0] for m in _re_symbol.findall(expr)} + + +
+[docs] +def name_from_internal(element_name: str) -> str: + """ + Convert element name from internal representation to user API. Example: + + >>> name_from_internal("foo:1") + foo + >>> name_from_internal("foo:2") + foo[2] + + Element names are stored with a ":d" suffix by MAD-X internally (data in + node/sequence structs), but users must use the syntax "elem[d]" to access + the corresponding elements. This function is used to transform any string + coming from the user before passing it to MAD-X. + """ + try: + name, count = _re_element_internal.match(element_name).groups() + except AttributeError: + raise ValueError("Not a valid MAD-X element name: {!r}" + .format(element_name)) from None + if count is None or count == ':1': + return name + return name + '[' + count[1:] + ']'
+ + + +def _parse_element_name(element_name: str) -> tuple: + """ + Parse element name from user API. Example: + + >>> _parse_element_name("foo") + (foo, None) + >>> _parse_element_name("foo[2]") + (foo, 2) + + See :func:`name_from_internal' for further information. + """ + try: + name, count = _re_element_external.match(element_name).groups() + except AttributeError: + raise ValueError("Not a valid MAD-X element name: {!r}" + .format(element_name)) from None + if count is None: + return name, None + return name, int(count[1:-1]) + + +
+[docs] +def name_to_internal(element_name: str) -> str: + """ + Convert element name from user API to internal representation. Example: + + >>> name_to_external("foo") + foo:1 + >>> name_to_external("foo[2]") + foo:2 + + See :func:`name_from_internal` for further information. + """ + name, count = _parse_element_name(element_name) + return name + ':' + str(1 if count is None else count)
+ + + +def normalize_range_name(name: str, elems=None) -> str: + """Make element name usable as argument to the RANGE attribute.""" + if isinstance(name, tuple): + return tuple(map(normalize_range_name, name)) + if '/' in name: + return '/'.join(map(normalize_range_name, name.split('/'))) + name = name.lower() + if name.endswith('$end') or name.endswith('$start'): + if elems is None: + return u'#s' if name.endswith('$start') else u'#e' + else: + return u'#s' if elems.index(name) == 0 else u'#e' + return name + + +QUOTED_PARAMS = {'file', 'halofile', 'sectorfile', 'trueprofile' + 'pipefile', 'trackfile', 'summary_file', 'filename', + 'echo', 'title', 'text', 'format', 'dir'} + + +
+[docs] +def format_param(key: str, value) -> str: + """ + Format a single MAD-X command parameter. + + This is the old version that does not use type information from MAD-X. It + is therefore not limited to existing MAD-X commands and attributes, but + also less reliable for producing valid MAD-X statements. + """ + if value is None: + return None + key = _fix_name(str(key).lower()) + if isinstance(value, Constraint): + constr = [] + if value.min is not None: + constr.append(key + '>' + str(value.min)) + if value.max is not None: + constr.append(key + '<' + str(value.max)) + if constr: + return u', '.join(constr) + else: + return key + '=' + str(value.val) + elif isinstance(value, bool): + return key + '=' + str(value).lower() + elif key == 'range' or isinstance(value, Range): + return key + '=' + _format_range(value) + # check for basestrings before abc.Sequence, because every + # string is also a Sequence: + elif isinstance(value, str): + if key in QUOTED_PARAMS: + return key + '=' + mad_quote(value) + else: + # MAD-X parses strings incorrectly, if followed by a boolean. + # E.g.: "beam, sequence=s1, -radiate;" does NOT work! Therefore, + # these values need to be quoted. (NOTE: MAD-X uses lower-case + # internally and the quotes prevent automatic case conversion) + return key + '=' + mad_quote(value.lower()) + # don't quote expressions: + elif isinstance(value, str): + return key + ':=' + value + elif isinstance(value, abc.Sequence): + return key + '={' + ','.join(map(str, value)) + '}' + else: + return key + '=' + str(value)
+ + + +def _format_range(value) -> str: + if isinstance(value, str): + return normalize_range_name(value) + elif isinstance(value, Range): + begin, end = value.first, value.last + else: + begin, end = value + begin, end = normalize_range_name((str(begin), str(end))) + return begin + '/' + end + + +
+[docs] +def format_cmdpar(cmd, key: str, value) -> str: + """ + Format a single MAD-X command parameter. + + :param cmd: A MAD-X Command instance for which an argument is to be formatted + :param key: name of the parameter + :param value: argument value + """ + key = _fix_name(str(key).lower()) + cmdpar = cmd.cmdpar[key] + dtype = cmdpar.dtype + # the empty string was used in earlier versions in place of None: + if value is None or value == '': + return u'' + + # NUMERIC + if dtype == PARAM_TYPE_LOGICAL: + if isinstance(value, bool): return key + '=' + str(value).lower() + if dtype in (PARAM_TYPE_LOGICAL, + PARAM_TYPE_INTEGER, + PARAM_TYPE_DOUBLE, + PARAM_TYPE_CONSTRAINT, + # NOTE: allow passing scalar values to numeric arrays, mainly + # useful because many of the `match` command parameters are + # arrays, but we usually call it with a single sequence and + # would like to treat it similar to the `twiss` command: + PARAM_TYPE_LOGICAL_ARRAY, + PARAM_TYPE_INTEGER_ARRAY, + PARAM_TYPE_DOUBLE_ARRAY): + if isinstance(value, bool): return key + '=' + str(int(value)) + if isinstance(value, Number): return key + '=' + str(value) + if isinstance(value, str): return key + ':=' + value + if dtype == PARAM_TYPE_CONSTRAINT: + if isinstance(value, Constraint): + constr = [] + if value.min is not None: + constr.append(key + '>' + str(value.min)) + if value.max is not None: + constr.append(key + '<' + str(value.max)) + if constr: + return u', '.join(constr) + else: + return key + '=' + str(value.val) + if dtype in (PARAM_TYPE_LOGICAL_ARRAY, + PARAM_TYPE_INTEGER_ARRAY, + PARAM_TYPE_DOUBLE_ARRAY): + if isinstance(value, abc.Sequence): + if all(isinstance(v, Number) for v in value): + return key + '={' + ','.join(map(str, value)) + '}' + else: + return key + ':={' + ','.join(map(str, value)) + '}' + + # STRING + def format_str(value): + if key in QUOTED_PARAMS: + return mad_quote(value) + # NOTE: MAD-X stops parsing the current argument as soon as it + # encounters another parameter name of the current command: + elif is_identifier(value) and value not in cmd: + return value + else: + return mad_quote(value.lower()) + if dtype == PARAM_TYPE_STRING: + if key == 'range' or isinstance(value, Range): + return key + '=' + _format_range(value) + if isinstance(value, str): + return key + '=' + format_str(value) + if dtype == PARAM_TYPE_STRING_ARRAY: + # NOTE: allowing single scalar value to STRING_ARRAY, mainly useful + # for `match`, see above. + if key == 'range' or isinstance(value, Range): + if isinstance(value, list): + return key + '={' + ','.join(map(_format_range, value)) + '}' + return key + '=' + _format_range(value) + if isinstance(value, str): + return key + '=' + format_str(value) + if isinstance(value, abc.Sequence): + return key + '={' + ','.join(map(format_str, value)) + '}' + + raise TypeError('Unexpected command argument type: {}={!r} ({})' + .format(key, value, type(value)))
+ + + +
+[docs] +def format_command(*args, **kwargs) -> str: + """ + Create a MAD-X command from its name and parameter list. + + :param cmd: base command (serves as template for parameter types) + :param args: initial bareword command arguments (including command name!) + :param kwargs: following named command arguments + :returns: command string + + Examples: + + >>> format_command('twiss', sequence='lhc') + 'twiss, sequence=lhc;' + + >>> format_command('option', echo=True) + 'option, echo;' + + >>> format_command('constraint', betx=Constraint(max=3.13)) + 'constraint, betx<3.13;' + """ + cmd, args = args[0], args[1:] + if isinstance(cmd, str): + _args = [cmd] + list(args) + _keys = ordered_keys(kwargs) + _args += [format_param(k, kwargs[k]) for k in _keys] + else: + _args = [cmd.name] + list(args) + _keys = ordered_keys(kwargs) + _args += [format_cmdpar(cmd, k, kwargs[k]) for k in _keys] + return u', '.join(filter(None, _args)) + ';'
+ + + +# validation of MAD-X expressions + +class T(Enum): + """Terminal/token type.""" + WHITESPACE = 0 + LPAREN = 1 + RPAREN = 2 + COMMA = 3 + SIGN = 4 + OPERATOR = 5 + SYMBOL = 6 + NUMBER = 7 + END = 8 + + __str__ = __repr__ = lambda self: self.name + + +class N(Enum): + """Nonterminal symbol.""" + start = 0 + expression = 1 + expression_inner = 2 + expression_tail = 3 + symbol_tail = 4 + argument_list = 5 + argument_tail = 6 + + __str__ = __repr__ = lambda self: self.name + + +grammar = { + N.start: [ + [N.expression, T.END], + ], + N.expression: [ + [T.WHITESPACE, N.expression], + [N.expression_inner], + ], + N.expression_inner: [ + [T.SIGN, N.expression], + [T.LPAREN, N.expression, T.RPAREN, N.expression_tail], + [T.NUMBER, N.expression_tail], + [T.SYMBOL, N.symbol_tail], + ], + N.expression_tail: [ + [T.WHITESPACE, N.expression_tail], + [T.SIGN, N.expression], + [T.OPERATOR, N.expression], + [], + ], + N.symbol_tail: [ + [T.WHITESPACE, N.symbol_tail], + [T.LPAREN, N.argument_list, T.RPAREN, N.expression_tail], + [T.SIGN, N.expression], + [T.OPERATOR, N.expression], + [], + ], + N.argument_list: [ + [T.WHITESPACE, N.argument_list], + [N.expression_inner, N.argument_tail], + [], + ], + N.argument_tail: [ + [T.COMMA, N.argument_list], + [], + ], +} + + +def _regex(expr: str) -> callable: + regex = re.compile(expr) + def match(text, i): + m = regex.match(text[i:]) + return m.end() if m else 0 + return match + + +def _choice(choices: str) -> callable: + def match(text, i): + return 1 if text[i] in choices else 0 + return match + + +_expr_tokens = { + T.WHITESPACE: _choice(' \t'), + T.LPAREN: _choice('('), + T.RPAREN: _choice(')'), + T.COMMA: _choice(','), + T.SIGN: _choice('+-'), + T.OPERATOR: _choice('/*^'), + T.SYMBOL: _regex(r'[a-zA-Z_][a-zA-Z0-9_.]*(->[a-zA-Z_][a-zA-Z0-9_]*)?'), + T.NUMBER: _regex(r'(\d+(\.\d*)?|\.\d+)([eE][+\-]?\d+)?'), +} + +_expr_parser = Parser(T, grammar, N.start) + + +class Token(namedtuple('Token', ['type', 'start', 'length', 'expr'])): + + @property + def text(self): + return self.expr[self.start:self.start + self.length] + + def __repr__(self): + return '{}({!r})'.format(self.type, self.text) + + +def tokenize(tokens, expr: str): + i = 0 + stop = len(expr) + while i < stop: + for toktype, tokmatch in tokens: + l = tokmatch(expr, i) + if l > 0: + yield Token(toktype, i, l, expr) + i += l + break + else: + raise ValueError("Unknown token {!r} at {!r}" + .format(expr[i], expr[:i+1])) + + +
+[docs] +def check_expression(expr: str): + """ + Check if the given expression is a valid MAD-X expression that is safe to + pass to :meth:`cpymad.madx.Madx.eval`. + + :param expr: + :returns: True + :raises ValueError: if the expression is ill-formed + + Note that this function only recognizes a sane subset of the expressions + accepted by MAD-X and rejects valid but strange ones such as a number + formatting '.' representing zero. + """ + expr = expr.strip().lower() + tokens = list(tokenize(list(_expr_tokens.items()), expr)) + tokens.append(Token(T.END, len(expr), 0, expr)) + _expr_parser.parse(tokens) # raises ValueError + return True
+ + + +# misc + +
+[docs] +@contextmanager +def temp_filename(): + """Get filename for use within 'with' block and delete file afterwards.""" + fd, filename = tempfile.mkstemp() + os.close(fd) + try: + yield filename + finally: + try: + os.remove(filename) + except OSError: + pass
+ + + +
+[docs] +class ChangeDirectory: + + """ + Context manager for temporarily changing current working directory. + + :param str path: new path name + :param _os: module with ``getcwd`` and ``chdir`` functions + """ + + # Note that the code is generic enough to be applied for any temporary + # value patch, but we currently only need change directory, and therefore + # have named it so. + + def __init__(self, path, chdir, getcwd): + self._chdir = chdir + self._getcwd = getcwd + # Contrary to common implementations of a similar context manager, + # we change the path immediately in the constructor. That enables + # this utility to be used without any 'with' statement: + if path: + self._restore = getcwd() + chdir(path) + else: + self._restore = None + + def __enter__(self): + """Enter 'with' context.""" + return self + + def __exit__(self, exc_type, exc_val, exc_tb): + """Exit 'with' context and restore old path.""" + if self._restore: + self._chdir(self._restore)
+ + + +@np.vectorize +def remove_count_suffix_from_name(name): + """Return the :N suffix from an element name.""" + return name.rsplit(':', 1)[0] +
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/index.html b/_modules/index.html new file mode 100644 index 00000000..5743345d --- /dev/null +++ b/_modules/index.html @@ -0,0 +1,109 @@ + + + + + + Overview: module code — cpymad 1.14.1 documentation + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+
    +
  • + +
  • +
  • +
+
+
+
+
+ +

All modules for which code is available

+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_sources/automod/cpymad.libmadx.apply_table_selections.rst.txt b/_sources/automod/cpymad.libmadx.apply_table_selections.rst.txt new file mode 100644 index 00000000..949b3fa9 --- /dev/null +++ b/_sources/automod/cpymad.libmadx.apply_table_selections.rst.txt @@ -0,0 +1,6 @@ +apply_table_selections +====================== + +.. currentmodule:: cpymad.libmadx + +.. autofunction:: apply_table_selections diff --git a/_sources/automod/cpymad.libmadx.eval.rst.txt b/_sources/automod/cpymad.libmadx.eval.rst.txt new file mode 100644 index 00000000..16a552fb --- /dev/null +++ b/_sources/automod/cpymad.libmadx.eval.rst.txt @@ -0,0 +1,6 @@ +eval +==== + +.. currentmodule:: cpymad.libmadx + +.. autofunction:: eval diff --git a/_sources/automod/cpymad.libmadx.finish.rst.txt b/_sources/automod/cpymad.libmadx.finish.rst.txt new file mode 100644 index 00000000..7595c5a0 --- /dev/null +++ b/_sources/automod/cpymad.libmadx.finish.rst.txt @@ -0,0 +1,6 @@ +finish +====== + +.. currentmodule:: cpymad.libmadx + +.. autofunction:: finish diff --git a/_sources/automod/cpymad.libmadx.get_active_sequence_name.rst.txt b/_sources/automod/cpymad.libmadx.get_active_sequence_name.rst.txt new file mode 100644 index 00000000..27029674 --- /dev/null +++ b/_sources/automod/cpymad.libmadx.get_active_sequence_name.rst.txt @@ -0,0 +1,6 @@ +get_active_sequence_name +======================== + +.. currentmodule:: cpymad.libmadx + +.. autofunction:: get_active_sequence_name diff --git a/_sources/automod/cpymad.libmadx.get_base_type_names.rst.txt b/_sources/automod/cpymad.libmadx.get_base_type_names.rst.txt new file mode 100644 index 00000000..32471b3f --- /dev/null +++ b/_sources/automod/cpymad.libmadx.get_base_type_names.rst.txt @@ -0,0 +1,6 @@ +get_base_type_names +=================== + +.. currentmodule:: cpymad.libmadx + +.. autofunction:: get_base_type_names diff --git a/_sources/automod/cpymad.libmadx.get_beam.rst.txt b/_sources/automod/cpymad.libmadx.get_beam.rst.txt new file mode 100644 index 00000000..e1c7a6b0 --- /dev/null +++ b/_sources/automod/cpymad.libmadx.get_beam.rst.txt @@ -0,0 +1,6 @@ +get_beam +======== + +.. currentmodule:: cpymad.libmadx + +.. autofunction:: get_beam diff --git a/_sources/automod/cpymad.libmadx.get_beam_names.rst.txt b/_sources/automod/cpymad.libmadx.get_beam_names.rst.txt new file mode 100644 index 00000000..d2fe07dd --- /dev/null +++ b/_sources/automod/cpymad.libmadx.get_beam_names.rst.txt @@ -0,0 +1,6 @@ +get_beam_names +============== + +.. currentmodule:: cpymad.libmadx + +.. autofunction:: get_beam_names diff --git a/_sources/automod/cpymad.libmadx.get_current_beam.rst.txt b/_sources/automod/cpymad.libmadx.get_current_beam.rst.txt new file mode 100644 index 00000000..2fc223cb --- /dev/null +++ b/_sources/automod/cpymad.libmadx.get_current_beam.rst.txt @@ -0,0 +1,6 @@ +get_current_beam +================ + +.. currentmodule:: cpymad.libmadx + +.. autofunction:: get_current_beam diff --git a/_sources/automod/cpymad.libmadx.get_defined_command.rst.txt b/_sources/automod/cpymad.libmadx.get_defined_command.rst.txt new file mode 100644 index 00000000..0fb41d3d --- /dev/null +++ b/_sources/automod/cpymad.libmadx.get_defined_command.rst.txt @@ -0,0 +1,6 @@ +get_defined_command +=================== + +.. currentmodule:: cpymad.libmadx + +.. autofunction:: get_defined_command diff --git a/_sources/automod/cpymad.libmadx.get_defined_command_names.rst.txt b/_sources/automod/cpymad.libmadx.get_defined_command_names.rst.txt new file mode 100644 index 00000000..b47c6934 --- /dev/null +++ b/_sources/automod/cpymad.libmadx.get_defined_command_names.rst.txt @@ -0,0 +1,6 @@ +get_defined_command_names +========================= + +.. currentmodule:: cpymad.libmadx + +.. autofunction:: get_defined_command_names diff --git a/_sources/automod/cpymad.libmadx.get_element.rst.txt b/_sources/automod/cpymad.libmadx.get_element.rst.txt new file mode 100644 index 00000000..a6f8d98e --- /dev/null +++ b/_sources/automod/cpymad.libmadx.get_element.rst.txt @@ -0,0 +1,6 @@ +get_element +=========== + +.. currentmodule:: cpymad.libmadx + +.. autofunction:: get_element diff --git a/_sources/automod/cpymad.libmadx.get_element_count.rst.txt b/_sources/automod/cpymad.libmadx.get_element_count.rst.txt new file mode 100644 index 00000000..f0812bbe --- /dev/null +++ b/_sources/automod/cpymad.libmadx.get_element_count.rst.txt @@ -0,0 +1,6 @@ +get_element_count +================= + +.. currentmodule:: cpymad.libmadx + +.. autofunction:: get_element_count diff --git a/_sources/automod/cpymad.libmadx.get_element_index.rst.txt b/_sources/automod/cpymad.libmadx.get_element_index.rst.txt new file mode 100644 index 00000000..7b769132 --- /dev/null +++ b/_sources/automod/cpymad.libmadx.get_element_index.rst.txt @@ -0,0 +1,6 @@ +get_element_index +================= + +.. currentmodule:: cpymad.libmadx + +.. autofunction:: get_element_index diff --git a/_sources/automod/cpymad.libmadx.get_element_index_by_position.rst.txt b/_sources/automod/cpymad.libmadx.get_element_index_by_position.rst.txt new file mode 100644 index 00000000..b3536151 --- /dev/null +++ b/_sources/automod/cpymad.libmadx.get_element_index_by_position.rst.txt @@ -0,0 +1,6 @@ +get_element_index_by_position +============================= + +.. currentmodule:: cpymad.libmadx + +.. autofunction:: get_element_index_by_position diff --git a/_sources/automod/cpymad.libmadx.get_element_name.rst.txt b/_sources/automod/cpymad.libmadx.get_element_name.rst.txt new file mode 100644 index 00000000..5551519a --- /dev/null +++ b/_sources/automod/cpymad.libmadx.get_element_name.rst.txt @@ -0,0 +1,6 @@ +get_element_name +================ + +.. currentmodule:: cpymad.libmadx + +.. autofunction:: get_element_name diff --git a/_sources/automod/cpymad.libmadx.get_element_names.rst.txt b/_sources/automod/cpymad.libmadx.get_element_names.rst.txt new file mode 100644 index 00000000..7bb106f6 --- /dev/null +++ b/_sources/automod/cpymad.libmadx.get_element_names.rst.txt @@ -0,0 +1,6 @@ +get_element_names +================= + +.. currentmodule:: cpymad.libmadx + +.. autofunction:: get_element_names diff --git a/_sources/automod/cpymad.libmadx.get_element_positions.rst.txt b/_sources/automod/cpymad.libmadx.get_element_positions.rst.txt new file mode 100644 index 00000000..2e8318b6 --- /dev/null +++ b/_sources/automod/cpymad.libmadx.get_element_positions.rst.txt @@ -0,0 +1,6 @@ +get_element_positions +===================== + +.. currentmodule:: cpymad.libmadx + +.. autofunction:: get_element_positions diff --git a/_sources/automod/cpymad.libmadx.get_expanded_element.rst.txt b/_sources/automod/cpymad.libmadx.get_expanded_element.rst.txt new file mode 100644 index 00000000..a344b3d7 --- /dev/null +++ b/_sources/automod/cpymad.libmadx.get_expanded_element.rst.txt @@ -0,0 +1,6 @@ +get_expanded_element +==================== + +.. currentmodule:: cpymad.libmadx + +.. autofunction:: get_expanded_element diff --git a/_sources/automod/cpymad.libmadx.get_expanded_element_count.rst.txt b/_sources/automod/cpymad.libmadx.get_expanded_element_count.rst.txt new file mode 100644 index 00000000..2ea96018 --- /dev/null +++ b/_sources/automod/cpymad.libmadx.get_expanded_element_count.rst.txt @@ -0,0 +1,6 @@ +get_expanded_element_count +========================== + +.. currentmodule:: cpymad.libmadx + +.. autofunction:: get_expanded_element_count diff --git a/_sources/automod/cpymad.libmadx.get_expanded_element_index.rst.txt b/_sources/automod/cpymad.libmadx.get_expanded_element_index.rst.txt new file mode 100644 index 00000000..b68440f6 --- /dev/null +++ b/_sources/automod/cpymad.libmadx.get_expanded_element_index.rst.txt @@ -0,0 +1,6 @@ +get_expanded_element_index +========================== + +.. currentmodule:: cpymad.libmadx + +.. autofunction:: get_expanded_element_index diff --git a/_sources/automod/cpymad.libmadx.get_expanded_element_index_by_position.rst.txt b/_sources/automod/cpymad.libmadx.get_expanded_element_index_by_position.rst.txt new file mode 100644 index 00000000..8cdaf484 --- /dev/null +++ b/_sources/automod/cpymad.libmadx.get_expanded_element_index_by_position.rst.txt @@ -0,0 +1,6 @@ +get_expanded_element_index_by_position +====================================== + +.. currentmodule:: cpymad.libmadx + +.. autofunction:: get_expanded_element_index_by_position diff --git a/_sources/automod/cpymad.libmadx.get_expanded_element_name.rst.txt b/_sources/automod/cpymad.libmadx.get_expanded_element_name.rst.txt new file mode 100644 index 00000000..e06b4f4e --- /dev/null +++ b/_sources/automod/cpymad.libmadx.get_expanded_element_name.rst.txt @@ -0,0 +1,6 @@ +get_expanded_element_name +========================= + +.. currentmodule:: cpymad.libmadx + +.. autofunction:: get_expanded_element_name diff --git a/_sources/automod/cpymad.libmadx.get_expanded_element_names.rst.txt b/_sources/automod/cpymad.libmadx.get_expanded_element_names.rst.txt new file mode 100644 index 00000000..53c11036 --- /dev/null +++ b/_sources/automod/cpymad.libmadx.get_expanded_element_names.rst.txt @@ -0,0 +1,6 @@ +get_expanded_element_names +========================== + +.. currentmodule:: cpymad.libmadx + +.. autofunction:: get_expanded_element_names diff --git a/_sources/automod/cpymad.libmadx.get_expanded_element_positions.rst.txt b/_sources/automod/cpymad.libmadx.get_expanded_element_positions.rst.txt new file mode 100644 index 00000000..2e11e12a --- /dev/null +++ b/_sources/automod/cpymad.libmadx.get_expanded_element_positions.rst.txt @@ -0,0 +1,6 @@ +get_expanded_element_positions +============================== + +.. currentmodule:: cpymad.libmadx + +.. autofunction:: get_expanded_element_positions diff --git a/_sources/automod/cpymad.libmadx.get_global_element.rst.txt b/_sources/automod/cpymad.libmadx.get_global_element.rst.txt new file mode 100644 index 00000000..10dd46ad --- /dev/null +++ b/_sources/automod/cpymad.libmadx.get_global_element.rst.txt @@ -0,0 +1,6 @@ +get_global_element +================== + +.. currentmodule:: cpymad.libmadx + +.. autofunction:: get_global_element diff --git a/_sources/automod/cpymad.libmadx.get_global_element_count.rst.txt b/_sources/automod/cpymad.libmadx.get_global_element_count.rst.txt new file mode 100644 index 00000000..3059e607 --- /dev/null +++ b/_sources/automod/cpymad.libmadx.get_global_element_count.rst.txt @@ -0,0 +1,6 @@ +get_global_element_count +======================== + +.. currentmodule:: cpymad.libmadx + +.. autofunction:: get_global_element_count diff --git a/_sources/automod/cpymad.libmadx.get_global_element_index.rst.txt b/_sources/automod/cpymad.libmadx.get_global_element_index.rst.txt new file mode 100644 index 00000000..3eb6f740 --- /dev/null +++ b/_sources/automod/cpymad.libmadx.get_global_element_index.rst.txt @@ -0,0 +1,6 @@ +get_global_element_index +======================== + +.. currentmodule:: cpymad.libmadx + +.. autofunction:: get_global_element_index diff --git a/_sources/automod/cpymad.libmadx.get_global_element_name.rst.txt b/_sources/automod/cpymad.libmadx.get_global_element_name.rst.txt new file mode 100644 index 00000000..51ed5655 --- /dev/null +++ b/_sources/automod/cpymad.libmadx.get_global_element_name.rst.txt @@ -0,0 +1,6 @@ +get_global_element_name +======================= + +.. currentmodule:: cpymad.libmadx + +.. autofunction:: get_global_element_name diff --git a/_sources/automod/cpymad.libmadx.get_globals.rst.txt b/_sources/automod/cpymad.libmadx.get_globals.rst.txt new file mode 100644 index 00000000..5cd5fb4b --- /dev/null +++ b/_sources/automod/cpymad.libmadx.get_globals.rst.txt @@ -0,0 +1,6 @@ +get_globals +=========== + +.. currentmodule:: cpymad.libmadx + +.. autofunction:: get_globals diff --git a/_sources/automod/cpymad.libmadx.get_options.rst.txt b/_sources/automod/cpymad.libmadx.get_options.rst.txt new file mode 100644 index 00000000..e8039d4f --- /dev/null +++ b/_sources/automod/cpymad.libmadx.get_options.rst.txt @@ -0,0 +1,6 @@ +get_options +=========== + +.. currentmodule:: cpymad.libmadx + +.. autofunction:: get_options diff --git a/_sources/automod/cpymad.libmadx.get_sequence_beam.rst.txt b/_sources/automod/cpymad.libmadx.get_sequence_beam.rst.txt new file mode 100644 index 00000000..320d62a5 --- /dev/null +++ b/_sources/automod/cpymad.libmadx.get_sequence_beam.rst.txt @@ -0,0 +1,6 @@ +get_sequence_beam +================= + +.. currentmodule:: cpymad.libmadx + +.. autofunction:: get_sequence_beam diff --git a/_sources/automod/cpymad.libmadx.get_sequence_count.rst.txt b/_sources/automod/cpymad.libmadx.get_sequence_count.rst.txt new file mode 100644 index 00000000..8124d220 --- /dev/null +++ b/_sources/automod/cpymad.libmadx.get_sequence_count.rst.txt @@ -0,0 +1,6 @@ +get_sequence_count +================== + +.. currentmodule:: cpymad.libmadx + +.. autofunction:: get_sequence_count diff --git a/_sources/automod/cpymad.libmadx.get_sequence_names.rst.txt b/_sources/automod/cpymad.libmadx.get_sequence_names.rst.txt new file mode 100644 index 00000000..205c48fa --- /dev/null +++ b/_sources/automod/cpymad.libmadx.get_sequence_names.rst.txt @@ -0,0 +1,6 @@ +get_sequence_names +================== + +.. currentmodule:: cpymad.libmadx + +.. autofunction:: get_sequence_names diff --git a/_sources/automod/cpymad.libmadx.get_sequence_twiss_table_name.rst.txt b/_sources/automod/cpymad.libmadx.get_sequence_twiss_table_name.rst.txt new file mode 100644 index 00000000..0ecde20c --- /dev/null +++ b/_sources/automod/cpymad.libmadx.get_sequence_twiss_table_name.rst.txt @@ -0,0 +1,6 @@ +get_sequence_twiss_table_name +============================= + +.. currentmodule:: cpymad.libmadx + +.. autofunction:: get_sequence_twiss_table_name diff --git a/_sources/automod/cpymad.libmadx.get_table_column.rst.txt b/_sources/automod/cpymad.libmadx.get_table_column.rst.txt new file mode 100644 index 00000000..00c7eee9 --- /dev/null +++ b/_sources/automod/cpymad.libmadx.get_table_column.rst.txt @@ -0,0 +1,6 @@ +get_table_column +================ + +.. currentmodule:: cpymad.libmadx + +.. autofunction:: get_table_column diff --git a/_sources/automod/cpymad.libmadx.get_table_column_count.rst.txt b/_sources/automod/cpymad.libmadx.get_table_column_count.rst.txt new file mode 100644 index 00000000..7bddf065 --- /dev/null +++ b/_sources/automod/cpymad.libmadx.get_table_column_count.rst.txt @@ -0,0 +1,6 @@ +get_table_column_count +====================== + +.. currentmodule:: cpymad.libmadx + +.. autofunction:: get_table_column_count diff --git a/_sources/automod/cpymad.libmadx.get_table_column_names.rst.txt b/_sources/automod/cpymad.libmadx.get_table_column_names.rst.txt new file mode 100644 index 00000000..19941c49 --- /dev/null +++ b/_sources/automod/cpymad.libmadx.get_table_column_names.rst.txt @@ -0,0 +1,6 @@ +get_table_column_names +====================== + +.. currentmodule:: cpymad.libmadx + +.. autofunction:: get_table_column_names diff --git a/_sources/automod/cpymad.libmadx.get_table_count.rst.txt b/_sources/automod/cpymad.libmadx.get_table_count.rst.txt new file mode 100644 index 00000000..b4c53fee --- /dev/null +++ b/_sources/automod/cpymad.libmadx.get_table_count.rst.txt @@ -0,0 +1,6 @@ +get_table_count +=============== + +.. currentmodule:: cpymad.libmadx + +.. autofunction:: get_table_count diff --git a/_sources/automod/cpymad.libmadx.get_table_names.rst.txt b/_sources/automod/cpymad.libmadx.get_table_names.rst.txt new file mode 100644 index 00000000..9d438489 --- /dev/null +++ b/_sources/automod/cpymad.libmadx.get_table_names.rst.txt @@ -0,0 +1,6 @@ +get_table_names +=============== + +.. currentmodule:: cpymad.libmadx + +.. autofunction:: get_table_names diff --git a/_sources/automod/cpymad.libmadx.get_table_row.rst.txt b/_sources/automod/cpymad.libmadx.get_table_row.rst.txt new file mode 100644 index 00000000..2f61bd85 --- /dev/null +++ b/_sources/automod/cpymad.libmadx.get_table_row.rst.txt @@ -0,0 +1,6 @@ +get_table_row +============= + +.. currentmodule:: cpymad.libmadx + +.. autofunction:: get_table_row diff --git a/_sources/automod/cpymad.libmadx.get_table_row_count.rst.txt b/_sources/automod/cpymad.libmadx.get_table_row_count.rst.txt new file mode 100644 index 00000000..21294bb2 --- /dev/null +++ b/_sources/automod/cpymad.libmadx.get_table_row_count.rst.txt @@ -0,0 +1,6 @@ +get_table_row_count +=================== + +.. currentmodule:: cpymad.libmadx + +.. autofunction:: get_table_row_count diff --git a/_sources/automod/cpymad.libmadx.get_table_row_names.rst.txt b/_sources/automod/cpymad.libmadx.get_table_row_names.rst.txt new file mode 100644 index 00000000..22bb713f --- /dev/null +++ b/_sources/automod/cpymad.libmadx.get_table_row_names.rst.txt @@ -0,0 +1,6 @@ +get_table_row_names +=================== + +.. currentmodule:: cpymad.libmadx + +.. autofunction:: get_table_row_names diff --git a/_sources/automod/cpymad.libmadx.get_table_selected_rows.rst.txt b/_sources/automod/cpymad.libmadx.get_table_selected_rows.rst.txt new file mode 100644 index 00000000..272cb062 --- /dev/null +++ b/_sources/automod/cpymad.libmadx.get_table_selected_rows.rst.txt @@ -0,0 +1,6 @@ +get_table_selected_rows +======================= + +.. currentmodule:: cpymad.libmadx + +.. autofunction:: get_table_selected_rows diff --git a/_sources/automod/cpymad.libmadx.get_table_selected_rows_mask.rst.txt b/_sources/automod/cpymad.libmadx.get_table_selected_rows_mask.rst.txt new file mode 100644 index 00000000..9ab0714a --- /dev/null +++ b/_sources/automod/cpymad.libmadx.get_table_selected_rows_mask.rst.txt @@ -0,0 +1,6 @@ +get_table_selected_rows_mask +============================ + +.. currentmodule:: cpymad.libmadx + +.. autofunction:: get_table_selected_rows_mask diff --git a/_sources/automod/cpymad.libmadx.get_table_summary.rst.txt b/_sources/automod/cpymad.libmadx.get_table_summary.rst.txt new file mode 100644 index 00000000..c97c1935 --- /dev/null +++ b/_sources/automod/cpymad.libmadx.get_table_summary.rst.txt @@ -0,0 +1,6 @@ +get_table_summary +================= + +.. currentmodule:: cpymad.libmadx + +.. autofunction:: get_table_summary diff --git a/_sources/automod/cpymad.libmadx.get_var.rst.txt b/_sources/automod/cpymad.libmadx.get_var.rst.txt new file mode 100644 index 00000000..f6b2bcbe --- /dev/null +++ b/_sources/automod/cpymad.libmadx.get_var.rst.txt @@ -0,0 +1,6 @@ +get_var +======= + +.. currentmodule:: cpymad.libmadx + +.. autofunction:: get_var diff --git a/_sources/automod/cpymad.libmadx.get_var_type.rst.txt b/_sources/automod/cpymad.libmadx.get_var_type.rst.txt new file mode 100644 index 00000000..1a3de820 --- /dev/null +++ b/_sources/automod/cpymad.libmadx.get_var_type.rst.txt @@ -0,0 +1,6 @@ +get_var_type +============ + +.. currentmodule:: cpymad.libmadx + +.. autofunction:: get_var_type diff --git a/_sources/automod/cpymad.libmadx.get_version_date.rst.txt b/_sources/automod/cpymad.libmadx.get_version_date.rst.txt new file mode 100644 index 00000000..82b5f2f9 --- /dev/null +++ b/_sources/automod/cpymad.libmadx.get_version_date.rst.txt @@ -0,0 +1,6 @@ +get_version_date +================ + +.. currentmodule:: cpymad.libmadx + +.. autofunction:: get_version_date diff --git a/_sources/automod/cpymad.libmadx.get_version_number.rst.txt b/_sources/automod/cpymad.libmadx.get_version_number.rst.txt new file mode 100644 index 00000000..3253e749 --- /dev/null +++ b/_sources/automod/cpymad.libmadx.get_version_number.rst.txt @@ -0,0 +1,6 @@ +get_version_number +================== + +.. currentmodule:: cpymad.libmadx + +.. autofunction:: get_version_number diff --git a/_sources/automod/cpymad.libmadx.getcwd.rst.txt b/_sources/automod/cpymad.libmadx.getcwd.rst.txt new file mode 100644 index 00000000..63812044 --- /dev/null +++ b/_sources/automod/cpymad.libmadx.getcwd.rst.txt @@ -0,0 +1,6 @@ +getcwd +====== + +.. currentmodule:: cpymad.libmadx + +.. autofunction:: getcwd diff --git a/_sources/automod/cpymad.libmadx.input.rst.txt b/_sources/automod/cpymad.libmadx.input.rst.txt new file mode 100644 index 00000000..7c21b4da --- /dev/null +++ b/_sources/automod/cpymad.libmadx.input.rst.txt @@ -0,0 +1,6 @@ +input +===== + +.. currentmodule:: cpymad.libmadx + +.. autofunction:: input diff --git a/_sources/automod/cpymad.libmadx.is_sequence_expanded.rst.txt b/_sources/automod/cpymad.libmadx.is_sequence_expanded.rst.txt new file mode 100644 index 00000000..49bd7d9c --- /dev/null +++ b/_sources/automod/cpymad.libmadx.is_sequence_expanded.rst.txt @@ -0,0 +1,6 @@ +is_sequence_expanded +==================== + +.. currentmodule:: cpymad.libmadx + +.. autofunction:: is_sequence_expanded diff --git a/_sources/automod/cpymad.libmadx.is_started.rst.txt b/_sources/automod/cpymad.libmadx.is_started.rst.txt new file mode 100644 index 00000000..01c17af1 --- /dev/null +++ b/_sources/automod/cpymad.libmadx.is_started.rst.txt @@ -0,0 +1,6 @@ +is_started +========== + +.. currentmodule:: cpymad.libmadx + +.. autofunction:: is_started diff --git a/_sources/automod/cpymad.libmadx.num_globals.rst.txt b/_sources/automod/cpymad.libmadx.num_globals.rst.txt new file mode 100644 index 00000000..53d4d70e --- /dev/null +++ b/_sources/automod/cpymad.libmadx.num_globals.rst.txt @@ -0,0 +1,6 @@ +num_globals +=========== + +.. currentmodule:: cpymad.libmadx + +.. autofunction:: num_globals diff --git a/_sources/automod/cpymad.libmadx.sequence_exists.rst.txt b/_sources/automod/cpymad.libmadx.sequence_exists.rst.txt new file mode 100644 index 00000000..8176b6da --- /dev/null +++ b/_sources/automod/cpymad.libmadx.sequence_exists.rst.txt @@ -0,0 +1,6 @@ +sequence_exists +=============== + +.. currentmodule:: cpymad.libmadx + +.. autofunction:: sequence_exists diff --git a/_sources/automod/cpymad.libmadx.start.rst.txt b/_sources/automod/cpymad.libmadx.start.rst.txt new file mode 100644 index 00000000..4bc8634d --- /dev/null +++ b/_sources/automod/cpymad.libmadx.start.rst.txt @@ -0,0 +1,6 @@ +start +===== + +.. currentmodule:: cpymad.libmadx + +.. autofunction:: start diff --git a/_sources/automod/cpymad.libmadx.table_exists.rst.txt b/_sources/automod/cpymad.libmadx.table_exists.rst.txt new file mode 100644 index 00000000..24cf2ab9 --- /dev/null +++ b/_sources/automod/cpymad.libmadx.table_exists.rst.txt @@ -0,0 +1,6 @@ +table_exists +============ + +.. currentmodule:: cpymad.libmadx + +.. autofunction:: table_exists diff --git a/_sources/automod/cpymad.madx.ArrayAttribute.rst.txt b/_sources/automod/cpymad.madx.ArrayAttribute.rst.txt new file mode 100644 index 00000000..170107ad --- /dev/null +++ b/_sources/automod/cpymad.madx.ArrayAttribute.rst.txt @@ -0,0 +1,19 @@ +ArrayAttribute +============== + +.. currentmodule:: cpymad.madx + +.. autoclass:: ArrayAttribute + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~ArrayAttribute.count + ~ArrayAttribute.index + + .. rubric:: Methods Documentation + + .. automethod:: count + .. automethod:: index diff --git a/_sources/automod/cpymad.madx.AttrDict.rst.txt b/_sources/automod/cpymad.madx.AttrDict.rst.txt new file mode 100644 index 00000000..ac840bb3 --- /dev/null +++ b/_sources/automod/cpymad.madx.AttrDict.rst.txt @@ -0,0 +1,25 @@ +AttrDict +======== + +.. currentmodule:: cpymad.madx + +.. autoclass:: AttrDict + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~AttrDict.get + ~AttrDict.items + ~AttrDict.keys + ~AttrDict.update + ~AttrDict.values + + .. rubric:: Methods Documentation + + .. automethod:: get + .. automethod:: items + .. automethod:: keys + .. automethod:: update + .. automethod:: values diff --git a/_sources/automod/cpymad.madx.BaseTypeMap.rst.txt b/_sources/automod/cpymad.madx.BaseTypeMap.rst.txt new file mode 100644 index 00000000..b9dd7837 --- /dev/null +++ b/_sources/automod/cpymad.madx.BaseTypeMap.rst.txt @@ -0,0 +1,23 @@ +BaseTypeMap +=========== + +.. currentmodule:: cpymad.madx + +.. autoclass:: BaseTypeMap + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~BaseTypeMap.get + ~BaseTypeMap.items + ~BaseTypeMap.keys + ~BaseTypeMap.values + + .. rubric:: Methods Documentation + + .. automethod:: get + .. automethod:: items + .. automethod:: keys + .. automethod:: values diff --git a/_sources/automod/cpymad.madx.Command.rst.txt b/_sources/automod/cpymad.madx.Command.rst.txt new file mode 100644 index 00000000..a7cdc6f3 --- /dev/null +++ b/_sources/automod/cpymad.madx.Command.rst.txt @@ -0,0 +1,49 @@ +Command +======= + +.. currentmodule:: cpymad.madx + +.. autoclass:: Command + :show-inheritance: + + .. rubric:: Attributes Summary + + .. autosummary:: + + ~Command.cmdpar + ~Command.defs + + .. rubric:: Methods Summary + + .. autosummary:: + + ~Command.__call__ + ~Command.clear + ~Command.clone + ~Command.get + ~Command.items + ~Command.keys + ~Command.pop + ~Command.popitem + ~Command.setdefault + ~Command.update + ~Command.values + + .. rubric:: Attributes Documentation + + .. autoattribute:: cmdpar + .. autoattribute:: defs + + .. rubric:: Methods Documentation + + .. automethod:: __call__ + .. automethod:: clear + .. automethod:: clone + .. automethod:: get + .. automethod:: items + .. automethod:: keys + .. automethod:: pop + .. automethod:: popitem + .. automethod:: setdefault + .. automethod:: update + .. automethod:: values diff --git a/_sources/automod/cpymad.madx.CommandLog.rst.txt b/_sources/automod/cpymad.madx.CommandLog.rst.txt new file mode 100644 index 00000000..f63797d8 --- /dev/null +++ b/_sources/automod/cpymad.madx.CommandLog.rst.txt @@ -0,0 +1,21 @@ +CommandLog +========== + +.. currentmodule:: cpymad.madx + +.. autoclass:: CommandLog + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~CommandLog.__call__ + ~CommandLog.close + ~CommandLog.create + + .. rubric:: Methods Documentation + + .. automethod:: __call__ + .. automethod:: close + .. automethod:: create diff --git a/_sources/automod/cpymad.madx.CommandMap.rst.txt b/_sources/automod/cpymad.madx.CommandMap.rst.txt new file mode 100644 index 00000000..9d9e7719 --- /dev/null +++ b/_sources/automod/cpymad.madx.CommandMap.rst.txt @@ -0,0 +1,23 @@ +CommandMap +========== + +.. currentmodule:: cpymad.madx + +.. autoclass:: CommandMap + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~CommandMap.get + ~CommandMap.items + ~CommandMap.keys + ~CommandMap.values + + .. rubric:: Methods Documentation + + .. automethod:: get + .. automethod:: items + .. automethod:: keys + .. automethod:: values diff --git a/_sources/automod/cpymad.madx.Element.rst.txt b/_sources/automod/cpymad.madx.Element.rst.txt new file mode 100644 index 00000000..65907c9c --- /dev/null +++ b/_sources/automod/cpymad.madx.Element.rst.txt @@ -0,0 +1,53 @@ +Element +======= + +.. currentmodule:: cpymad.madx + +.. autoclass:: Element + :show-inheritance: + + .. rubric:: Attributes Summary + + .. autosummary:: + + ~Element.base_type + ~Element.cmdpar + ~Element.defs + ~Element.parent + + .. rubric:: Methods Summary + + .. autosummary:: + + ~Element.__call__ + ~Element.clear + ~Element.clone + ~Element.get + ~Element.items + ~Element.keys + ~Element.pop + ~Element.popitem + ~Element.setdefault + ~Element.update + ~Element.values + + .. rubric:: Attributes Documentation + + .. autoattribute:: base_type + .. autoattribute:: cmdpar + .. autoattribute:: defs + .. autoattribute:: parent + + .. rubric:: Methods Documentation + + .. automethod:: __call__ + .. automethod:: clear + .. automethod:: clone + .. automethod:: get + .. automethod:: items + .. automethod:: keys + .. automethod:: pop + .. automethod:: popitem + .. automethod:: setdefault + .. automethod:: update + .. automethod:: values diff --git a/_sources/automod/cpymad.madx.ElementList.rst.txt b/_sources/automod/cpymad.madx.ElementList.rst.txt new file mode 100644 index 00000000..f1a68ae0 --- /dev/null +++ b/_sources/automod/cpymad.madx.ElementList.rst.txt @@ -0,0 +1,21 @@ +ElementList +=========== + +.. currentmodule:: cpymad.madx + +.. autoclass:: ElementList + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~ElementList.at + ~ElementList.count + ~ElementList.index + + .. rubric:: Methods Documentation + + .. automethod:: at + .. automethod:: count + .. automethod:: index diff --git a/_sources/automod/cpymad.madx.ExpandedElementList.rst.txt b/_sources/automod/cpymad.madx.ExpandedElementList.rst.txt new file mode 100644 index 00000000..feba1f74 --- /dev/null +++ b/_sources/automod/cpymad.madx.ExpandedElementList.rst.txt @@ -0,0 +1,21 @@ +ExpandedElementList +=================== + +.. currentmodule:: cpymad.madx + +.. autoclass:: ExpandedElementList + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~ExpandedElementList.at + ~ExpandedElementList.count + ~ExpandedElementList.index + + .. rubric:: Methods Documentation + + .. automethod:: at + .. automethod:: count + .. automethod:: index diff --git a/_sources/automod/cpymad.madx.GlobalElementList.rst.txt b/_sources/automod/cpymad.madx.GlobalElementList.rst.txt new file mode 100644 index 00000000..de642780 --- /dev/null +++ b/_sources/automod/cpymad.madx.GlobalElementList.rst.txt @@ -0,0 +1,25 @@ +GlobalElementList +================= + +.. currentmodule:: cpymad.madx + +.. autoclass:: GlobalElementList + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~GlobalElementList.get + ~GlobalElementList.index + ~GlobalElementList.items + ~GlobalElementList.keys + ~GlobalElementList.values + + .. rubric:: Methods Documentation + + .. automethod:: get + .. automethod:: index + .. automethod:: items + .. automethod:: keys + .. automethod:: values diff --git a/_sources/automod/cpymad.madx.Madx.rst.txt b/_sources/automod/cpymad.madx.Madx.rst.txt new file mode 100644 index 00000000..5affc8e1 --- /dev/null +++ b/_sources/automod/cpymad.madx.Madx.rst.txt @@ -0,0 +1,63 @@ +Madx +==== + +.. currentmodule:: cpymad.madx + +.. autoclass:: Madx + :show-inheritance: + + .. rubric:: Attributes Summary + + .. autosummary:: + + ~Madx.beam + ~Madx.options + ~Madx.version + + .. rubric:: Methods Summary + + .. autosummary:: + + ~Madx.__call__ + ~Madx.batch + ~Madx.call + ~Madx.chdir + ~Madx.eval + ~Madx.exit + ~Madx.expr_vars + ~Madx.input + ~Madx.match + ~Madx.quit + ~Madx.sectormap + ~Madx.sectortable + ~Madx.sectortable2 + ~Madx.survey + ~Madx.twiss + ~Madx.use + ~Madx.verbose + + .. rubric:: Attributes Documentation + + .. autoattribute:: beam + .. autoattribute:: options + .. autoattribute:: version + + .. rubric:: Methods Documentation + + .. automethod:: __call__ + .. automethod:: batch + .. automethod:: call + .. automethod:: chdir + .. automethod:: eval + .. automethod:: exit + .. automethod:: expr_vars + .. automethod:: input + .. automethod:: match + .. automethod:: quit + .. automethod:: sectormap + .. automethod:: sectortable + .. automethod:: sectortable2 + .. automethod:: survey + .. automethod:: twiss + .. automethod:: use + .. automethod:: verbose diff --git a/_sources/automod/cpymad.madx.Metadata.rst.txt b/_sources/automod/cpymad.madx.Metadata.rst.txt new file mode 100644 index 00000000..423e2bea --- /dev/null +++ b/_sources/automod/cpymad.madx.Metadata.rst.txt @@ -0,0 +1,17 @@ +Metadata +======== + +.. currentmodule:: cpymad.madx + +.. autoclass:: Metadata + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~Metadata.get_copyright_notice + + .. rubric:: Methods Documentation + + .. automethod:: get_copyright_notice diff --git a/_sources/automod/cpymad.madx.Sequence.rst.txt b/_sources/automod/cpymad.madx.Sequence.rst.txt new file mode 100644 index 00000000..6758be34 --- /dev/null +++ b/_sources/automod/cpymad.madx.Sequence.rst.txt @@ -0,0 +1,53 @@ +Sequence +======== + +.. currentmodule:: cpymad.madx + +.. autoclass:: Sequence + :show-inheritance: + + .. rubric:: Attributes Summary + + .. autosummary:: + + ~Sequence.beam + ~Sequence.elements + ~Sequence.expanded_elements + ~Sequence.has_beam + ~Sequence.is_expanded + ~Sequence.length + ~Sequence.name + ~Sequence.twiss_table + ~Sequence.twiss_table_name + + .. rubric:: Methods Summary + + .. autosummary:: + + ~Sequence.element_names + ~Sequence.element_positions + ~Sequence.expand + ~Sequence.expanded_element_names + ~Sequence.expanded_element_positions + ~Sequence.use + + .. rubric:: Attributes Documentation + + .. autoattribute:: beam + .. autoattribute:: elements + .. autoattribute:: expanded_elements + .. autoattribute:: has_beam + .. autoattribute:: is_expanded + .. autoattribute:: length + .. autoattribute:: name + .. autoattribute:: twiss_table + .. autoattribute:: twiss_table_name + + .. rubric:: Methods Documentation + + .. automethod:: element_names + .. automethod:: element_positions + .. automethod:: expand + .. automethod:: expanded_element_names + .. automethod:: expanded_element_positions + .. automethod:: use diff --git a/_sources/automod/cpymad.madx.SequenceMap.rst.txt b/_sources/automod/cpymad.madx.SequenceMap.rst.txt new file mode 100644 index 00000000..00698073 --- /dev/null +++ b/_sources/automod/cpymad.madx.SequenceMap.rst.txt @@ -0,0 +1,25 @@ +SequenceMap +=========== + +.. currentmodule:: cpymad.madx + +.. autoclass:: SequenceMap + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~SequenceMap.__call__ + ~SequenceMap.get + ~SequenceMap.items + ~SequenceMap.keys + ~SequenceMap.values + + .. rubric:: Methods Documentation + + .. automethod:: __call__ + .. automethod:: get + .. automethod:: items + .. automethod:: keys + .. automethod:: values diff --git a/_sources/automod/cpymad.madx.Table.rst.txt b/_sources/automod/cpymad.madx.Table.rst.txt new file mode 100644 index 00000000..e11516ef --- /dev/null +++ b/_sources/automod/cpymad.madx.Table.rst.txt @@ -0,0 +1,65 @@ +Table +===== + +.. currentmodule:: cpymad.madx + +.. autoclass:: Table + :show-inheritance: + + .. rubric:: Attributes Summary + + .. autosummary:: + + ~Table.range + ~Table.summary + + .. rubric:: Methods Summary + + .. autosummary:: + + ~Table.col_names + ~Table.column + ~Table.copy + ~Table.dframe + ~Table.get + ~Table.getmat + ~Table.items + ~Table.keys + ~Table.kvec + ~Table.reload + ~Table.rmat + ~Table.row + ~Table.row_names + ~Table.selected_columns + ~Table.selected_rows + ~Table.selection + ~Table.sigmat + ~Table.tmat + ~Table.values + + .. rubric:: Attributes Documentation + + .. autoattribute:: range + .. autoattribute:: summary + + .. rubric:: Methods Documentation + + .. automethod:: col_names + .. automethod:: column + .. automethod:: copy + .. automethod:: dframe + .. automethod:: get + .. automethod:: getmat + .. automethod:: items + .. automethod:: keys + .. automethod:: kvec + .. automethod:: reload + .. automethod:: rmat + .. automethod:: row + .. automethod:: row_names + .. automethod:: selected_columns + .. automethod:: selected_rows + .. automethod:: selection + .. automethod:: sigmat + .. automethod:: tmat + .. automethod:: values diff --git a/_sources/automod/cpymad.madx.TableMap.rst.txt b/_sources/automod/cpymad.madx.TableMap.rst.txt new file mode 100644 index 00000000..584da920 --- /dev/null +++ b/_sources/automod/cpymad.madx.TableMap.rst.txt @@ -0,0 +1,23 @@ +TableMap +======== + +.. currentmodule:: cpymad.madx + +.. autoclass:: TableMap + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~TableMap.get + ~TableMap.items + ~TableMap.keys + ~TableMap.values + + .. rubric:: Methods Documentation + + .. automethod:: get + .. automethod:: items + .. automethod:: keys + .. automethod:: values diff --git a/_sources/automod/cpymad.madx.TwissFailed.rst.txt b/_sources/automod/cpymad.madx.TwissFailed.rst.txt new file mode 100644 index 00000000..cb8ced82 --- /dev/null +++ b/_sources/automod/cpymad.madx.TwissFailed.rst.txt @@ -0,0 +1,6 @@ +TwissFailed +=========== + +.. currentmodule:: cpymad.madx + +.. autoexception:: TwissFailed diff --git a/_sources/automod/cpymad.madx.VarList.rst.txt b/_sources/automod/cpymad.madx.VarList.rst.txt new file mode 100644 index 00000000..195ecdb4 --- /dev/null +++ b/_sources/automod/cpymad.madx.VarList.rst.txt @@ -0,0 +1,45 @@ +VarList +======= + +.. currentmodule:: cpymad.madx + +.. autoclass:: VarList + :show-inheritance: + + .. rubric:: Attributes Summary + + .. autosummary:: + + ~VarList.cmdpar + ~VarList.defs + + .. rubric:: Methods Summary + + .. autosummary:: + + ~VarList.clear + ~VarList.get + ~VarList.items + ~VarList.keys + ~VarList.pop + ~VarList.popitem + ~VarList.setdefault + ~VarList.update + ~VarList.values + + .. rubric:: Attributes Documentation + + .. autoattribute:: cmdpar + .. autoattribute:: defs + + .. rubric:: Methods Documentation + + .. automethod:: clear + .. automethod:: get + .. automethod:: items + .. automethod:: keys + .. automethod:: pop + .. automethod:: popitem + .. automethod:: setdefault + .. automethod:: update + .. automethod:: values diff --git a/_sources/automod/cpymad.madx.VarParamList.rst.txt b/_sources/automod/cpymad.madx.VarParamList.rst.txt new file mode 100644 index 00000000..9b20d022 --- /dev/null +++ b/_sources/automod/cpymad.madx.VarParamList.rst.txt @@ -0,0 +1,23 @@ +VarParamList +============ + +.. currentmodule:: cpymad.madx + +.. autoclass:: VarParamList + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~VarParamList.get + ~VarParamList.items + ~VarParamList.keys + ~VarParamList.values + + .. rubric:: Methods Documentation + + .. automethod:: get + .. automethod:: items + .. automethod:: keys + .. automethod:: values diff --git a/_sources/automod/cpymad.madx.Version.rst.txt b/_sources/automod/cpymad.madx.Version.rst.txt new file mode 100644 index 00000000..d2e0c4cf --- /dev/null +++ b/_sources/automod/cpymad.madx.Version.rst.txt @@ -0,0 +1,7 @@ +Version +======= + +.. currentmodule:: cpymad.madx + +.. autoclass:: Version + :show-inheritance: diff --git a/_sources/automod/cpymad.madx.metadata.rst.txt b/_sources/automod/cpymad.madx.metadata.rst.txt new file mode 100644 index 00000000..02c47da3 --- /dev/null +++ b/_sources/automod/cpymad.madx.metadata.rst.txt @@ -0,0 +1,6 @@ +metadata +======== + +.. currentmodule:: cpymad.madx + +.. autodata:: metadata diff --git a/_sources/automod/cpymad.types.AlignError.rst.txt b/_sources/automod/cpymad.types.AlignError.rst.txt new file mode 100644 index 00000000..3a66f26c --- /dev/null +++ b/_sources/automod/cpymad.types.AlignError.rst.txt @@ -0,0 +1,55 @@ +AlignError +========== + +.. currentmodule:: cpymad.types + +.. autoclass:: AlignError + :show-inheritance: + + .. rubric:: Attributes Summary + + .. autosummary:: + + ~AlignError.arex + ~AlignError.arey + ~AlignError.dphi + ~AlignError.dpsi + ~AlignError.ds + ~AlignError.dtheta + ~AlignError.dx + ~AlignError.dy + ~AlignError.mredx + ~AlignError.mredy + ~AlignError.mrex + ~AlignError.mrey + ~AlignError.mscalx + ~AlignError.mscaly + + .. rubric:: Methods Summary + + .. autosummary:: + + ~AlignError.count + ~AlignError.index + + .. rubric:: Attributes Documentation + + .. autoattribute:: arex + .. autoattribute:: arey + .. autoattribute:: dphi + .. autoattribute:: dpsi + .. autoattribute:: ds + .. autoattribute:: dtheta + .. autoattribute:: dx + .. autoattribute:: dy + .. autoattribute:: mredx + .. autoattribute:: mredy + .. autoattribute:: mrex + .. autoattribute:: mrey + .. autoattribute:: mscalx + .. autoattribute:: mscaly + + .. rubric:: Methods Documentation + + .. automethod:: count + .. automethod:: index diff --git a/_sources/automod/cpymad.types.Constraint.rst.txt b/_sources/automod/cpymad.types.Constraint.rst.txt new file mode 100644 index 00000000..fe70227a --- /dev/null +++ b/_sources/automod/cpymad.types.Constraint.rst.txt @@ -0,0 +1,7 @@ +Constraint +========== + +.. currentmodule:: cpymad.types + +.. autoclass:: Constraint + :show-inheritance: diff --git a/_sources/automod/cpymad.types.FieldError.rst.txt b/_sources/automod/cpymad.types.FieldError.rst.txt new file mode 100644 index 00000000..5c3872d6 --- /dev/null +++ b/_sources/automod/cpymad.types.FieldError.rst.txt @@ -0,0 +1,31 @@ +FieldError +========== + +.. currentmodule:: cpymad.types + +.. autoclass:: FieldError + :show-inheritance: + + .. rubric:: Attributes Summary + + .. autosummary:: + + ~FieldError.dkn + ~FieldError.dks + + .. rubric:: Methods Summary + + .. autosummary:: + + ~FieldError.count + ~FieldError.index + + .. rubric:: Attributes Documentation + + .. autoattribute:: dkn + .. autoattribute:: dks + + .. rubric:: Methods Documentation + + .. automethod:: count + .. automethod:: index diff --git a/_sources/automod/cpymad.types.PARAM_TYPE_CONSTRAINT.rst.txt b/_sources/automod/cpymad.types.PARAM_TYPE_CONSTRAINT.rst.txt new file mode 100644 index 00000000..8f71b19a --- /dev/null +++ b/_sources/automod/cpymad.types.PARAM_TYPE_CONSTRAINT.rst.txt @@ -0,0 +1,6 @@ +PARAM_TYPE_CONSTRAINT +===================== + +.. currentmodule:: cpymad.types + +.. autodata:: PARAM_TYPE_CONSTRAINT diff --git a/_sources/automod/cpymad.types.PARAM_TYPE_DOUBLE.rst.txt b/_sources/automod/cpymad.types.PARAM_TYPE_DOUBLE.rst.txt new file mode 100644 index 00000000..bb7f1be8 --- /dev/null +++ b/_sources/automod/cpymad.types.PARAM_TYPE_DOUBLE.rst.txt @@ -0,0 +1,6 @@ +PARAM_TYPE_DOUBLE +================= + +.. currentmodule:: cpymad.types + +.. autodata:: PARAM_TYPE_DOUBLE diff --git a/_sources/automod/cpymad.types.PARAM_TYPE_DOUBLE_ARRAY.rst.txt b/_sources/automod/cpymad.types.PARAM_TYPE_DOUBLE_ARRAY.rst.txt new file mode 100644 index 00000000..43166acf --- /dev/null +++ b/_sources/automod/cpymad.types.PARAM_TYPE_DOUBLE_ARRAY.rst.txt @@ -0,0 +1,6 @@ +PARAM_TYPE_DOUBLE_ARRAY +======================= + +.. currentmodule:: cpymad.types + +.. autodata:: PARAM_TYPE_DOUBLE_ARRAY diff --git a/_sources/automod/cpymad.types.PARAM_TYPE_INTEGER.rst.txt b/_sources/automod/cpymad.types.PARAM_TYPE_INTEGER.rst.txt new file mode 100644 index 00000000..7286c656 --- /dev/null +++ b/_sources/automod/cpymad.types.PARAM_TYPE_INTEGER.rst.txt @@ -0,0 +1,6 @@ +PARAM_TYPE_INTEGER +================== + +.. currentmodule:: cpymad.types + +.. autodata:: PARAM_TYPE_INTEGER diff --git a/_sources/automod/cpymad.types.PARAM_TYPE_INTEGER_ARRAY.rst.txt b/_sources/automod/cpymad.types.PARAM_TYPE_INTEGER_ARRAY.rst.txt new file mode 100644 index 00000000..f5886f6c --- /dev/null +++ b/_sources/automod/cpymad.types.PARAM_TYPE_INTEGER_ARRAY.rst.txt @@ -0,0 +1,6 @@ +PARAM_TYPE_INTEGER_ARRAY +======================== + +.. currentmodule:: cpymad.types + +.. autodata:: PARAM_TYPE_INTEGER_ARRAY diff --git a/_sources/automod/cpymad.types.PARAM_TYPE_LOGICAL.rst.txt b/_sources/automod/cpymad.types.PARAM_TYPE_LOGICAL.rst.txt new file mode 100644 index 00000000..f46b2a9f --- /dev/null +++ b/_sources/automod/cpymad.types.PARAM_TYPE_LOGICAL.rst.txt @@ -0,0 +1,6 @@ +PARAM_TYPE_LOGICAL +================== + +.. currentmodule:: cpymad.types + +.. autodata:: PARAM_TYPE_LOGICAL diff --git a/_sources/automod/cpymad.types.PARAM_TYPE_LOGICAL_ARRAY.rst.txt b/_sources/automod/cpymad.types.PARAM_TYPE_LOGICAL_ARRAY.rst.txt new file mode 100644 index 00000000..6e78c392 --- /dev/null +++ b/_sources/automod/cpymad.types.PARAM_TYPE_LOGICAL_ARRAY.rst.txt @@ -0,0 +1,6 @@ +PARAM_TYPE_LOGICAL_ARRAY +======================== + +.. currentmodule:: cpymad.types + +.. autodata:: PARAM_TYPE_LOGICAL_ARRAY diff --git a/_sources/automod/cpymad.types.PARAM_TYPE_STRING.rst.txt b/_sources/automod/cpymad.types.PARAM_TYPE_STRING.rst.txt new file mode 100644 index 00000000..6a76dcb0 --- /dev/null +++ b/_sources/automod/cpymad.types.PARAM_TYPE_STRING.rst.txt @@ -0,0 +1,6 @@ +PARAM_TYPE_STRING +================= + +.. currentmodule:: cpymad.types + +.. autodata:: PARAM_TYPE_STRING diff --git a/_sources/automod/cpymad.types.PARAM_TYPE_STRING_ARRAY.rst.txt b/_sources/automod/cpymad.types.PARAM_TYPE_STRING_ARRAY.rst.txt new file mode 100644 index 00000000..9b690b9e --- /dev/null +++ b/_sources/automod/cpymad.types.PARAM_TYPE_STRING_ARRAY.rst.txt @@ -0,0 +1,6 @@ +PARAM_TYPE_STRING_ARRAY +======================= + +.. currentmodule:: cpymad.types + +.. autodata:: PARAM_TYPE_STRING_ARRAY diff --git a/_sources/automod/cpymad.types.Parameter.rst.txt b/_sources/automod/cpymad.types.Parameter.rst.txt new file mode 100644 index 00000000..378157f3 --- /dev/null +++ b/_sources/automod/cpymad.types.Parameter.rst.txt @@ -0,0 +1,39 @@ +Parameter +========= + +.. currentmodule:: cpymad.types + +.. autoclass:: Parameter + :show-inheritance: + + .. rubric:: Attributes Summary + + .. autosummary:: + + ~Parameter.definition + ~Parameter.dtype + ~Parameter.expr + ~Parameter.inform + ~Parameter.name + ~Parameter.value + ~Parameter.var_type + + .. rubric:: Methods Summary + + .. autosummary:: + + ~Parameter.__call__ + + .. rubric:: Attributes Documentation + + .. autoattribute:: definition + .. autoattribute:: dtype + .. autoattribute:: expr + .. autoattribute:: inform + .. autoattribute:: name + .. autoattribute:: value + .. autoattribute:: var_type + + .. rubric:: Methods Documentation + + .. automethod:: __call__ diff --git a/_sources/automod/cpymad.types.PhaseError.rst.txt b/_sources/automod/cpymad.types.PhaseError.rst.txt new file mode 100644 index 00000000..77a2bc42 --- /dev/null +++ b/_sources/automod/cpymad.types.PhaseError.rst.txt @@ -0,0 +1,31 @@ +PhaseError +========== + +.. currentmodule:: cpymad.types + +.. autoclass:: PhaseError + :show-inheritance: + + .. rubric:: Attributes Summary + + .. autosummary:: + + ~PhaseError.dpn + ~PhaseError.dps + + .. rubric:: Methods Summary + + .. autosummary:: + + ~PhaseError.count + ~PhaseError.index + + .. rubric:: Attributes Documentation + + .. autoattribute:: dpn + .. autoattribute:: dps + + .. rubric:: Methods Documentation + + .. automethod:: count + .. automethod:: index diff --git a/_sources/automod/cpymad.types.Range.rst.txt b/_sources/automod/cpymad.types.Range.rst.txt new file mode 100644 index 00000000..4f4a2549 --- /dev/null +++ b/_sources/automod/cpymad.types.Range.rst.txt @@ -0,0 +1,31 @@ +Range +===== + +.. currentmodule:: cpymad.types + +.. autoclass:: Range + :show-inheritance: + + .. rubric:: Attributes Summary + + .. autosummary:: + + ~Range.first + ~Range.last + + .. rubric:: Methods Summary + + .. autosummary:: + + ~Range.count + ~Range.index + + .. rubric:: Attributes Documentation + + .. autoattribute:: first + .. autoattribute:: last + + .. rubric:: Methods Documentation + + .. automethod:: count + .. automethod:: index diff --git a/_sources/automod/cpymad.types.VAR_TYPE_CONST.rst.txt b/_sources/automod/cpymad.types.VAR_TYPE_CONST.rst.txt new file mode 100644 index 00000000..c9157996 --- /dev/null +++ b/_sources/automod/cpymad.types.VAR_TYPE_CONST.rst.txt @@ -0,0 +1,6 @@ +VAR_TYPE_CONST +============== + +.. currentmodule:: cpymad.types + +.. autodata:: VAR_TYPE_CONST diff --git a/_sources/automod/cpymad.types.VAR_TYPE_DEFERRED.rst.txt b/_sources/automod/cpymad.types.VAR_TYPE_DEFERRED.rst.txt new file mode 100644 index 00000000..53267afc --- /dev/null +++ b/_sources/automod/cpymad.types.VAR_TYPE_DEFERRED.rst.txt @@ -0,0 +1,6 @@ +VAR_TYPE_DEFERRED +================= + +.. currentmodule:: cpymad.types + +.. autodata:: VAR_TYPE_DEFERRED diff --git a/_sources/automod/cpymad.types.VAR_TYPE_DIRECT.rst.txt b/_sources/automod/cpymad.types.VAR_TYPE_DIRECT.rst.txt new file mode 100644 index 00000000..21969783 --- /dev/null +++ b/_sources/automod/cpymad.types.VAR_TYPE_DIRECT.rst.txt @@ -0,0 +1,6 @@ +VAR_TYPE_DIRECT +=============== + +.. currentmodule:: cpymad.types + +.. autodata:: VAR_TYPE_DIRECT diff --git a/_sources/automod/cpymad.types.VAR_TYPE_STRING.rst.txt b/_sources/automod/cpymad.types.VAR_TYPE_STRING.rst.txt new file mode 100644 index 00000000..a970a8af --- /dev/null +++ b/_sources/automod/cpymad.types.VAR_TYPE_STRING.rst.txt @@ -0,0 +1,6 @@ +VAR_TYPE_STRING +=============== + +.. currentmodule:: cpymad.types + +.. autodata:: VAR_TYPE_STRING diff --git a/_sources/automod/cpymad.util.ChangeDirectory.rst.txt b/_sources/automod/cpymad.util.ChangeDirectory.rst.txt new file mode 100644 index 00000000..b71af2d7 --- /dev/null +++ b/_sources/automod/cpymad.util.ChangeDirectory.rst.txt @@ -0,0 +1,7 @@ +ChangeDirectory +=============== + +.. currentmodule:: cpymad.util + +.. autoclass:: ChangeDirectory + :show-inheritance: diff --git a/_sources/automod/cpymad.util.check_expression.rst.txt b/_sources/automod/cpymad.util.check_expression.rst.txt new file mode 100644 index 00000000..dccddb0d --- /dev/null +++ b/_sources/automod/cpymad.util.check_expression.rst.txt @@ -0,0 +1,6 @@ +check_expression +================ + +.. currentmodule:: cpymad.util + +.. autofunction:: check_expression diff --git a/_sources/automod/cpymad.util.format_cmdpar.rst.txt b/_sources/automod/cpymad.util.format_cmdpar.rst.txt new file mode 100644 index 00000000..350448ef --- /dev/null +++ b/_sources/automod/cpymad.util.format_cmdpar.rst.txt @@ -0,0 +1,6 @@ +format_cmdpar +============= + +.. currentmodule:: cpymad.util + +.. autofunction:: format_cmdpar diff --git a/_sources/automod/cpymad.util.format_command.rst.txt b/_sources/automod/cpymad.util.format_command.rst.txt new file mode 100644 index 00000000..d321129f --- /dev/null +++ b/_sources/automod/cpymad.util.format_command.rst.txt @@ -0,0 +1,6 @@ +format_command +============== + +.. currentmodule:: cpymad.util + +.. autofunction:: format_command diff --git a/_sources/automod/cpymad.util.format_param.rst.txt b/_sources/automod/cpymad.util.format_param.rst.txt new file mode 100644 index 00000000..d15a9442 --- /dev/null +++ b/_sources/automod/cpymad.util.format_param.rst.txt @@ -0,0 +1,6 @@ +format_param +============ + +.. currentmodule:: cpymad.util + +.. autofunction:: format_param diff --git a/_sources/automod/cpymad.util.is_identifier.rst.txt b/_sources/automod/cpymad.util.is_identifier.rst.txt new file mode 100644 index 00000000..c397a5f5 --- /dev/null +++ b/_sources/automod/cpymad.util.is_identifier.rst.txt @@ -0,0 +1,6 @@ +is_identifier +============= + +.. currentmodule:: cpymad.util + +.. autofunction:: is_identifier diff --git a/_sources/automod/cpymad.util.mad_quote.rst.txt b/_sources/automod/cpymad.util.mad_quote.rst.txt new file mode 100644 index 00000000..3fe4cc9e --- /dev/null +++ b/_sources/automod/cpymad.util.mad_quote.rst.txt @@ -0,0 +1,6 @@ +mad_quote +========= + +.. currentmodule:: cpymad.util + +.. autofunction:: mad_quote diff --git a/_sources/automod/cpymad.util.name_from_internal.rst.txt b/_sources/automod/cpymad.util.name_from_internal.rst.txt new file mode 100644 index 00000000..a61f54bc --- /dev/null +++ b/_sources/automod/cpymad.util.name_from_internal.rst.txt @@ -0,0 +1,6 @@ +name_from_internal +================== + +.. currentmodule:: cpymad.util + +.. autofunction:: name_from_internal diff --git a/_sources/automod/cpymad.util.name_to_internal.rst.txt b/_sources/automod/cpymad.util.name_to_internal.rst.txt new file mode 100644 index 00000000..527163de --- /dev/null +++ b/_sources/automod/cpymad.util.name_to_internal.rst.txt @@ -0,0 +1,6 @@ +name_to_internal +================ + +.. currentmodule:: cpymad.util + +.. autofunction:: name_to_internal diff --git a/_sources/automod/cpymad.util.temp_filename.rst.txt b/_sources/automod/cpymad.util.temp_filename.rst.txt new file mode 100644 index 00000000..e1fda928 --- /dev/null +++ b/_sources/automod/cpymad.util.temp_filename.rst.txt @@ -0,0 +1,6 @@ +temp_filename +============= + +.. currentmodule:: cpymad.util + +.. autofunction:: temp_filename diff --git a/_sources/building.rst.txt b/_sources/building.rst.txt new file mode 100644 index 00000000..f017107d --- /dev/null +++ b/_sources/building.rst.txt @@ -0,0 +1,20 @@ +.. _building-from-source: + +Building from source +******************** + +The following sections contain instructions for building MAD-X and cpymad from +source on various platforms. This can be an intricate procedure that is mostly +performed by package maintainers or developers who want to change cpymad code. +Ordinary users usually don't need to do this and can use the prebuilt wheels +if available (see :ref:`installation`). + +.. rubric:: Contents + +.. toctree:: + :maxdepth: 1 + + installation/linux + installation/windows + installation/macos + installation/troubleshooting diff --git a/_sources/cpymad/index.rst.txt b/_sources/cpymad/index.rst.txt new file mode 100644 index 00000000..2dc43246 --- /dev/null +++ b/_sources/cpymad/index.rst.txt @@ -0,0 +1,10 @@ +API Reference +************* + +.. toctree:: + :maxdepth: 2 + + madx + libmadx + util + types diff --git a/_sources/cpymad/libmadx.rst.txt b/_sources/cpymad/libmadx.rst.txt new file mode 100644 index 00000000..f789b4f1 --- /dev/null +++ b/_sources/cpymad/libmadx.rst.txt @@ -0,0 +1,6 @@ +cpymad.libmadx +-------------- + +.. automodapi:: cpymad.libmadx + :no-heading: + :include-all-objects: diff --git a/_sources/cpymad/madx.rst.txt b/_sources/cpymad/madx.rst.txt new file mode 100644 index 00000000..b09c7474 --- /dev/null +++ b/_sources/cpymad/madx.rst.txt @@ -0,0 +1,6 @@ +cpymad.madx +----------- + +.. automodapi:: cpymad.madx + :no-heading: + :include-all-objects: diff --git a/_sources/cpymad/types.rst.txt b/_sources/cpymad/types.rst.txt new file mode 100644 index 00000000..d8360f60 --- /dev/null +++ b/_sources/cpymad/types.rst.txt @@ -0,0 +1,6 @@ +cpymad.types +------------ + +.. automodapi:: cpymad.types + :no-heading: + :include-all-objects: diff --git a/_sources/cpymad/util.rst.txt b/_sources/cpymad/util.rst.txt new file mode 100644 index 00000000..4a524c0f --- /dev/null +++ b/_sources/cpymad/util.rst.txt @@ -0,0 +1,6 @@ +cpymad.util +----------- + +.. automodapi:: cpymad.util + :no-heading: + :include-all-objects: diff --git a/_sources/getting-started.rst.txt b/_sources/getting-started.rst.txt new file mode 100644 index 00000000..9b4fc4a9 --- /dev/null +++ b/_sources/getting-started.rst.txt @@ -0,0 +1,299 @@ +.. highlight:: python + +Getting Started +~~~~~~~~~~~~~~~ + +The basic way to use cpymad is to create a :class:`~cpymad.madx.Madx` +instance that can be used to control and access the state of a MAD-X process:: + + from cpymad.madx import Madx + madx = Madx() + +This spawns a MAD-X process in the background and opens a communication +channel to it. + +Running MAD-X in a separate process is necessary to create multiple instances +with independent interpreter state. This is useful for resetting MAD-X to a +clean initial state by simply creating a new instance; and is a requirement +for parallelization (because MAD-X is not thread safe). + + +Basic MAD-X commands +==================== + +Now that you started MAD-X, most MAD-X commands can be executed using the +corresponding method on the :class:`~cpymad.madx.Madx` instance (except in the +case where the name of the command conflicts with another property, in this +case, see the `command()`_ property). For example:: + + madx.option(echo=True) + + madx.call(file='/path/to/some/input_file.madx') + + madx.twiss( + sequence='LEBT', + betx=0.1, bety=0.1, + alfx=0.1, alfy=0.1) + +In general, parameters must be passed by their name, exactly as for the MAD-X +command. Flags should be passed as python bools, deferred expressions (``:=``) +as strings, and direct expressions (``=``) as floats using +:meth:`~cpymad.madx.Madx.eval`. + +Most of the command methods are auto-generated by introspecting the +corresponding MAD-X command object. Only a few of the methods provide +additional functionality over the raw MAD-X commands: + +:meth:`~cpymad.madx.Madx.call` allows to temporarily change the directory to +the one of the executed file by setting the optional ``chdir`` parameter to +``True``:: + + # change directory to `/path/to/your/` during CALL: + madx.call('/path/to/your/file.madx', chdir=True) + +:meth:`~cpymad.madx.Madx.twiss` returns the resulting twiss table_, which can +be used conveniently for your own analysis, e.g.:: + + twiss = madx.twiss(sequence='LEBT', betx=1, bety=1) + + import matplotlib.pyplot as plt + plt.plot(twiss.s, twiss.betx) + plt.show() + +:meth:`~cpymad.madx.Madx.survey` returns the resulting survey table, similar +to :meth:`~cpymad.madx.Madx.twiss`. + + +Controlling MAD-X +================= + +The :class:`~cpymad.madx.Madx` class works by feeding commands in the form of +textual input to the MAD-X process. This means that you can execute all MAD-X +commands, even if they are not explicitly defined on the python class level. + +input() +------- + +The method responsible for feeding textual input to MAD-X is +:meth:`~cpymad.madx.Madx.input` method. It is called with a single string +argument that will be forwarded as input to the MAD-X interpreter. For +example:: + + madx.input('CALL, FILE="fodo.madx";') + +Do not input anything but simple single line commands, no comments. + +command() +--------- + +While it can be necessary to use :meth:`~cpymad.madx.Madx.input` for some +constructs like macros or loops, most of the time your most favorable option +is to use the :attr:`~cpymad.madx.Madx.command` attribute. It provides syntactic +sugar for composing regular MAD-X commands from python variables and feeding +the generated command string to :meth:`~cpymad.madx.Madx.input`:: + + madx.command.beam(sequence='fodo', particle='PROTON') + +If you need to override how :attr:`~cpymad.madx.Madx.command` generates the +command string (argument order/formatting), you can pass strings as positional +arguments. For example:: + + madx.command.beam('sequence=fodo', particle='PROTON') + +Note that positional and keyword parameters can be mixed. + +A single trailing underscore will be stripped from the attribute name. This is +useful for MAD-X commands that are python keywords:: + + madx.command.global_(sequence='cassps', Q1=26.58) + +In order to clone a command or element (colon syntax in MAD-X), use the +:meth:`~cpymad.madx.Command.clone` method:: + + madx.command.quadrupole.clone('QP', AT=2, L=1) + +which translates to the MAD-X command:: + + QP: QUADRUPOLE, AT=2, L=1; + +chdir() +------- + +:meth:`~cpymad.madx.Madx.chdir` changes the directory of the MAD-X process +(not the current python process). If the return value can be used as a context +manager, that reverts to the original directory upon leaving the context. + +Others +------ + +At this point, you should be able to execute arbitrary MAD-X commands via +cpymad. + +All other methods for controlling MAD-X are just syntactic sugar for +:meth:`~cpymad.madx.Madx.input`. Among others, this has the following main +benefits: + +- every modification of the MAD-X state is transparent from the + ``command_log`` file +- the session should be reproducible using the official ``madx`` command line + client by the commands in the ``command_log`` file. +- reduces the need for special implementations on the cython binding by always + going through the same interface. + +More methods for changing state: + +- :meth:`~cpymad.madx.Madx.verbose`: switch on or off verbose mode. + + +Accessing MAD-X +=============== + +In contrast to how cpymad is *controlling* the MAD-X state, when *accessing* +state it does not use MAD-X commands, but rather directly retrieves the data +from the C variables in the MAD-X process memory! + +This means that data retrieval is relatively fast because it does **not**: + +- parse command in the MAD-X interpreter +- use a file on disk or the network +- parse resulting data on python side +- to potentially modify the MAD-X interpreter state by executing a command + +Apart from this major advantage, another important implication is that the +``command_log`` file will not be cluttered by data-retrieval commands but only +show *actions*. + + +version +------- + +Access the MAD-X version:: + + print(madx.version) + # individual parts + print(madx.version.date) + print(madx.version.release) + # or as tuple: + print(madx.version.info >= (5, 3, 6)) + + +elements +-------- + +Access to global elements:: + + # list of element names: + print(list(madx.elements)) + + # check whether an element is defined: + print('qp1' in madx.elements) + + # get element properties: + elem = madx.elements.qp1 + print(elem.k1) + print(elem.l) + +Note that elements support dict-like item access to retrieve properties (i.e. +``elem['k1']``) besides attribute access. The same is true in other places. + + +table +----- + +View of MAD-X tables:: + + # list of existing table names + print(list(madx.table)): + + # get table as dict-like object: + twiss = madx.table.twiss + + # get columns as numpy arrays: + alfx = twiss.alfx + betx = twiss.alfy + + # get all twiss variables for 10th element: + row = twiss[10] + +By default a table provides access to all available rows and columns. In order +to restrict to the selection from a previous ``SELECT`` command, you can use +the the ``table.selection()`` method:: + + twiss = madx.table.twiss.selection() + + # only selected elements: + twiss.betx + + # only selected columns: + list(twiss) + + +globals +------- + +Dictionary-like view of the MAD-X global variables:: + + # list of variable names + print(list(madx.globals)) + + # value of a builtin variable + print(madx.globals.PI) + +Evaluate an expression in the MAD-X interpreter:: + + print(madx.eval('sb->angle / pi * 180')) + + +sequence +-------- + +Dictionary like view of all defined sequences:: + + # list of sequence names + print(list(madx.sequence)) + + # get a proxy object for the sequence + fodo = madx.sequence.fodo + + beam = fodo.beam + print(beam.ex, beam.ey) + + # ordered dict-like object of explicitly defined elements: + elements = fodo.elements + + # OR: including implicit drifts: + expanded = fodo.expanded_elements + + +Logging commands +================ + +For the purpose of debugging, reproducibility and transparency in general, it +is important to be able to get a listing of the user input sent to +MAD-X. This can be controlled using the ``command_log`` parameter. It accepts +file names, arbitrary callables and file-like objects as follows:: + + madx = Madx(command_log="log.madx") + madx = Madx(command_log=print) + madx = Madx(command_log=CommandLog(sys.stderr)) + + +Redirecting output +================== + +The output of the MAD-X interpreter can be controlled using the ``redirect`` +parameter of the :class:`~cpymad.madx.Madx` constructor. It allows to disable +the output completely:: + + madx = Madx(stdout=False) + +redirect it to a file:: + + with open('madx_output.log', 'w') as f: + madx = Madx(stdout=f) + +or send the MAD-X output directly to an in-memory pipe without going through +the filesystem:: + + madx = Madx(stdout=subprocess.PIPE) + pipe = m._process.stdout diff --git a/_sources/index.rst.txt b/_sources/index.rst.txt new file mode 100644 index 00000000..b0ed2737 --- /dev/null +++ b/_sources/index.rst.txt @@ -0,0 +1,60 @@ +cpymad +****** + +cpymad_ is a Cython_ binding to MAD-X_ for giving full control and access to a +MAD-X interpreter in python. + +.. _cpymad: https://github.com/hibtc/cpymad +.. _Cython: http://cython.org/ +.. _MAD-X: http://cern.ch/mad + +**Note:** Support for 32bit builds and python 2.7 has been removed in version +1.8.0. + +**Note:** python 3.5 and manylinux1 have reached EOL. Support will be +removed in a future release. + + + +Contents +======== + +.. toctree:: + :maxdepth: 2 + + installation + building + getting-started + cpymad/index + known-issues + + +Links +===== + +- `Source code`_ +- `Issue tracker`_ +- `Latest release`_ +- `MAD-X source`_ + +.. _Source code: https://github.com/hibtc/cpymad +.. _Issue tracker: https://github.com/hibtc/cpymad/issues +.. _Latest release: https://pypi.org/project/cpymad#files +.. _MAD-X source: https://github.com/MethodicalAcceleratorDesign/MAD-X + +Note that cpymad links against a custom build of MAD-X that may differ from +the official CERN command line client. This binary may have problems that the +official binary does not have and vice versa. See also: `Reporting issues`_. + +.. _Reporting issues: https://github.com/hibtc/cpymad#reporting-issues + + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` + + +Documentation updated: |today| diff --git a/_sources/installation.rst.txt b/_sources/installation.rst.txt new file mode 100644 index 00000000..3bfbc258 --- /dev/null +++ b/_sources/installation.rst.txt @@ -0,0 +1,29 @@ +.. highlight:: bash + +.. _installation: + +Installation +************ + +In order to install cpymad, please try:: + + pip install cpymad --only-binary cpymad + +If this fails, it usually means that we haven't uploaded wheels for your +platform or python version. In this case, either `ping us`_ about adding a +corresponding wheel, or refer to :ref:`building-from-source`. + +In case of success, check your installation by typing the following:: + + python -c "import cpymad.libmadx as l; l.start()" + +The MAD-X banner should appear. + +.. note:: + + The MacOS wheels are experimental and require Apple's Accelerate framework + to be installed on the user machine. Please let us know if there are + problems with these. + + +.. _ping us: https://github.com/hibtc/cpymad/issues diff --git a/_sources/installation/linux.rst.txt b/_sources/installation/linux.rst.txt new file mode 100644 index 00000000..0397f701 --- /dev/null +++ b/_sources/installation/linux.rst.txt @@ -0,0 +1,131 @@ +.. highlight:: bash + +Linux +----- + +cpymad is linked against a library version of MAD-X, which means that in order +to build cpymad you first have to compile MAD-X from source. The official +``madx`` executable is not sufficient. These steps are described in the +following subsections: + +.. contents:: :local: + +If you're planning to build cpymad inside a conda environment, we recommend +to build MAD-X within that same environment to avoid linker errors. You will +have to install gcc, g++, and gfortran inside conda before continuing, e.g.:: + + conda create -n cpymad python=3.10 + conda activate cpymad + conda install {gcc,gxx,gfortran}_linux-64 + + +Build MAD-X +~~~~~~~~~~~ + +In order to build MAD-X from source, please install the following build tools: + +- CMake_ >= 3.0 +- gcc >= 4.8 +- gfortran + +Other C/C++/fortran compiler suites may work too but are untested as of now. + +Download and extract the latest `MAD-X release`_ from github, e.g.: + +.. code-block:: bash + :substitutions: + + wget https://github.com/MethodicalAcceleratorDesign/MAD-X/archive/|VERSION|.tar.gz + tar -xzf MAD-X-|VERSION|.tar.gz + +.. _CMake: http://www.cmake.org/ +.. _MAD-X release: https://github.com/MethodicalAcceleratorDesign/MAD-X/releases + +or directly checkout the source code using git (unstable):: + + git clone https://github.com/MethodicalAcceleratorDesign/MAD-X + +We will do an out-of-source build in a ``build/`` subdirectory. This way, you +can easily delete the ``build`` directory and restart if anything goes wrong. +The basic process looks as follows:: + + mkdir MAD-X/build + cd MAD-X/build + + cmake .. \ + -DMADX_ONLINE=OFF \ + -DMADX_INSTALL_DOC=OFF \ + -DCMAKE_INSTALL_PREFIX=../dist \ + -DCMAKE_C_FLAGS="-fvisibility=hidden" + + make install + +Here we have specified a custom installation prefix to prevent cmake from +installing MAD-X to a system directory (which would require root privileges, +and may be harder to remove completely). You can also set a more permanent +install location if you prefer (e.g. ``~/.local`` or ``/opt/madx``), but keep +in mind that there is no ``uninstall`` command other than removing the files +manually. + +The cmake command has many more options, the most important ones being +(only use if you now what you're doing!): + +- ``-DMADX_STATIC=ON``: Pass this flag to link statically against the + dependencies of MAD-X (libc, libgfortran, libstdc++, blas, lapack, etc). + This may be attempted in case of problems and is not guaranteed to work on + all platforms (if your OS e.g. does not distribute ``libgfortran.a`` as is + the case on archlinux). Note that even without this flag, cpymad will still + be linked statically against MAD-X, just not against its dependencies. + +- ``-DBUILD_SHARED_LIBS=ON``: Pass this flag if you want to link cpymad + dynamically against MAD-X. In theory, this allows using, testing and even + updating the MAD-X shared object independently of cpymad. If using this + option, also change ``-DCMAKE_C_FLAGS="-fvisibility=protected"`` and be + aware that you have to redistribute the MAD-X shared object along with + cpymad, or install MAD-X to a permanent location where it can be found at + runtime. Usually this means installing to the (default) system directories, + but it can also be done by setting the LD_LIBRARY_PATH_ environment variable + or passing appropriate ``--rpath`` to the setup script. + +.. _LD_LIBRARY_PATH: http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html + +Save the path to the install directory in the ``MADXDIR`` environment variable. +This variable will be used later by the ``setup.py`` script to locate the +MAD-X headers and library, for example:: + + export MADXDIR="$(pwd)"/../dist + +Also, set the following variables according to the flags passed to the cmake +command above (ONLY PASS IF NEEDED!):: + + set STATIC=1 # if -DMADX_STATIC=ON + set SHARED=1 # if -DBUILD_SHARED_LIBS=ON + + +Building cpymad +~~~~~~~~~~~~~~~ + +Install setup requirements:: + + pip install cython wheel + +Enter the cpymad folder, and build as follows:: + + python setup.py build_ext -lm + +The ``-lm`` might not be necessary on all systems. + +If you have installed blas/lapack and MAD-X found it during the cmake step, +you have to pass them as additional link libraries:: + + python setup.py build_ext -lm -lblas -llapack + +You can now create and install a wheel as follows (however, note that this +wheel probably won't be fit to be distributed to other systems):: + + python setup.py bdist_wheel + pip install dist/cpymad-*.whl + +If you plan on changing cpymad code, do the following instead:: + + pip install -e . diff --git a/_sources/installation/macos.rst.txt b/_sources/installation/macos.rst.txt new file mode 100644 index 00000000..36cdb7da --- /dev/null +++ b/_sources/installation/macos.rst.txt @@ -0,0 +1,116 @@ +.. highlight:: bash + +MacOS (experimental) +-------------------- + +cpymad is linked against a library version of MAD-X, which means that in order +to build cpymad you first have to compile MAD-X from source. The official +``madx`` executable is not sufficient. These steps are described in the +following subsections: + +.. contents:: :local: + + +Build MAD-X +~~~~~~~~~~~ + +In order to build MAD-X from source, please install the following build tools: + +- gcc >= 4.8 +- gfortran +- CMake_ >= 3.0 (e.g. using ``pip install cmake``) + +Other C/C++/fortran compiler suites may work too but are untested as of now. + +Download and extract the latest `MAD-X release`_ from github, e.g.: + +.. code-block:: bash + :substitutions: + + curl -L -O https://github.com/MethodicalAcceleratorDesign/MAD-X/archive/|VERSION|.tar.gz + tar -xzf |VERSION|.tar.gz + +.. _CMake: http://www.cmake.org/ +.. _MAD-X release: https://github.com/MethodicalAcceleratorDesign/MAD-X/releases + +or directly checkout the source code using git (unstable):: + + git clone https://github.com/MethodicalAcceleratorDesign/MAD-X + +On Mac, you currently also have to apply the following patch_ to the MAD-X +source, to make the build work:: + + curl -L -O https://raw.githubusercontent.com/hibtc/cpymad/master/.github/patch/fix-macos-symbol-not-found-mad_argc.patch + patch -d ./MAD-X -p1 + pip install . + +Another possible solution is to specify the appropriate ``RPATH`` to the setup +script when building: + +.. code-block:: bash + + python setup.py build_ext --rpath= + python setup.py install + +Here, ```` is the base folder containing the subfolders +``bin``, ``include``, ``lib`` of the MAD-X build and ```` contains the +dynamic library files. + +If this does not work, you can set the ``LD_LIBRARY_PATH`` (or +``DYLD_LIBRARY_PATH`` on OSX) environment variable before running pymad, for +example: + +.. code-block:: bash + + export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/.local/lib/ diff --git a/_sources/installation/windows.rst.txt b/_sources/installation/windows.rst.txt new file mode 100644 index 00000000..19b912ce --- /dev/null +++ b/_sources/installation/windows.rst.txt @@ -0,0 +1,255 @@ +.. highlight:: batch + +Windows +------- + +cpymad is linked against a library version of MAD-X, which means that in order +to build cpymad you first have to compile MAD-X from source. The official +``madx`` executable is not sufficient. These steps are described in the +following subsections: + +.. contents:: :local: + + +Setup environment +================= + +Setting up a functional build environment requires more effort on windows than +on other platforms, and there are many pitfalls if not using the right +compiler toolchain (such as linking against DLLs that are not present on most +target systems). + +We recommend that you install **conda**. It has proven to be a reliable tool +for this job. Specifically, I recommend getting Miniconda_; anaconda should +work too, but I wouldn't recommend it because it ships many unnecessary +components. + +Note that while conda is used to setup a consistent environment for the build +process, the generated cpymad build will be usable with other python +distributions as well. + +.. _miniconda: https://conda.io/en/latest/miniconda.html + + +**Install build tools:** + +After installing conda, open the conda command prompt. + +We show the commands for the case of working inside a ``cmd.exe`` terminal +(batch). If you prefer to work with powershell or bash on msys2, the workflow +(commands/arguments) will be mostly the same, with the only exception that you +have to adapt the syntax accordingly in some places. + +Now create a build environment with cmake_ and setup the MinGW compiler +toolchain:: + + conda create -n buildenv + conda activate buildenv + + conda install -c anaconda cmake + conda install -c msys2 m2w64-toolchain + +.. _cmake: http://www.cmake.org/ + + +**Get the sources:** + +Now download and extract the latest `MAD-X release`_ and `cpymad release`_ +side by side. + +Alternatively, use git if you want to build a development version from local +checkout (unstable):: + + conda install git + git clone https://github.com/MethodicalAcceleratorDesign/MAD-X + git clone https://github.com/hibtc/cpymad + +.. _MAD-X release: https://github.com/MethodicalAcceleratorDesign/MAD-X/releases +.. _cpymad release: https://github.com/hibtc/cpymad/releases + + +Build MAD-X +=========== + +There are two major alternatives how to build MAD-X: + +- I recommend to build MAD-X as a *static* library as described below. This + way, you won't need to carry any ``.dll`` files around and you won't run + into version problems when having a multiple MAD-X library builds around. + +- However, in some cases it may be easier to link cpymad *dynamically* against + MAD-X, i.e. using a DLL. This comes at the cost of having to redistribute + the ``madx.dll`` along. The choice is yours. + +Note that if you're planning on using MSVC to build the cpymad extension later +on, you have to build MAD-X as shared library (DLL). With MinGW (recommended), +both build types are supported. + +In the following, we show the commands for the static build. + +In the build environment, type:: + + mkdir MAD-X\build + cd MAD-X\build + + cmake .. -G "MinGW Makefiles" ^ + -DBUILD_SHARED_LIBS=OFF ^ + -DMADX_STATIC=ON ^ + -DCMAKE_INSTALL_PREFIX="../dist" + + cmake --build . --target install + +.. note:: + + For shared library builds, instead use ``-DBUILD_SHARED_LIBS=ON``. + +If all went well the last command will have installed binaries and library +files to the ``MAD-X\dist`` subfolder. + +Save the path to this install directory in the ``MADXDIR`` environment +variable. This variable will be used later by the ``setup.py`` script to +locate the MAD-X headers and library, for example:: + + set "MADXDIR=C:\Users\<....>\MAD-X\dist" + +Also, set the following variables according to the flags passed to the cmake +command above:: + + set STATIC=1 # if -DMADX_STATIC=ON + set SHARED=1 # if -DBUILD_SHARED_LIBS=ON + + +Build cpymad +============ + +Using MinGW +~~~~~~~~~~~ + +For building cpymad you can simply reuse the build environment with the MinGW +installation from above, and now also install the targeted python version into +the build environment, e.g.:: + + conda install python=3.7 wheel cython + +.. note:: + + If you want to build wheels for multiple python versions, just create a + build environment for each target version, and don't forget to install the + same version of the m2w64 compiler toolchain. + +Now invoke the following command, which will cythonize the ``.pyx`` cython +module to ``.c`` code as a side effect:: + + python setup.py build_py + +Now comes the tricky part: we will have to manually build the C extension +using gcc, because setuptools doesn't know how to properly use our MinGW. + +First set a few environment variables corresponding to the target platform +and python version:: + + set py_ver=37 + set file_tag=cp37-win_amd64 + set dir_tag=win-amd64-cpython-37 + +On python 3.6 or earlier use the form ``set dir_tag=win-amd64-3.6`` instead. + +With these values set, you should be able to copy-paste the following +commands:: + + set tempdir=build\temp.%dir_tag%\Release\src\cpymad + set libdir=build\lib.%dir_tag%\cpymad + + mkdir %tempdir% + mkdir %libdir% + + call %gcc% -mdll -O -Wall -DMS_WIN64 ^ + -I %MADXDIR%\include ^ + -I %pythondir%\include ^ + -c src/cpymad/libmadx.c ^ + -o %tempdir%\libmadx.obj ^ + -std=gnu99 + + call %gcc% -shared -s ^ + %tempdir%\libmadx.obj ^ + -L %MADXDIR%\lib ^ + -lmadx -lDISTlib -lptc -lgc-lib -lstdc++ -lgfortran ^ + -lquadmath %pythondir%\python%py_ver%.dll -lmsvcr100 ^ + -o %libdir%\libmadx.%file_tag%.pyd + +For old versions of MAD-X, leave out ``-lDISTlib`` from the second gcc call. + +If this succeeds, you have most of the work behind you. + +At this point, you may want to check the built ``.pyd`` file with `Dependency +Walker`_ to verify that it depends only on system dependencies (except for +``pythonXY.dll``, and in the case of dynamic linking ``madx.dll``). + +We now proceed to build a so called wheel_. Wheels are zip archives containing +all the files ready for installation, as well as some metadata such as version +numbers etc. The wheel can be built as follows:: + + python setup.py bdist_wheel + +The ``.whl`` file is named after the package and its target platform. This +file can now be used for installation on this or any other machine running the +same operating system and python version. Install as follows:: + + pip install dist\cpymad-*.whl + +If you plan on changing cpymad code, do the following instead:: + + pip install -e . + +Finally, do a quick check that your cpymad installation is working by typing +the following:: + + python -c "import cpymad.libmadx as l; l.start()" + +The MAD-X startup banner should appear. You can also run more tests as +follows:: + + python test\test_madx.py + python test\test_util.py + +Congratulations, you are now free to delete the MAD-X and cpymad folders (but +keep your wheel!). + +.. _Dependency Walker: https://www.dependencywalker.com/ +.. _wheel: https://wheel.readthedocs.org/en/latest/ + + +Using Visual Studio +~~~~~~~~~~~~~~~~~~~ + +Python's official binaries are all compiled with the Visual C compiler and +therefore this is the only *officially* supported method to build python C +extensions on windows. + +It is possible to build the cpymad C extension with Visual Studio, but there +is a good reason that the above guide doesn't use it: + +Visual Studio doesn't include a Fortran compiler which means that you still +have to build MAD-X as described. Also, you have to build MAD-X as a shared +library, because the static library created by MinGW most likely won't be +compatible with the Visual C compiler. + +First, look up `the correct Visual Studio version`_ and download and install +it directly from microsoft. It is possible that older versions are not +supported anymore. + +.. _the correct Visual Studio version: https://wiki.python.org/moin/WindowsCompilers#Which_Microsoft_Visual_C.2B-.2B-_compiler_to_use_with_a_specific_Python_version_.3F + +After that, activate the Visual Studio tools by calling ``vcvarsall.bat``. +Depending on your Visual Studio version and install path, this might look like +this:: + + call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" + +Once you've accomplished that, the steps to build cpymad should actually be +relatively simple (simpler than using MinGW in conda):: + + conda create -n py37 python=3.7 + conda activate py37 + conda install wheel cython + python setup.py build_ext --shared --madxdir=%MADXDIR% diff --git a/_sources/known-issues.rst.txt b/_sources/known-issues.rst.txt new file mode 100644 index 00000000..30c243c7 --- /dev/null +++ b/_sources/known-issues.rst.txt @@ -0,0 +1,14 @@ +Known issues +~~~~~~~~~~~~ + +- The MAD-X command output may sometimes appear delayed and in wrong order. + This is a problem with mixing output from C and Fortran code. On linux it + can be fixed by setting ``export GFORTRAN_UNBUFFERED_PRECONNECTED=y`` in the + environment. On windows, this can be tried as well, but is not reliable to + our knowledge. + +- the MAD-X ``USE`` command invalidates table row names. Therefore, using + ``Table.dframe()`` is unsafe after ``USE`` should be avoided, unless + manually specifying an index, e.g. ``Table.dframe(index='name')``, see `#93`_. + +.. _#93: https://github.com/hibtc/cpymad/issues/93 diff --git a/_static/basic.css b/_static/basic.css new file mode 100644 index 00000000..30fee9d0 --- /dev/null +++ b/_static/basic.css @@ -0,0 +1,925 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +div.section::after { + display: block; + content: ''; + clear: left; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; + word-wrap: break-word; + overflow-wrap : break-word; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox form.search { + overflow: hidden; +} + +div.sphinxsidebar #searchbox input[type="text"] { + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; +} + + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li p.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; + margin-left: auto; + margin-right: auto; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable ul { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- general body styles --------------------------------------------------- */ + +div.body { + min-width: 360px; + max-width: 800px; +} + +div.body p, div.body dd, div.body li, div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +a.headerlink { + visibility: hidden; +} + +a:visited { + color: #551A8B; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, figure.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, figure.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, figure.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +img.align-default, figure.align-default, .figure.align-default { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-default { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar, +aside.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px; + background-color: #ffe; + width: 40%; + float: right; + clear: right; + overflow-x: auto; +} + +p.sidebar-title { + font-weight: bold; +} + +nav.contents, +aside.topic, +div.admonition, div.topic, blockquote { + clear: left; +} + +/* -- topics ---------------------------------------------------------------- */ + +nav.contents, +aside.topic, +div.topic { + border: 1px solid #ccc; + padding: 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- content of sidebars/topics/admonitions -------------------------------- */ + +div.sidebar > :last-child, +aside.sidebar > :last-child, +nav.contents > :last-child, +aside.topic > :last-child, +div.topic > :last-child, +div.admonition > :last-child { + margin-bottom: 0; +} + +div.sidebar::after, +aside.sidebar::after, +nav.contents::after, +aside.topic::after, +div.topic::after, +div.admonition::after, +blockquote::after { + display: block; + content: ''; + clear: both; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + margin-top: 10px; + margin-bottom: 10px; + border: 0; + border-collapse: collapse; +} + +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table.align-default { + margin-left: auto; + margin-right: auto; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +th > :first-child, +td > :first-child { + margin-top: 0px; +} + +th > :last-child, +td > :last-child { + margin-bottom: 0px; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure, figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption, figcaption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number, +figcaption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text, +figcaption span.caption-text { +} + +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +/* -- hlist styles ---------------------------------------------------------- */ + +table.hlist { + margin: 1em 0; +} + +table.hlist td { + vertical-align: top; +} + +/* -- object description styles --------------------------------------------- */ + +.sig { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; +} + +.sig-name, code.descname { + background-color: transparent; + font-weight: bold; +} + +.sig-name { + font-size: 1.1em; +} + +code.descname { + font-size: 1.2em; +} + +.sig-prename, code.descclassname { + background-color: transparent; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.sig-param.n { + font-style: italic; +} + +/* C++ specific styling */ + +.sig-inline.c-texpr, +.sig-inline.cpp-texpr { + font-family: unset; +} + +.sig.c .k, .sig.c .kt, +.sig.cpp .k, .sig.cpp .kt { + color: #0033B3; +} + +.sig.c .m, +.sig.cpp .m { + color: #1750EB; +} + +.sig.c .s, .sig.c .sc, +.sig.cpp .s, .sig.cpp .sc { + color: #067D17; +} + + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +:not(li) > ol > li:first-child > :first-child, +:not(li) > ul > li:first-child > :first-child { + margin-top: 0px; +} + +:not(li) > ol > li:last-child > :last-child, +:not(li) > ul > li:last-child > :last-child { + margin-bottom: 0px; +} + +ol.simple ol p, +ol.simple ul p, +ul.simple ol p, +ul.simple ul p { + margin-top: 0; +} + +ol.simple > li:not(:first-child) > p, +ul.simple > li:not(:first-child) > p { + margin-top: 0; +} + +ol.simple p, +ul.simple p { + margin-bottom: 0; +} + +aside.footnote > span, +div.citation > span { + float: left; +} +aside.footnote > span:last-of-type, +div.citation > span:last-of-type { + padding-right: 0.5em; +} +aside.footnote > p { + margin-left: 2em; +} +div.citation > p { + margin-left: 4em; +} +aside.footnote > p:last-of-type, +div.citation > p:last-of-type { + margin-bottom: 0em; +} +aside.footnote > p:last-of-type:after, +div.citation > p:last-of-type:after { + content: ""; + clear: both; +} + +dl.field-list { + display: grid; + grid-template-columns: fit-content(30%) auto; +} + +dl.field-list > dt { + font-weight: bold; + word-break: break-word; + padding-left: 0.5em; + padding-right: 5px; +} + +dl.field-list > dd { + padding-left: 0.5em; + margin-top: 0em; + margin-left: 0em; + margin-bottom: 0em; +} + +dl { + margin-bottom: 15px; +} + +dd > :first-child { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +.sig dd { + margin-top: 0px; + margin-bottom: 0px; +} + +.sig dl { + margin-top: 0px; + margin-bottom: 0px; +} + +dl > dd:last-child, +dl > dd:last-child > :last-child { + margin-bottom: 0; +} + +dt:target, span.highlighted { + background-color: #fbe54e; +} + +rect.highlighted { + fill: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +.classifier:before { + font-style: normal; + margin: 0 0.5em; + content: ":"; + display: inline-block; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +.translated { + background-color: rgba(207, 255, 207, 0.2) +} + +.untranslated { + background-color: rgba(255, 207, 207, 0.2) +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +pre, div[class*="highlight-"] { + clear: both; +} + +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; + white-space: nowrap; +} + +div[class*="highlight-"] { + margin: 1em 0; +} + +td.linenos pre { + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + display: block; +} + +table.highlighttable tbody { + display: block; +} + +table.highlighttable tr { + display: flex; +} + +table.highlighttable td { + margin: 0; + padding: 0; +} + +table.highlighttable td.linenos { + padding-right: 0.5em; +} + +table.highlighttable td.code { + flex: 1; + overflow: hidden; +} + +.highlight .hll { + display: block; +} + +div.highlight pre, +table.highlighttable pre { + margin: 0; +} + +div.code-block-caption + div { + margin-top: 0; +} + +div.code-block-caption { + margin-top: 1em; + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +table.highlighttable td.linenos, +span.linenos, +div.highlight span.gp { /* gp: Generic.Prompt */ + user-select: none; + -webkit-user-select: text; /* Safari fallback only */ + -webkit-user-select: none; /* Chrome/Safari */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* IE10+ */ +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + margin: 1em 0; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +span.eqno a.headerlink { + position: absolute; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/_static/css/badge_only.css b/_static/css/badge_only.css new file mode 100644 index 00000000..c718cee4 --- /dev/null +++ b/_static/css/badge_only.css @@ -0,0 +1 @@ +.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-style:normal;font-weight:400;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#FontAwesome) format("svg")}.fa:before{font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1}.fa:before,a .fa{text-decoration:inherit}.fa:before,a .fa,li .fa{display:inline-block}li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before,.icon-book:before{content:"\f02d"}.fa-caret-down:before,.icon-caret-down:before{content:"\f0d7"}.fa-caret-up:before,.icon-caret-up:before{content:"\f0d8"}.fa-caret-left:before,.icon-caret-left:before{content:"\f0d9"}.fa-caret-right:before,.icon-caret-right:before{content:"\f0da"}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60}.rst-versions .rst-current-version:after{clear:both;content:"";display:block}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}} \ No newline at end of file diff --git a/_static/css/fonts/Roboto-Slab-Bold.woff b/_static/css/fonts/Roboto-Slab-Bold.woff new file mode 100644 index 00000000..6cb60000 Binary files /dev/null and b/_static/css/fonts/Roboto-Slab-Bold.woff differ diff --git a/_static/css/fonts/Roboto-Slab-Bold.woff2 b/_static/css/fonts/Roboto-Slab-Bold.woff2 new file mode 100644 index 00000000..7059e231 Binary files /dev/null and b/_static/css/fonts/Roboto-Slab-Bold.woff2 differ diff --git a/_static/css/fonts/Roboto-Slab-Regular.woff b/_static/css/fonts/Roboto-Slab-Regular.woff new file mode 100644 index 00000000..f815f63f Binary files /dev/null and b/_static/css/fonts/Roboto-Slab-Regular.woff differ diff --git a/_static/css/fonts/Roboto-Slab-Regular.woff2 b/_static/css/fonts/Roboto-Slab-Regular.woff2 new file mode 100644 index 00000000..f2c76e5b Binary files /dev/null and b/_static/css/fonts/Roboto-Slab-Regular.woff2 differ diff --git a/_static/css/fonts/fontawesome-webfont.eot b/_static/css/fonts/fontawesome-webfont.eot new file mode 100644 index 00000000..e9f60ca9 Binary files /dev/null and b/_static/css/fonts/fontawesome-webfont.eot differ diff --git a/_static/css/fonts/fontawesome-webfont.svg b/_static/css/fonts/fontawesome-webfont.svg new file mode 100644 index 00000000..855c845e --- /dev/null +++ b/_static/css/fonts/fontawesome-webfont.svg @@ -0,0 +1,2671 @@ + + + + +Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 + By ,,, +Copyright Dave Gandy 2016. All rights reserved. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_static/css/fonts/fontawesome-webfont.ttf b/_static/css/fonts/fontawesome-webfont.ttf new file mode 100644 index 00000000..35acda2f Binary files /dev/null and b/_static/css/fonts/fontawesome-webfont.ttf differ diff --git a/_static/css/fonts/fontawesome-webfont.woff b/_static/css/fonts/fontawesome-webfont.woff new file mode 100644 index 00000000..400014a4 Binary files /dev/null and b/_static/css/fonts/fontawesome-webfont.woff differ diff --git a/_static/css/fonts/fontawesome-webfont.woff2 b/_static/css/fonts/fontawesome-webfont.woff2 new file mode 100644 index 00000000..4d13fc60 Binary files /dev/null and b/_static/css/fonts/fontawesome-webfont.woff2 differ diff --git a/_static/css/fonts/lato-bold-italic.woff b/_static/css/fonts/lato-bold-italic.woff new file mode 100644 index 00000000..88ad05b9 Binary files /dev/null and b/_static/css/fonts/lato-bold-italic.woff differ diff --git a/_static/css/fonts/lato-bold-italic.woff2 b/_static/css/fonts/lato-bold-italic.woff2 new file mode 100644 index 00000000..c4e3d804 Binary files /dev/null and b/_static/css/fonts/lato-bold-italic.woff2 differ diff --git a/_static/css/fonts/lato-bold.woff b/_static/css/fonts/lato-bold.woff new file mode 100644 index 00000000..c6dff51f Binary files /dev/null and b/_static/css/fonts/lato-bold.woff differ diff --git a/_static/css/fonts/lato-bold.woff2 b/_static/css/fonts/lato-bold.woff2 new file mode 100644 index 00000000..bb195043 Binary files /dev/null and b/_static/css/fonts/lato-bold.woff2 differ diff --git a/_static/css/fonts/lato-normal-italic.woff b/_static/css/fonts/lato-normal-italic.woff new file mode 100644 index 00000000..76114bc0 Binary files /dev/null and b/_static/css/fonts/lato-normal-italic.woff differ diff --git a/_static/css/fonts/lato-normal-italic.woff2 b/_static/css/fonts/lato-normal-italic.woff2 new file mode 100644 index 00000000..3404f37e Binary files /dev/null and b/_static/css/fonts/lato-normal-italic.woff2 differ diff --git a/_static/css/fonts/lato-normal.woff b/_static/css/fonts/lato-normal.woff new file mode 100644 index 00000000..ae1307ff Binary files /dev/null and b/_static/css/fonts/lato-normal.woff differ diff --git a/_static/css/fonts/lato-normal.woff2 b/_static/css/fonts/lato-normal.woff2 new file mode 100644 index 00000000..3bf98433 Binary files /dev/null and b/_static/css/fonts/lato-normal.woff2 differ diff --git a/_static/css/theme.css b/_static/css/theme.css new file mode 100644 index 00000000..19a446a0 --- /dev/null +++ b/_static/css/theme.css @@ -0,0 +1,4 @@ +html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}[hidden],audio:not([controls]){display:none}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}blockquote{margin:0}dfn{font-style:italic}ins{background:#ff9;text-decoration:none}ins,mark{color:#000}mark{background:#ff0;font-style:italic;font-weight:700}.rst-content code,.rst-content tt,code,kbd,pre,samp{font-family:monospace,serif;_font-family:courier new,monospace;font-size:1em}pre{white-space:pre}q{quotes:none}q:after,q:before{content:"";content:none}small{font-size:85%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}dl,ol,ul{margin:0;padding:0;list-style:none;list-style-image:none}li{list-style:none}dd{margin:0}img{border:0;-ms-interpolation-mode:bicubic;vertical-align:middle;max-width:100%}svg:not(:root){overflow:hidden}figure,form{margin:0}label{cursor:pointer}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}button,input{line-height:normal}button,input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button;*overflow:visible}button[disabled],input[disabled]{cursor:default}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}textarea{resize:vertical}table{border-collapse:collapse;border-spacing:0}td{vertical-align:top}.chromeframe{margin:.2em 0;background:#ccc;color:#000;padding:.2em 0}.ir{display:block;border:0;text-indent:-999em;overflow:hidden;background-color:transparent;background-repeat:no-repeat;text-align:left;direction:ltr;*line-height:0}.ir br{display:none}.hidden{display:none!important;visibility:hidden}.visuallyhidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.visuallyhidden.focusable:active,.visuallyhidden.focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.invisible{visibility:hidden}.relative{position:relative}big,small{font-size:100%}@media print{body,html,section{background:none!important}*{box-shadow:none!important;text-shadow:none!important;filter:none!important;-ms-filter:none!important}a,a:visited{text-decoration:underline}.ir a:after,a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}.rst-content .toctree-wrapper>p.caption,h2,h3,p{orphans:3;widows:3}.rst-content .toctree-wrapper>p.caption,h2,h3{page-break-after:avoid}}.btn,.fa:before,.icon:before,.rst-content .admonition,.rst-content .admonition-title:before,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .code-block-caption .headerlink:before,.rst-content .danger,.rst-content .eqno .headerlink:before,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning,.rst-content code.download span:first-child:before,.rst-content dl dt .headerlink:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content p .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.wy-alert,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before,.wy-menu-vertical li button.toctree-expand:before,input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],select,textarea{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:FontAwesome;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713);src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix&v=4.7.0) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#fontawesomeregular) format("svg");font-weight:400;font-style:normal}.fa,.icon,.rst-content .admonition-title,.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content code.download span:first-child,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li button.toctree-expand{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14286em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14286em;width:2.14286em;top:.14286em;text-align:center}.fa-li.fa-lg{left:-1.85714em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa-pull-left.icon,.fa.fa-pull-left,.rst-content .code-block-caption .fa-pull-left.headerlink,.rst-content .eqno .fa-pull-left.headerlink,.rst-content .fa-pull-left.admonition-title,.rst-content code.download span.fa-pull-left:first-child,.rst-content dl dt .fa-pull-left.headerlink,.rst-content h1 .fa-pull-left.headerlink,.rst-content h2 .fa-pull-left.headerlink,.rst-content h3 .fa-pull-left.headerlink,.rst-content h4 .fa-pull-left.headerlink,.rst-content h5 .fa-pull-left.headerlink,.rst-content h6 .fa-pull-left.headerlink,.rst-content p .fa-pull-left.headerlink,.rst-content table>caption .fa-pull-left.headerlink,.rst-content tt.download span.fa-pull-left:first-child,.wy-menu-vertical li.current>a button.fa-pull-left.toctree-expand,.wy-menu-vertical li.on a button.fa-pull-left.toctree-expand,.wy-menu-vertical li button.fa-pull-left.toctree-expand{margin-right:.3em}.fa-pull-right.icon,.fa.fa-pull-right,.rst-content .code-block-caption .fa-pull-right.headerlink,.rst-content .eqno .fa-pull-right.headerlink,.rst-content .fa-pull-right.admonition-title,.rst-content code.download span.fa-pull-right:first-child,.rst-content dl dt .fa-pull-right.headerlink,.rst-content h1 .fa-pull-right.headerlink,.rst-content h2 .fa-pull-right.headerlink,.rst-content h3 .fa-pull-right.headerlink,.rst-content h4 .fa-pull-right.headerlink,.rst-content h5 .fa-pull-right.headerlink,.rst-content h6 .fa-pull-right.headerlink,.rst-content p .fa-pull-right.headerlink,.rst-content table>caption .fa-pull-right.headerlink,.rst-content tt.download span.fa-pull-right:first-child,.wy-menu-vertical li.current>a button.fa-pull-right.toctree-expand,.wy-menu-vertical li.on a button.fa-pull-right.toctree-expand,.wy-menu-vertical li button.fa-pull-right.toctree-expand{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left,.pull-left.icon,.rst-content .code-block-caption .pull-left.headerlink,.rst-content .eqno .pull-left.headerlink,.rst-content .pull-left.admonition-title,.rst-content code.download span.pull-left:first-child,.rst-content dl dt .pull-left.headerlink,.rst-content h1 .pull-left.headerlink,.rst-content h2 .pull-left.headerlink,.rst-content h3 .pull-left.headerlink,.rst-content h4 .pull-left.headerlink,.rst-content h5 .pull-left.headerlink,.rst-content h6 .pull-left.headerlink,.rst-content p .pull-left.headerlink,.rst-content table>caption .pull-left.headerlink,.rst-content tt.download span.pull-left:first-child,.wy-menu-vertical li.current>a button.pull-left.toctree-expand,.wy-menu-vertical li.on a button.pull-left.toctree-expand,.wy-menu-vertical li button.pull-left.toctree-expand{margin-right:.3em}.fa.pull-right,.pull-right.icon,.rst-content .code-block-caption .pull-right.headerlink,.rst-content .eqno .pull-right.headerlink,.rst-content .pull-right.admonition-title,.rst-content code.download span.pull-right:first-child,.rst-content dl dt .pull-right.headerlink,.rst-content h1 .pull-right.headerlink,.rst-content h2 .pull-right.headerlink,.rst-content h3 .pull-right.headerlink,.rst-content h4 .pull-right.headerlink,.rst-content h5 .pull-right.headerlink,.rst-content h6 .pull-right.headerlink,.rst-content p .pull-right.headerlink,.rst-content table>caption .pull-right.headerlink,.rst-content tt.download span.pull-right:first-child,.wy-menu-vertical li.current>a button.pull-right.toctree-expand,.wy-menu-vertical li.on a button.pull-right.toctree-expand,.wy-menu-vertical li button.pull-right.toctree-expand{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);-ms-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scaleY(-1);-ms-transform:scaleY(-1);transform:scaleY(-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:""}.fa-music:before{content:""}.fa-search:before,.icon-search:before{content:""}.fa-envelope-o:before{content:""}.fa-heart:before{content:""}.fa-star:before{content:""}.fa-star-o:before{content:""}.fa-user:before{content:""}.fa-film:before{content:""}.fa-th-large:before{content:""}.fa-th:before{content:""}.fa-th-list:before{content:""}.fa-check:before{content:""}.fa-close:before,.fa-remove:before,.fa-times:before{content:""}.fa-search-plus:before{content:""}.fa-search-minus:before{content:""}.fa-power-off:before{content:""}.fa-signal:before{content:""}.fa-cog:before,.fa-gear:before{content:""}.fa-trash-o:before{content:""}.fa-home:before,.icon-home:before{content:""}.fa-file-o:before{content:""}.fa-clock-o:before{content:""}.fa-road:before{content:""}.fa-download:before,.rst-content code.download span:first-child:before,.rst-content tt.download span:first-child:before{content:""}.fa-arrow-circle-o-down:before{content:""}.fa-arrow-circle-o-up:before{content:""}.fa-inbox:before{content:""}.fa-play-circle-o:before{content:""}.fa-repeat:before,.fa-rotate-right:before{content:""}.fa-refresh:before{content:""}.fa-list-alt:before{content:""}.fa-lock:before{content:""}.fa-flag:before{content:""}.fa-headphones:before{content:""}.fa-volume-off:before{content:""}.fa-volume-down:before{content:""}.fa-volume-up:before{content:""}.fa-qrcode:before{content:""}.fa-barcode:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-book:before,.icon-book:before{content:""}.fa-bookmark:before{content:""}.fa-print:before{content:""}.fa-camera:before{content:""}.fa-font:before{content:""}.fa-bold:before{content:""}.fa-italic:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-align-left:before{content:""}.fa-align-center:before{content:""}.fa-align-right:before{content:""}.fa-align-justify:before{content:""}.fa-list:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-indent:before{content:""}.fa-video-camera:before{content:""}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:""}.fa-pencil:before{content:""}.fa-map-marker:before{content:""}.fa-adjust:before{content:""}.fa-tint:before{content:""}.fa-edit:before,.fa-pencil-square-o:before{content:""}.fa-share-square-o:before{content:""}.fa-check-square-o:before{content:""}.fa-arrows:before{content:""}.fa-step-backward:before{content:""}.fa-fast-backward:before{content:""}.fa-backward:before{content:""}.fa-play:before{content:""}.fa-pause:before{content:""}.fa-stop:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before{content:""}.fa-step-forward:before{content:""}.fa-eject:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-plus-circle:before{content:""}.fa-minus-circle:before{content:""}.fa-times-circle:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before{content:""}.fa-check-circle:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before{content:""}.fa-question-circle:before{content:""}.fa-info-circle:before{content:""}.fa-crosshairs:before{content:""}.fa-times-circle-o:before{content:""}.fa-check-circle-o:before{content:""}.fa-ban:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-down:before{content:""}.fa-mail-forward:before,.fa-share:before{content:""}.fa-expand:before{content:""}.fa-compress:before{content:""}.fa-plus:before{content:""}.fa-minus:before{content:""}.fa-asterisk:before{content:""}.fa-exclamation-circle:before,.rst-content .admonition-title:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before{content:""}.fa-gift:before{content:""}.fa-leaf:before{content:""}.fa-fire:before,.icon-fire:before{content:""}.fa-eye:before{content:""}.fa-eye-slash:before{content:""}.fa-exclamation-triangle:before,.fa-warning:before{content:""}.fa-plane:before{content:""}.fa-calendar:before{content:""}.fa-random:before{content:""}.fa-comment:before{content:""}.fa-magnet:before{content:""}.fa-chevron-up:before{content:""}.fa-chevron-down:before{content:""}.fa-retweet:before{content:""}.fa-shopping-cart:before{content:""}.fa-folder:before{content:""}.fa-folder-open:before{content:""}.fa-arrows-v:before{content:""}.fa-arrows-h:before{content:""}.fa-bar-chart-o:before,.fa-bar-chart:before{content:""}.fa-twitter-square:before{content:""}.fa-facebook-square:before{content:""}.fa-camera-retro:before{content:""}.fa-key:before{content:""}.fa-cogs:before,.fa-gears:before{content:""}.fa-comments:before{content:""}.fa-thumbs-o-up:before{content:""}.fa-thumbs-o-down:before{content:""}.fa-star-half:before{content:""}.fa-heart-o:before{content:""}.fa-sign-out:before{content:""}.fa-linkedin-square:before{content:""}.fa-thumb-tack:before{content:""}.fa-external-link:before{content:""}.fa-sign-in:before{content:""}.fa-trophy:before{content:""}.fa-github-square:before{content:""}.fa-upload:before{content:""}.fa-lemon-o:before{content:""}.fa-phone:before{content:""}.fa-square-o:before{content:""}.fa-bookmark-o:before{content:""}.fa-phone-square:before{content:""}.fa-twitter:before{content:""}.fa-facebook-f:before,.fa-facebook:before{content:""}.fa-github:before,.icon-github:before{content:""}.fa-unlock:before{content:""}.fa-credit-card:before{content:""}.fa-feed:before,.fa-rss:before{content:""}.fa-hdd-o:before{content:""}.fa-bullhorn:before{content:""}.fa-bell:before{content:""}.fa-certificate:before{content:""}.fa-hand-o-right:before{content:""}.fa-hand-o-left:before{content:""}.fa-hand-o-up:before{content:""}.fa-hand-o-down:before{content:""}.fa-arrow-circle-left:before,.icon-circle-arrow-left:before{content:""}.fa-arrow-circle-right:before,.icon-circle-arrow-right:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-arrow-circle-down:before{content:""}.fa-globe:before{content:""}.fa-wrench:before{content:""}.fa-tasks:before{content:""}.fa-filter:before{content:""}.fa-briefcase:before{content:""}.fa-arrows-alt:before{content:""}.fa-group:before,.fa-users:before{content:""}.fa-chain:before,.fa-link:before,.icon-link:before{content:""}.fa-cloud:before{content:""}.fa-flask:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-copy:before,.fa-files-o:before{content:""}.fa-paperclip:before{content:""}.fa-floppy-o:before,.fa-save:before{content:""}.fa-square:before{content:""}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:""}.fa-list-ul:before{content:""}.fa-list-ol:before{content:""}.fa-strikethrough:before{content:""}.fa-underline:before{content:""}.fa-table:before{content:""}.fa-magic:before{content:""}.fa-truck:before{content:""}.fa-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-google-plus-square:before{content:""}.fa-google-plus:before{content:""}.fa-money:before{content:""}.fa-caret-down:before,.icon-caret-down:before,.wy-dropdown .caret:before{content:""}.fa-caret-up:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-columns:before{content:""}.fa-sort:before,.fa-unsorted:before{content:""}.fa-sort-desc:before,.fa-sort-down:before{content:""}.fa-sort-asc:before,.fa-sort-up:before{content:""}.fa-envelope:before{content:""}.fa-linkedin:before{content:""}.fa-rotate-left:before,.fa-undo:before{content:""}.fa-gavel:before,.fa-legal:before{content:""}.fa-dashboard:before,.fa-tachometer:before{content:""}.fa-comment-o:before{content:""}.fa-comments-o:before{content:""}.fa-bolt:before,.fa-flash:before{content:""}.fa-sitemap:before{content:""}.fa-umbrella:before{content:""}.fa-clipboard:before,.fa-paste:before{content:""}.fa-lightbulb-o:before{content:""}.fa-exchange:before{content:""}.fa-cloud-download:before{content:""}.fa-cloud-upload:before{content:""}.fa-user-md:before{content:""}.fa-stethoscope:before{content:""}.fa-suitcase:before{content:""}.fa-bell-o:before{content:""}.fa-coffee:before{content:""}.fa-cutlery:before{content:""}.fa-file-text-o:before{content:""}.fa-building-o:before{content:""}.fa-hospital-o:before{content:""}.fa-ambulance:before{content:""}.fa-medkit:before{content:""}.fa-fighter-jet:before{content:""}.fa-beer:before{content:""}.fa-h-square:before{content:""}.fa-plus-square:before{content:""}.fa-angle-double-left:before{content:""}.fa-angle-double-right:before{content:""}.fa-angle-double-up:before{content:""}.fa-angle-double-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-down:before{content:""}.fa-desktop:before{content:""}.fa-laptop:before{content:""}.fa-tablet:before{content:""}.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-circle-o:before{content:""}.fa-quote-left:before{content:""}.fa-quote-right:before{content:""}.fa-spinner:before{content:""}.fa-circle:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-github-alt:before{content:""}.fa-folder-o:before{content:""}.fa-folder-open-o:before{content:""}.fa-smile-o:before{content:""}.fa-frown-o:before{content:""}.fa-meh-o:before{content:""}.fa-gamepad:before{content:""}.fa-keyboard-o:before{content:""}.fa-flag-o:before{content:""}.fa-flag-checkered:before{content:""}.fa-terminal:before{content:""}.fa-code:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:""}.fa-location-arrow:before{content:""}.fa-crop:before{content:""}.fa-code-fork:before{content:""}.fa-chain-broken:before,.fa-unlink:before{content:""}.fa-question:before{content:""}.fa-info:before{content:""}.fa-exclamation:before{content:""}.fa-superscript:before{content:""}.fa-subscript:before{content:""}.fa-eraser:before{content:""}.fa-puzzle-piece:before{content:""}.fa-microphone:before{content:""}.fa-microphone-slash:before{content:""}.fa-shield:before{content:""}.fa-calendar-o:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-rocket:before{content:""}.fa-maxcdn:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-html5:before{content:""}.fa-css3:before{content:""}.fa-anchor:before{content:""}.fa-unlock-alt:before{content:""}.fa-bullseye:before{content:""}.fa-ellipsis-h:before{content:""}.fa-ellipsis-v:before{content:""}.fa-rss-square:before{content:""}.fa-play-circle:before{content:""}.fa-ticket:before{content:""}.fa-minus-square:before{content:""}.fa-minus-square-o:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before{content:""}.fa-level-up:before{content:""}.fa-level-down:before{content:""}.fa-check-square:before{content:""}.fa-pencil-square:before{content:""}.fa-external-link-square:before{content:""}.fa-share-square:before{content:""}.fa-compass:before{content:""}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:""}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:""}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:""}.fa-eur:before,.fa-euro:before{content:""}.fa-gbp:before{content:""}.fa-dollar:before,.fa-usd:before{content:""}.fa-inr:before,.fa-rupee:before{content:""}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:""}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:""}.fa-krw:before,.fa-won:before{content:""}.fa-bitcoin:before,.fa-btc:before{content:""}.fa-file:before{content:""}.fa-file-text:before{content:""}.fa-sort-alpha-asc:before{content:""}.fa-sort-alpha-desc:before{content:""}.fa-sort-amount-asc:before{content:""}.fa-sort-amount-desc:before{content:""}.fa-sort-numeric-asc:before{content:""}.fa-sort-numeric-desc:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumbs-down:before{content:""}.fa-youtube-square:before{content:""}.fa-youtube:before{content:""}.fa-xing:before{content:""}.fa-xing-square:before{content:""}.fa-youtube-play:before{content:""}.fa-dropbox:before{content:""}.fa-stack-overflow:before{content:""}.fa-instagram:before{content:""}.fa-flickr:before{content:""}.fa-adn:before{content:""}.fa-bitbucket:before,.icon-bitbucket:before{content:""}.fa-bitbucket-square:before{content:""}.fa-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-long-arrow-down:before{content:""}.fa-long-arrow-up:before{content:""}.fa-long-arrow-left:before{content:""}.fa-long-arrow-right:before{content:""}.fa-apple:before{content:""}.fa-windows:before{content:""}.fa-android:before{content:""}.fa-linux:before{content:""}.fa-dribbble:before{content:""}.fa-skype:before{content:""}.fa-foursquare:before{content:""}.fa-trello:before{content:""}.fa-female:before{content:""}.fa-male:before{content:""}.fa-gittip:before,.fa-gratipay:before{content:""}.fa-sun-o:before{content:""}.fa-moon-o:before{content:""}.fa-archive:before{content:""}.fa-bug:before{content:""}.fa-vk:before{content:""}.fa-weibo:before{content:""}.fa-renren:before{content:""}.fa-pagelines:before{content:""}.fa-stack-exchange:before{content:""}.fa-arrow-circle-o-right:before{content:""}.fa-arrow-circle-o-left:before{content:""}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:""}.fa-dot-circle-o:before{content:""}.fa-wheelchair:before{content:""}.fa-vimeo-square:before{content:""}.fa-try:before,.fa-turkish-lira:before{content:""}.fa-plus-square-o:before,.wy-menu-vertical li button.toctree-expand:before{content:""}.fa-space-shuttle:before{content:""}.fa-slack:before{content:""}.fa-envelope-square:before{content:""}.fa-wordpress:before{content:""}.fa-openid:before{content:""}.fa-bank:before,.fa-institution:before,.fa-university:before{content:""}.fa-graduation-cap:before,.fa-mortar-board:before{content:""}.fa-yahoo:before{content:""}.fa-google:before{content:""}.fa-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-stumbleupon:before{content:""}.fa-delicious:before{content:""}.fa-digg:before{content:""}.fa-pied-piper-pp:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-drupal:before{content:""}.fa-joomla:before{content:""}.fa-language:before{content:""}.fa-fax:before{content:""}.fa-building:before{content:""}.fa-child:before{content:""}.fa-paw:before{content:""}.fa-spoon:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-behance:before{content:""}.fa-behance-square:before{content:""}.fa-steam:before{content:""}.fa-steam-square:before{content:""}.fa-recycle:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-tree:before{content:""}.fa-spotify:before{content:""}.fa-deviantart:before{content:""}.fa-soundcloud:before{content:""}.fa-database:before{content:""}.fa-file-pdf-o:before{content:""}.fa-file-word-o:before{content:""}.fa-file-excel-o:before{content:""}.fa-file-powerpoint-o:before{content:""}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:""}.fa-file-archive-o:before,.fa-file-zip-o:before{content:""}.fa-file-audio-o:before,.fa-file-sound-o:before{content:""}.fa-file-movie-o:before,.fa-file-video-o:before{content:""}.fa-file-code-o:before{content:""}.fa-vine:before{content:""}.fa-codepen:before{content:""}.fa-jsfiddle:before{content:""}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:""}.fa-circle-o-notch:before{content:""}.fa-ra:before,.fa-rebel:before,.fa-resistance:before{content:""}.fa-empire:before,.fa-ge:before{content:""}.fa-git-square:before{content:""}.fa-git:before{content:""}.fa-hacker-news:before,.fa-y-combinator-square:before,.fa-yc-square:before{content:""}.fa-tencent-weibo:before{content:""}.fa-qq:before{content:""}.fa-wechat:before,.fa-weixin:before{content:""}.fa-paper-plane:before,.fa-send:before{content:""}.fa-paper-plane-o:before,.fa-send-o:before{content:""}.fa-history:before{content:""}.fa-circle-thin:before{content:""}.fa-header:before{content:""}.fa-paragraph:before{content:""}.fa-sliders:before{content:""}.fa-share-alt:before{content:""}.fa-share-alt-square:before{content:""}.fa-bomb:before{content:""}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:""}.fa-tty:before{content:""}.fa-binoculars:before{content:""}.fa-plug:before{content:""}.fa-slideshare:before{content:""}.fa-twitch:before{content:""}.fa-yelp:before{content:""}.fa-newspaper-o:before{content:""}.fa-wifi:before{content:""}.fa-calculator:before{content:""}.fa-paypal:before{content:""}.fa-google-wallet:before{content:""}.fa-cc-visa:before{content:""}.fa-cc-mastercard:before{content:""}.fa-cc-discover:before{content:""}.fa-cc-amex:before{content:""}.fa-cc-paypal:before{content:""}.fa-cc-stripe:before{content:""}.fa-bell-slash:before{content:""}.fa-bell-slash-o:before{content:""}.fa-trash:before{content:""}.fa-copyright:before{content:""}.fa-at:before{content:""}.fa-eyedropper:before{content:""}.fa-paint-brush:before{content:""}.fa-birthday-cake:before{content:""}.fa-area-chart:before{content:""}.fa-pie-chart:before{content:""}.fa-line-chart:before{content:""}.fa-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-bicycle:before{content:""}.fa-bus:before{content:""}.fa-ioxhost:before{content:""}.fa-angellist:before{content:""}.fa-cc:before{content:""}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:""}.fa-meanpath:before{content:""}.fa-buysellads:before{content:""}.fa-connectdevelop:before{content:""}.fa-dashcube:before{content:""}.fa-forumbee:before{content:""}.fa-leanpub:before{content:""}.fa-sellsy:before{content:""}.fa-shirtsinbulk:before{content:""}.fa-simplybuilt:before{content:""}.fa-skyatlas:before{content:""}.fa-cart-plus:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-diamond:before{content:""}.fa-ship:before{content:""}.fa-user-secret:before{content:""}.fa-motorcycle:before{content:""}.fa-street-view:before{content:""}.fa-heartbeat:before{content:""}.fa-venus:before{content:""}.fa-mars:before{content:""}.fa-mercury:before{content:""}.fa-intersex:before,.fa-transgender:before{content:""}.fa-transgender-alt:before{content:""}.fa-venus-double:before{content:""}.fa-mars-double:before{content:""}.fa-venus-mars:before{content:""}.fa-mars-stroke:before{content:""}.fa-mars-stroke-v:before{content:""}.fa-mars-stroke-h:before{content:""}.fa-neuter:before{content:""}.fa-genderless:before{content:""}.fa-facebook-official:before{content:""}.fa-pinterest-p:before{content:""}.fa-whatsapp:before{content:""}.fa-server:before{content:""}.fa-user-plus:before{content:""}.fa-user-times:before{content:""}.fa-bed:before,.fa-hotel:before{content:""}.fa-viacoin:before{content:""}.fa-train:before{content:""}.fa-subway:before{content:""}.fa-medium:before{content:""}.fa-y-combinator:before,.fa-yc:before{content:""}.fa-optin-monster:before{content:""}.fa-opencart:before{content:""}.fa-expeditedssl:before{content:""}.fa-battery-4:before,.fa-battery-full:before,.fa-battery:before{content:""}.fa-battery-3:before,.fa-battery-three-quarters:before{content:""}.fa-battery-2:before,.fa-battery-half:before{content:""}.fa-battery-1:before,.fa-battery-quarter:before{content:""}.fa-battery-0:before,.fa-battery-empty:before{content:""}.fa-mouse-pointer:before{content:""}.fa-i-cursor:before{content:""}.fa-object-group:before{content:""}.fa-object-ungroup:before{content:""}.fa-sticky-note:before{content:""}.fa-sticky-note-o:before{content:""}.fa-cc-jcb:before{content:""}.fa-cc-diners-club:before{content:""}.fa-clone:before{content:""}.fa-balance-scale:before{content:""}.fa-hourglass-o:before{content:""}.fa-hourglass-1:before,.fa-hourglass-start:before{content:""}.fa-hourglass-2:before,.fa-hourglass-half:before{content:""}.fa-hourglass-3:before,.fa-hourglass-end:before{content:""}.fa-hourglass:before{content:""}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:""}.fa-hand-paper-o:before,.fa-hand-stop-o:before{content:""}.fa-hand-scissors-o:before{content:""}.fa-hand-lizard-o:before{content:""}.fa-hand-spock-o:before{content:""}.fa-hand-pointer-o:before{content:""}.fa-hand-peace-o:before{content:""}.fa-trademark:before{content:""}.fa-registered:before{content:""}.fa-creative-commons:before{content:""}.fa-gg:before{content:""}.fa-gg-circle:before{content:""}.fa-tripadvisor:before{content:""}.fa-odnoklassniki:before{content:""}.fa-odnoklassniki-square:before{content:""}.fa-get-pocket:before{content:""}.fa-wikipedia-w:before{content:""}.fa-safari:before{content:""}.fa-chrome:before{content:""}.fa-firefox:before{content:""}.fa-opera:before{content:""}.fa-internet-explorer:before{content:""}.fa-television:before,.fa-tv:before{content:""}.fa-contao:before{content:""}.fa-500px:before{content:""}.fa-amazon:before{content:""}.fa-calendar-plus-o:before{content:""}.fa-calendar-minus-o:before{content:""}.fa-calendar-times-o:before{content:""}.fa-calendar-check-o:before{content:""}.fa-industry:before{content:""}.fa-map-pin:before{content:""}.fa-map-signs:before{content:""}.fa-map-o:before{content:""}.fa-map:before{content:""}.fa-commenting:before{content:""}.fa-commenting-o:before{content:""}.fa-houzz:before{content:""}.fa-vimeo:before{content:""}.fa-black-tie:before{content:""}.fa-fonticons:before{content:""}.fa-reddit-alien:before{content:""}.fa-edge:before{content:""}.fa-credit-card-alt:before{content:""}.fa-codiepie:before{content:""}.fa-modx:before{content:""}.fa-fort-awesome:before{content:""}.fa-usb:before{content:""}.fa-product-hunt:before{content:""}.fa-mixcloud:before{content:""}.fa-scribd:before{content:""}.fa-pause-circle:before{content:""}.fa-pause-circle-o:before{content:""}.fa-stop-circle:before{content:""}.fa-stop-circle-o:before{content:""}.fa-shopping-bag:before{content:""}.fa-shopping-basket:before{content:""}.fa-hashtag:before{content:""}.fa-bluetooth:before{content:""}.fa-bluetooth-b:before{content:""}.fa-percent:before{content:""}.fa-gitlab:before,.icon-gitlab:before{content:""}.fa-wpbeginner:before{content:""}.fa-wpforms:before{content:""}.fa-envira:before{content:""}.fa-universal-access:before{content:""}.fa-wheelchair-alt:before{content:""}.fa-question-circle-o:before{content:""}.fa-blind:before{content:""}.fa-audio-description:before{content:""}.fa-volume-control-phone:before{content:""}.fa-braille:before{content:""}.fa-assistive-listening-systems:before{content:""}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before{content:""}.fa-deaf:before,.fa-deafness:before,.fa-hard-of-hearing:before{content:""}.fa-glide:before{content:""}.fa-glide-g:before{content:""}.fa-sign-language:before,.fa-signing:before{content:""}.fa-low-vision:before{content:""}.fa-viadeo:before{content:""}.fa-viadeo-square:before{content:""}.fa-snapchat:before{content:""}.fa-snapchat-ghost:before{content:""}.fa-snapchat-square:before{content:""}.fa-pied-piper:before{content:""}.fa-first-order:before{content:""}.fa-yoast:before{content:""}.fa-themeisle:before{content:""}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:""}.fa-fa:before,.fa-font-awesome:before{content:""}.fa-handshake-o:before{content:""}.fa-envelope-open:before{content:""}.fa-envelope-open-o:before{content:""}.fa-linode:before{content:""}.fa-address-book:before{content:""}.fa-address-book-o:before{content:""}.fa-address-card:before,.fa-vcard:before{content:""}.fa-address-card-o:before,.fa-vcard-o:before{content:""}.fa-user-circle:before{content:""}.fa-user-circle-o:before{content:""}.fa-user-o:before{content:""}.fa-id-badge:before{content:""}.fa-drivers-license:before,.fa-id-card:before{content:""}.fa-drivers-license-o:before,.fa-id-card-o:before{content:""}.fa-quora:before{content:""}.fa-free-code-camp:before{content:""}.fa-telegram:before{content:""}.fa-thermometer-4:before,.fa-thermometer-full:before,.fa-thermometer:before{content:""}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:""}.fa-thermometer-2:before,.fa-thermometer-half:before{content:""}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:""}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:""}.fa-shower:before{content:""}.fa-bath:before,.fa-bathtub:before,.fa-s15:before{content:""}.fa-podcast:before{content:""}.fa-window-maximize:before{content:""}.fa-window-minimize:before{content:""}.fa-window-restore:before{content:""}.fa-times-rectangle:before,.fa-window-close:before{content:""}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:""}.fa-bandcamp:before{content:""}.fa-grav:before{content:""}.fa-etsy:before{content:""}.fa-imdb:before{content:""}.fa-ravelry:before{content:""}.fa-eercast:before{content:""}.fa-microchip:before{content:""}.fa-snowflake-o:before{content:""}.fa-superpowers:before{content:""}.fa-wpexplorer:before{content:""}.fa-meetup:before{content:""}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.fa,.icon,.rst-content .admonition-title,.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content code.download span:first-child,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.wy-dropdown .caret,.wy-inline-validate.wy-inline-validate-danger .wy-input-context,.wy-inline-validate.wy-inline-validate-info .wy-input-context,.wy-inline-validate.wy-inline-validate-success .wy-input-context,.wy-inline-validate.wy-inline-validate-warning .wy-input-context,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li button.toctree-expand{font-family:inherit}.fa:before,.icon:before,.rst-content .admonition-title:before,.rst-content .code-block-caption .headerlink:before,.rst-content .eqno .headerlink:before,.rst-content code.download span:first-child:before,.rst-content dl dt .headerlink:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content p .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before,.wy-menu-vertical li button.toctree-expand:before{font-family:FontAwesome;display:inline-block;font-style:normal;font-weight:400;line-height:1;text-decoration:inherit}.rst-content .code-block-caption a .headerlink,.rst-content .eqno a .headerlink,.rst-content a .admonition-title,.rst-content code.download a span:first-child,.rst-content dl dt a .headerlink,.rst-content h1 a .headerlink,.rst-content h2 a .headerlink,.rst-content h3 a .headerlink,.rst-content h4 a .headerlink,.rst-content h5 a .headerlink,.rst-content h6 a .headerlink,.rst-content p.caption a .headerlink,.rst-content p a .headerlink,.rst-content table>caption a .headerlink,.rst-content tt.download a span:first-child,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li a button.toctree-expand,a .fa,a .icon,a .rst-content .admonition-title,a .rst-content .code-block-caption .headerlink,a .rst-content .eqno .headerlink,a .rst-content code.download span:first-child,a .rst-content dl dt .headerlink,a .rst-content h1 .headerlink,a .rst-content h2 .headerlink,a .rst-content h3 .headerlink,a .rst-content h4 .headerlink,a .rst-content h5 .headerlink,a .rst-content h6 .headerlink,a .rst-content p.caption .headerlink,a .rst-content p .headerlink,a .rst-content table>caption .headerlink,a .rst-content tt.download span:first-child,a .wy-menu-vertical li button.toctree-expand{display:inline-block;text-decoration:inherit}.btn .fa,.btn .icon,.btn .rst-content .admonition-title,.btn .rst-content .code-block-caption .headerlink,.btn .rst-content .eqno .headerlink,.btn .rst-content code.download span:first-child,.btn .rst-content dl dt .headerlink,.btn .rst-content h1 .headerlink,.btn .rst-content h2 .headerlink,.btn .rst-content h3 .headerlink,.btn .rst-content h4 .headerlink,.btn .rst-content h5 .headerlink,.btn .rst-content h6 .headerlink,.btn .rst-content p .headerlink,.btn .rst-content table>caption .headerlink,.btn .rst-content tt.download span:first-child,.btn .wy-menu-vertical li.current>a button.toctree-expand,.btn .wy-menu-vertical li.on a button.toctree-expand,.btn .wy-menu-vertical li button.toctree-expand,.nav .fa,.nav .icon,.nav .rst-content .admonition-title,.nav .rst-content .code-block-caption .headerlink,.nav .rst-content .eqno .headerlink,.nav .rst-content code.download span:first-child,.nav .rst-content dl dt .headerlink,.nav .rst-content h1 .headerlink,.nav .rst-content h2 .headerlink,.nav .rst-content h3 .headerlink,.nav .rst-content h4 .headerlink,.nav .rst-content h5 .headerlink,.nav .rst-content h6 .headerlink,.nav .rst-content p .headerlink,.nav .rst-content table>caption .headerlink,.nav .rst-content tt.download span:first-child,.nav .wy-menu-vertical li.current>a button.toctree-expand,.nav .wy-menu-vertical li.on a button.toctree-expand,.nav .wy-menu-vertical li button.toctree-expand,.rst-content .btn .admonition-title,.rst-content .code-block-caption .btn .headerlink,.rst-content .code-block-caption .nav .headerlink,.rst-content .eqno .btn .headerlink,.rst-content .eqno .nav .headerlink,.rst-content .nav .admonition-title,.rst-content code.download .btn span:first-child,.rst-content code.download .nav span:first-child,.rst-content dl dt .btn .headerlink,.rst-content dl dt .nav .headerlink,.rst-content h1 .btn .headerlink,.rst-content h1 .nav .headerlink,.rst-content h2 .btn .headerlink,.rst-content h2 .nav .headerlink,.rst-content h3 .btn .headerlink,.rst-content h3 .nav .headerlink,.rst-content h4 .btn .headerlink,.rst-content h4 .nav .headerlink,.rst-content h5 .btn .headerlink,.rst-content h5 .nav .headerlink,.rst-content h6 .btn .headerlink,.rst-content h6 .nav .headerlink,.rst-content p .btn .headerlink,.rst-content p .nav .headerlink,.rst-content table>caption .btn .headerlink,.rst-content table>caption .nav .headerlink,.rst-content tt.download .btn span:first-child,.rst-content tt.download .nav span:first-child,.wy-menu-vertical li .btn button.toctree-expand,.wy-menu-vertical li.current>a .btn button.toctree-expand,.wy-menu-vertical li.current>a .nav button.toctree-expand,.wy-menu-vertical li .nav button.toctree-expand,.wy-menu-vertical li.on a .btn button.toctree-expand,.wy-menu-vertical li.on a .nav button.toctree-expand{display:inline}.btn .fa-large.icon,.btn .fa.fa-large,.btn .rst-content .code-block-caption .fa-large.headerlink,.btn .rst-content .eqno .fa-large.headerlink,.btn .rst-content .fa-large.admonition-title,.btn .rst-content code.download span.fa-large:first-child,.btn .rst-content dl dt .fa-large.headerlink,.btn .rst-content h1 .fa-large.headerlink,.btn .rst-content h2 .fa-large.headerlink,.btn .rst-content h3 .fa-large.headerlink,.btn .rst-content h4 .fa-large.headerlink,.btn .rst-content h5 .fa-large.headerlink,.btn .rst-content h6 .fa-large.headerlink,.btn .rst-content p .fa-large.headerlink,.btn .rst-content table>caption .fa-large.headerlink,.btn .rst-content tt.download span.fa-large:first-child,.btn .wy-menu-vertical li button.fa-large.toctree-expand,.nav .fa-large.icon,.nav .fa.fa-large,.nav .rst-content .code-block-caption .fa-large.headerlink,.nav .rst-content .eqno .fa-large.headerlink,.nav .rst-content .fa-large.admonition-title,.nav .rst-content code.download span.fa-large:first-child,.nav .rst-content dl dt .fa-large.headerlink,.nav .rst-content h1 .fa-large.headerlink,.nav .rst-content h2 .fa-large.headerlink,.nav .rst-content h3 .fa-large.headerlink,.nav .rst-content h4 .fa-large.headerlink,.nav .rst-content h5 .fa-large.headerlink,.nav .rst-content h6 .fa-large.headerlink,.nav .rst-content p .fa-large.headerlink,.nav .rst-content table>caption .fa-large.headerlink,.nav .rst-content tt.download span.fa-large:first-child,.nav .wy-menu-vertical li button.fa-large.toctree-expand,.rst-content .btn .fa-large.admonition-title,.rst-content .code-block-caption .btn .fa-large.headerlink,.rst-content .code-block-caption .nav .fa-large.headerlink,.rst-content .eqno .btn .fa-large.headerlink,.rst-content .eqno .nav .fa-large.headerlink,.rst-content .nav .fa-large.admonition-title,.rst-content code.download .btn span.fa-large:first-child,.rst-content code.download .nav span.fa-large:first-child,.rst-content dl dt .btn .fa-large.headerlink,.rst-content dl dt .nav .fa-large.headerlink,.rst-content h1 .btn .fa-large.headerlink,.rst-content h1 .nav .fa-large.headerlink,.rst-content h2 .btn .fa-large.headerlink,.rst-content h2 .nav .fa-large.headerlink,.rst-content h3 .btn .fa-large.headerlink,.rst-content h3 .nav .fa-large.headerlink,.rst-content h4 .btn .fa-large.headerlink,.rst-content h4 .nav .fa-large.headerlink,.rst-content h5 .btn .fa-large.headerlink,.rst-content h5 .nav .fa-large.headerlink,.rst-content h6 .btn .fa-large.headerlink,.rst-content h6 .nav .fa-large.headerlink,.rst-content p .btn .fa-large.headerlink,.rst-content p .nav .fa-large.headerlink,.rst-content table>caption .btn .fa-large.headerlink,.rst-content table>caption .nav .fa-large.headerlink,.rst-content tt.download .btn span.fa-large:first-child,.rst-content tt.download .nav span.fa-large:first-child,.wy-menu-vertical li .btn button.fa-large.toctree-expand,.wy-menu-vertical li .nav button.fa-large.toctree-expand{line-height:.9em}.btn .fa-spin.icon,.btn .fa.fa-spin,.btn .rst-content .code-block-caption .fa-spin.headerlink,.btn .rst-content .eqno .fa-spin.headerlink,.btn .rst-content .fa-spin.admonition-title,.btn .rst-content code.download span.fa-spin:first-child,.btn .rst-content dl dt .fa-spin.headerlink,.btn .rst-content h1 .fa-spin.headerlink,.btn .rst-content h2 .fa-spin.headerlink,.btn .rst-content h3 .fa-spin.headerlink,.btn .rst-content h4 .fa-spin.headerlink,.btn .rst-content h5 .fa-spin.headerlink,.btn .rst-content h6 .fa-spin.headerlink,.btn .rst-content p .fa-spin.headerlink,.btn .rst-content table>caption .fa-spin.headerlink,.btn .rst-content tt.download span.fa-spin:first-child,.btn .wy-menu-vertical li button.fa-spin.toctree-expand,.nav .fa-spin.icon,.nav .fa.fa-spin,.nav .rst-content .code-block-caption .fa-spin.headerlink,.nav .rst-content .eqno .fa-spin.headerlink,.nav .rst-content .fa-spin.admonition-title,.nav .rst-content code.download span.fa-spin:first-child,.nav .rst-content dl dt .fa-spin.headerlink,.nav .rst-content h1 .fa-spin.headerlink,.nav .rst-content h2 .fa-spin.headerlink,.nav .rst-content h3 .fa-spin.headerlink,.nav .rst-content h4 .fa-spin.headerlink,.nav .rst-content h5 .fa-spin.headerlink,.nav .rst-content h6 .fa-spin.headerlink,.nav .rst-content p .fa-spin.headerlink,.nav .rst-content table>caption .fa-spin.headerlink,.nav .rst-content tt.download span.fa-spin:first-child,.nav .wy-menu-vertical li button.fa-spin.toctree-expand,.rst-content .btn .fa-spin.admonition-title,.rst-content .code-block-caption .btn .fa-spin.headerlink,.rst-content .code-block-caption .nav .fa-spin.headerlink,.rst-content .eqno .btn .fa-spin.headerlink,.rst-content .eqno .nav .fa-spin.headerlink,.rst-content .nav .fa-spin.admonition-title,.rst-content code.download .btn span.fa-spin:first-child,.rst-content code.download .nav span.fa-spin:first-child,.rst-content dl dt .btn .fa-spin.headerlink,.rst-content dl dt .nav .fa-spin.headerlink,.rst-content h1 .btn .fa-spin.headerlink,.rst-content h1 .nav .fa-spin.headerlink,.rst-content h2 .btn .fa-spin.headerlink,.rst-content h2 .nav .fa-spin.headerlink,.rst-content h3 .btn .fa-spin.headerlink,.rst-content h3 .nav .fa-spin.headerlink,.rst-content h4 .btn .fa-spin.headerlink,.rst-content h4 .nav .fa-spin.headerlink,.rst-content h5 .btn .fa-spin.headerlink,.rst-content h5 .nav .fa-spin.headerlink,.rst-content h6 .btn .fa-spin.headerlink,.rst-content h6 .nav .fa-spin.headerlink,.rst-content p .btn .fa-spin.headerlink,.rst-content p .nav .fa-spin.headerlink,.rst-content table>caption .btn .fa-spin.headerlink,.rst-content table>caption .nav .fa-spin.headerlink,.rst-content tt.download .btn span.fa-spin:first-child,.rst-content tt.download .nav span.fa-spin:first-child,.wy-menu-vertical li .btn button.fa-spin.toctree-expand,.wy-menu-vertical li .nav button.fa-spin.toctree-expand{display:inline-block}.btn.fa:before,.btn.icon:before,.rst-content .btn.admonition-title:before,.rst-content .code-block-caption .btn.headerlink:before,.rst-content .eqno .btn.headerlink:before,.rst-content code.download span.btn:first-child:before,.rst-content dl dt .btn.headerlink:before,.rst-content h1 .btn.headerlink:before,.rst-content h2 .btn.headerlink:before,.rst-content h3 .btn.headerlink:before,.rst-content h4 .btn.headerlink:before,.rst-content h5 .btn.headerlink:before,.rst-content h6 .btn.headerlink:before,.rst-content p .btn.headerlink:before,.rst-content table>caption .btn.headerlink:before,.rst-content tt.download span.btn:first-child:before,.wy-menu-vertical li button.btn.toctree-expand:before{opacity:.5;-webkit-transition:opacity .05s ease-in;-moz-transition:opacity .05s ease-in;transition:opacity .05s ease-in}.btn.fa:hover:before,.btn.icon:hover:before,.rst-content .btn.admonition-title:hover:before,.rst-content .code-block-caption .btn.headerlink:hover:before,.rst-content .eqno .btn.headerlink:hover:before,.rst-content code.download span.btn:first-child:hover:before,.rst-content dl dt .btn.headerlink:hover:before,.rst-content h1 .btn.headerlink:hover:before,.rst-content h2 .btn.headerlink:hover:before,.rst-content h3 .btn.headerlink:hover:before,.rst-content h4 .btn.headerlink:hover:before,.rst-content h5 .btn.headerlink:hover:before,.rst-content h6 .btn.headerlink:hover:before,.rst-content p .btn.headerlink:hover:before,.rst-content table>caption .btn.headerlink:hover:before,.rst-content tt.download span.btn:first-child:hover:before,.wy-menu-vertical li button.btn.toctree-expand:hover:before{opacity:1}.btn-mini .fa:before,.btn-mini .icon:before,.btn-mini .rst-content .admonition-title:before,.btn-mini .rst-content .code-block-caption .headerlink:before,.btn-mini .rst-content .eqno .headerlink:before,.btn-mini .rst-content code.download span:first-child:before,.btn-mini .rst-content dl dt .headerlink:before,.btn-mini .rst-content h1 .headerlink:before,.btn-mini .rst-content h2 .headerlink:before,.btn-mini .rst-content h3 .headerlink:before,.btn-mini .rst-content h4 .headerlink:before,.btn-mini .rst-content h5 .headerlink:before,.btn-mini .rst-content h6 .headerlink:before,.btn-mini .rst-content p .headerlink:before,.btn-mini .rst-content table>caption .headerlink:before,.btn-mini .rst-content tt.download span:first-child:before,.btn-mini .wy-menu-vertical li button.toctree-expand:before,.rst-content .btn-mini .admonition-title:before,.rst-content .code-block-caption .btn-mini .headerlink:before,.rst-content .eqno .btn-mini .headerlink:before,.rst-content code.download .btn-mini span:first-child:before,.rst-content dl dt .btn-mini .headerlink:before,.rst-content h1 .btn-mini .headerlink:before,.rst-content h2 .btn-mini .headerlink:before,.rst-content h3 .btn-mini .headerlink:before,.rst-content h4 .btn-mini .headerlink:before,.rst-content h5 .btn-mini .headerlink:before,.rst-content h6 .btn-mini .headerlink:before,.rst-content p .btn-mini .headerlink:before,.rst-content table>caption .btn-mini .headerlink:before,.rst-content tt.download .btn-mini span:first-child:before,.wy-menu-vertical li .btn-mini button.toctree-expand:before{font-size:14px;vertical-align:-15%}.rst-content .admonition,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning,.wy-alert{padding:12px;line-height:24px;margin-bottom:24px;background:#e7f2fa}.rst-content .admonition-title,.wy-alert-title{font-weight:700;display:block;color:#fff;background:#6ab0de;padding:6px 12px;margin:-12px -12px 12px}.rst-content .danger,.rst-content .error,.rst-content .wy-alert-danger.admonition,.rst-content .wy-alert-danger.admonition-todo,.rst-content .wy-alert-danger.attention,.rst-content .wy-alert-danger.caution,.rst-content .wy-alert-danger.hint,.rst-content .wy-alert-danger.important,.rst-content .wy-alert-danger.note,.rst-content .wy-alert-danger.seealso,.rst-content .wy-alert-danger.tip,.rst-content .wy-alert-danger.warning,.wy-alert.wy-alert-danger{background:#fdf3f2}.rst-content .danger .admonition-title,.rst-content .danger .wy-alert-title,.rst-content .error .admonition-title,.rst-content .error .wy-alert-title,.rst-content .wy-alert-danger.admonition-todo .admonition-title,.rst-content .wy-alert-danger.admonition-todo .wy-alert-title,.rst-content .wy-alert-danger.admonition .admonition-title,.rst-content .wy-alert-danger.admonition .wy-alert-title,.rst-content .wy-alert-danger.attention .admonition-title,.rst-content .wy-alert-danger.attention .wy-alert-title,.rst-content .wy-alert-danger.caution .admonition-title,.rst-content .wy-alert-danger.caution .wy-alert-title,.rst-content .wy-alert-danger.hint .admonition-title,.rst-content .wy-alert-danger.hint .wy-alert-title,.rst-content .wy-alert-danger.important .admonition-title,.rst-content .wy-alert-danger.important .wy-alert-title,.rst-content .wy-alert-danger.note .admonition-title,.rst-content .wy-alert-danger.note .wy-alert-title,.rst-content .wy-alert-danger.seealso .admonition-title,.rst-content .wy-alert-danger.seealso .wy-alert-title,.rst-content .wy-alert-danger.tip .admonition-title,.rst-content .wy-alert-danger.tip .wy-alert-title,.rst-content .wy-alert-danger.warning .admonition-title,.rst-content .wy-alert-danger.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-danger .admonition-title,.wy-alert.wy-alert-danger .rst-content .admonition-title,.wy-alert.wy-alert-danger .wy-alert-title{background:#f29f97}.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .warning,.rst-content .wy-alert-warning.admonition,.rst-content .wy-alert-warning.danger,.rst-content .wy-alert-warning.error,.rst-content .wy-alert-warning.hint,.rst-content .wy-alert-warning.important,.rst-content .wy-alert-warning.note,.rst-content .wy-alert-warning.seealso,.rst-content .wy-alert-warning.tip,.wy-alert.wy-alert-warning{background:#ffedcc}.rst-content .admonition-todo .admonition-title,.rst-content .admonition-todo .wy-alert-title,.rst-content .attention .admonition-title,.rst-content .attention .wy-alert-title,.rst-content .caution .admonition-title,.rst-content .caution .wy-alert-title,.rst-content .warning .admonition-title,.rst-content .warning .wy-alert-title,.rst-content .wy-alert-warning.admonition .admonition-title,.rst-content .wy-alert-warning.admonition .wy-alert-title,.rst-content .wy-alert-warning.danger .admonition-title,.rst-content .wy-alert-warning.danger .wy-alert-title,.rst-content .wy-alert-warning.error .admonition-title,.rst-content .wy-alert-warning.error .wy-alert-title,.rst-content .wy-alert-warning.hint .admonition-title,.rst-content .wy-alert-warning.hint .wy-alert-title,.rst-content .wy-alert-warning.important .admonition-title,.rst-content .wy-alert-warning.important .wy-alert-title,.rst-content .wy-alert-warning.note .admonition-title,.rst-content .wy-alert-warning.note .wy-alert-title,.rst-content .wy-alert-warning.seealso .admonition-title,.rst-content .wy-alert-warning.seealso .wy-alert-title,.rst-content .wy-alert-warning.tip .admonition-title,.rst-content .wy-alert-warning.tip .wy-alert-title,.rst-content .wy-alert.wy-alert-warning .admonition-title,.wy-alert.wy-alert-warning .rst-content .admonition-title,.wy-alert.wy-alert-warning .wy-alert-title{background:#f0b37e}.rst-content .note,.rst-content .seealso,.rst-content .wy-alert-info.admonition,.rst-content .wy-alert-info.admonition-todo,.rst-content .wy-alert-info.attention,.rst-content .wy-alert-info.caution,.rst-content .wy-alert-info.danger,.rst-content .wy-alert-info.error,.rst-content .wy-alert-info.hint,.rst-content .wy-alert-info.important,.rst-content .wy-alert-info.tip,.rst-content .wy-alert-info.warning,.wy-alert.wy-alert-info{background:#e7f2fa}.rst-content .note .admonition-title,.rst-content .note .wy-alert-title,.rst-content .seealso .admonition-title,.rst-content .seealso .wy-alert-title,.rst-content .wy-alert-info.admonition-todo .admonition-title,.rst-content .wy-alert-info.admonition-todo .wy-alert-title,.rst-content .wy-alert-info.admonition .admonition-title,.rst-content .wy-alert-info.admonition .wy-alert-title,.rst-content .wy-alert-info.attention .admonition-title,.rst-content .wy-alert-info.attention .wy-alert-title,.rst-content .wy-alert-info.caution .admonition-title,.rst-content .wy-alert-info.caution .wy-alert-title,.rst-content .wy-alert-info.danger .admonition-title,.rst-content .wy-alert-info.danger .wy-alert-title,.rst-content .wy-alert-info.error .admonition-title,.rst-content .wy-alert-info.error .wy-alert-title,.rst-content .wy-alert-info.hint .admonition-title,.rst-content .wy-alert-info.hint .wy-alert-title,.rst-content .wy-alert-info.important .admonition-title,.rst-content .wy-alert-info.important .wy-alert-title,.rst-content .wy-alert-info.tip .admonition-title,.rst-content .wy-alert-info.tip .wy-alert-title,.rst-content .wy-alert-info.warning .admonition-title,.rst-content .wy-alert-info.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-info .admonition-title,.wy-alert.wy-alert-info .rst-content .admonition-title,.wy-alert.wy-alert-info .wy-alert-title{background:#6ab0de}.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .wy-alert-success.admonition,.rst-content .wy-alert-success.admonition-todo,.rst-content .wy-alert-success.attention,.rst-content .wy-alert-success.caution,.rst-content .wy-alert-success.danger,.rst-content .wy-alert-success.error,.rst-content .wy-alert-success.note,.rst-content .wy-alert-success.seealso,.rst-content .wy-alert-success.warning,.wy-alert.wy-alert-success{background:#dbfaf4}.rst-content .hint .admonition-title,.rst-content .hint .wy-alert-title,.rst-content .important .admonition-title,.rst-content .important .wy-alert-title,.rst-content .tip .admonition-title,.rst-content .tip .wy-alert-title,.rst-content .wy-alert-success.admonition-todo .admonition-title,.rst-content .wy-alert-success.admonition-todo .wy-alert-title,.rst-content .wy-alert-success.admonition .admonition-title,.rst-content .wy-alert-success.admonition .wy-alert-title,.rst-content .wy-alert-success.attention .admonition-title,.rst-content .wy-alert-success.attention .wy-alert-title,.rst-content .wy-alert-success.caution .admonition-title,.rst-content .wy-alert-success.caution .wy-alert-title,.rst-content .wy-alert-success.danger .admonition-title,.rst-content .wy-alert-success.danger .wy-alert-title,.rst-content .wy-alert-success.error .admonition-title,.rst-content .wy-alert-success.error .wy-alert-title,.rst-content .wy-alert-success.note .admonition-title,.rst-content .wy-alert-success.note .wy-alert-title,.rst-content .wy-alert-success.seealso .admonition-title,.rst-content .wy-alert-success.seealso .wy-alert-title,.rst-content .wy-alert-success.warning .admonition-title,.rst-content .wy-alert-success.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-success .admonition-title,.wy-alert.wy-alert-success .rst-content .admonition-title,.wy-alert.wy-alert-success .wy-alert-title{background:#1abc9c}.rst-content .wy-alert-neutral.admonition,.rst-content .wy-alert-neutral.admonition-todo,.rst-content .wy-alert-neutral.attention,.rst-content .wy-alert-neutral.caution,.rst-content .wy-alert-neutral.danger,.rst-content .wy-alert-neutral.error,.rst-content .wy-alert-neutral.hint,.rst-content .wy-alert-neutral.important,.rst-content .wy-alert-neutral.note,.rst-content .wy-alert-neutral.seealso,.rst-content .wy-alert-neutral.tip,.rst-content .wy-alert-neutral.warning,.wy-alert.wy-alert-neutral{background:#f3f6f6}.rst-content .wy-alert-neutral.admonition-todo .admonition-title,.rst-content .wy-alert-neutral.admonition-todo .wy-alert-title,.rst-content .wy-alert-neutral.admonition .admonition-title,.rst-content .wy-alert-neutral.admonition .wy-alert-title,.rst-content .wy-alert-neutral.attention .admonition-title,.rst-content .wy-alert-neutral.attention .wy-alert-title,.rst-content .wy-alert-neutral.caution .admonition-title,.rst-content .wy-alert-neutral.caution .wy-alert-title,.rst-content .wy-alert-neutral.danger .admonition-title,.rst-content .wy-alert-neutral.danger .wy-alert-title,.rst-content .wy-alert-neutral.error .admonition-title,.rst-content .wy-alert-neutral.error .wy-alert-title,.rst-content .wy-alert-neutral.hint .admonition-title,.rst-content .wy-alert-neutral.hint .wy-alert-title,.rst-content .wy-alert-neutral.important .admonition-title,.rst-content .wy-alert-neutral.important .wy-alert-title,.rst-content .wy-alert-neutral.note .admonition-title,.rst-content .wy-alert-neutral.note .wy-alert-title,.rst-content .wy-alert-neutral.seealso .admonition-title,.rst-content .wy-alert-neutral.seealso .wy-alert-title,.rst-content .wy-alert-neutral.tip .admonition-title,.rst-content .wy-alert-neutral.tip .wy-alert-title,.rst-content .wy-alert-neutral.warning .admonition-title,.rst-content .wy-alert-neutral.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-neutral .admonition-title,.wy-alert.wy-alert-neutral .rst-content .admonition-title,.wy-alert.wy-alert-neutral .wy-alert-title{color:#404040;background:#e1e4e5}.rst-content .wy-alert-neutral.admonition-todo a,.rst-content .wy-alert-neutral.admonition a,.rst-content .wy-alert-neutral.attention a,.rst-content .wy-alert-neutral.caution a,.rst-content .wy-alert-neutral.danger a,.rst-content .wy-alert-neutral.error a,.rst-content .wy-alert-neutral.hint a,.rst-content .wy-alert-neutral.important a,.rst-content .wy-alert-neutral.note a,.rst-content .wy-alert-neutral.seealso a,.rst-content .wy-alert-neutral.tip a,.rst-content .wy-alert-neutral.warning a,.wy-alert.wy-alert-neutral a{color:#2980b9}.rst-content .admonition-todo p:last-child,.rst-content .admonition p:last-child,.rst-content .attention p:last-child,.rst-content .caution p:last-child,.rst-content .danger p:last-child,.rst-content .error p:last-child,.rst-content .hint p:last-child,.rst-content .important p:last-child,.rst-content .note p:last-child,.rst-content .seealso p:last-child,.rst-content .tip p:last-child,.rst-content .warning p:last-child,.wy-alert p:last-child{margin-bottom:0}.wy-tray-container{position:fixed;bottom:0;left:0;z-index:600}.wy-tray-container li{display:block;width:300px;background:transparent;color:#fff;text-align:center;box-shadow:0 5px 5px 0 rgba(0,0,0,.1);padding:0 24px;min-width:20%;opacity:0;height:0;line-height:56px;overflow:hidden;-webkit-transition:all .3s ease-in;-moz-transition:all .3s ease-in;transition:all .3s ease-in}.wy-tray-container li.wy-tray-item-success{background:#27ae60}.wy-tray-container li.wy-tray-item-info{background:#2980b9}.wy-tray-container li.wy-tray-item-warning{background:#e67e22}.wy-tray-container li.wy-tray-item-danger{background:#e74c3c}.wy-tray-container li.on{opacity:1;height:56px}@media screen and (max-width:768px){.wy-tray-container{bottom:auto;top:0;width:100%}.wy-tray-container li{width:100%}}button{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle;cursor:pointer;line-height:normal;-webkit-appearance:button;*overflow:visible}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}button[disabled]{cursor:default}.btn{display:inline-block;border-radius:2px;line-height:normal;white-space:nowrap;text-align:center;cursor:pointer;font-size:100%;padding:6px 12px 8px;color:#fff;border:1px solid rgba(0,0,0,.1);background-color:#27ae60;text-decoration:none;font-weight:400;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;box-shadow:inset 0 1px 2px -1px hsla(0,0%,100%,.5),inset 0 -2px 0 0 rgba(0,0,0,.1);outline-none:false;vertical-align:middle;*display:inline;zoom:1;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:all .1s linear;-moz-transition:all .1s linear;transition:all .1s linear}.btn-hover{background:#2e8ece;color:#fff}.btn:hover{background:#2cc36b;color:#fff}.btn:focus{background:#2cc36b;outline:0}.btn:active{box-shadow:inset 0 -1px 0 0 rgba(0,0,0,.05),inset 0 2px 0 0 rgba(0,0,0,.1);padding:8px 12px 6px}.btn:visited{color:#fff}.btn-disabled,.btn-disabled:active,.btn-disabled:focus,.btn-disabled:hover,.btn:disabled{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none}.btn::-moz-focus-inner{padding:0;border:0}.btn-small{font-size:80%}.btn-info{background-color:#2980b9!important}.btn-info:hover{background-color:#2e8ece!important}.btn-neutral{background-color:#f3f6f6!important;color:#404040!important}.btn-neutral:hover{background-color:#e5ebeb!important;color:#404040}.btn-neutral:visited{color:#404040!important}.btn-success{background-color:#27ae60!important}.btn-success:hover{background-color:#295!important}.btn-danger{background-color:#e74c3c!important}.btn-danger:hover{background-color:#ea6153!important}.btn-warning{background-color:#e67e22!important}.btn-warning:hover{background-color:#e98b39!important}.btn-invert{background-color:#222}.btn-invert:hover{background-color:#2f2f2f!important}.btn-link{background-color:transparent!important;color:#2980b9;box-shadow:none;border-color:transparent!important}.btn-link:active,.btn-link:hover{background-color:transparent!important;color:#409ad5!important;box-shadow:none}.btn-link:visited{color:#9b59b6}.wy-btn-group .btn,.wy-control .btn{vertical-align:middle}.wy-btn-group{margin-bottom:24px;*zoom:1}.wy-btn-group:after,.wy-btn-group:before{display:table;content:""}.wy-btn-group:after{clear:both}.wy-dropdown{position:relative;display:inline-block}.wy-dropdown-active .wy-dropdown-menu{display:block}.wy-dropdown-menu{position:absolute;left:0;display:none;float:left;top:100%;min-width:100%;background:#fcfcfc;z-index:100;border:1px solid #cfd7dd;box-shadow:0 2px 2px 0 rgba(0,0,0,.1);padding:12px}.wy-dropdown-menu>dd>a{display:block;clear:both;color:#404040;white-space:nowrap;font-size:90%;padding:0 12px;cursor:pointer}.wy-dropdown-menu>dd>a:hover{background:#2980b9;color:#fff}.wy-dropdown-menu>dd.divider{border-top:1px solid #cfd7dd;margin:6px 0}.wy-dropdown-menu>dd.search{padding-bottom:12px}.wy-dropdown-menu>dd.search input[type=search]{width:100%}.wy-dropdown-menu>dd.call-to-action{background:#e3e3e3;text-transform:uppercase;font-weight:500;font-size:80%}.wy-dropdown-menu>dd.call-to-action:hover{background:#e3e3e3}.wy-dropdown-menu>dd.call-to-action .btn{color:#fff}.wy-dropdown.wy-dropdown-up .wy-dropdown-menu{bottom:100%;top:auto;left:auto;right:0}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu{background:#fcfcfc;margin-top:2px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a{padding:6px 12px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a:hover{background:#2980b9;color:#fff}.wy-dropdown.wy-dropdown-left .wy-dropdown-menu{right:0;left:auto;text-align:right}.wy-dropdown-arrow:before{content:" ";border-bottom:5px solid #f5f5f5;border-left:5px solid transparent;border-right:5px solid transparent;position:absolute;display:block;top:-4px;left:50%;margin-left:-3px}.wy-dropdown-arrow.wy-dropdown-arrow-left:before{left:11px}.wy-form-stacked select{display:block}.wy-form-aligned .wy-help-inline,.wy-form-aligned input,.wy-form-aligned label,.wy-form-aligned select,.wy-form-aligned textarea{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-form-aligned .wy-control-group>label{display:inline-block;vertical-align:middle;width:10em;margin:6px 12px 0 0;float:left}.wy-form-aligned .wy-control{float:left}.wy-form-aligned .wy-control label{display:block}.wy-form-aligned .wy-control select{margin-top:6px}fieldset{margin:0}fieldset,legend{border:0;padding:0}legend{width:100%;white-space:normal;margin-bottom:24px;font-size:150%;*margin-left:-7px}label,legend{display:block}label{margin:0 0 .3125em;color:#333;font-size:90%}input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}.wy-control-group{margin-bottom:24px;max-width:1200px;margin-left:auto;margin-right:auto;*zoom:1}.wy-control-group:after,.wy-control-group:before{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group.wy-control-group-required>label:after{content:" *";color:#e74c3c}.wy-control-group .wy-form-full,.wy-control-group .wy-form-halves,.wy-control-group .wy-form-thirds{padding-bottom:12px}.wy-control-group .wy-form-full input[type=color],.wy-control-group .wy-form-full input[type=date],.wy-control-group .wy-form-full input[type=datetime-local],.wy-control-group .wy-form-full input[type=datetime],.wy-control-group .wy-form-full input[type=email],.wy-control-group .wy-form-full input[type=month],.wy-control-group .wy-form-full input[type=number],.wy-control-group .wy-form-full input[type=password],.wy-control-group .wy-form-full input[type=search],.wy-control-group .wy-form-full input[type=tel],.wy-control-group .wy-form-full input[type=text],.wy-control-group .wy-form-full input[type=time],.wy-control-group .wy-form-full input[type=url],.wy-control-group .wy-form-full input[type=week],.wy-control-group .wy-form-full select,.wy-control-group .wy-form-halves input[type=color],.wy-control-group .wy-form-halves input[type=date],.wy-control-group .wy-form-halves input[type=datetime-local],.wy-control-group .wy-form-halves input[type=datetime],.wy-control-group .wy-form-halves input[type=email],.wy-control-group .wy-form-halves input[type=month],.wy-control-group .wy-form-halves input[type=number],.wy-control-group .wy-form-halves input[type=password],.wy-control-group .wy-form-halves input[type=search],.wy-control-group .wy-form-halves input[type=tel],.wy-control-group .wy-form-halves input[type=text],.wy-control-group .wy-form-halves input[type=time],.wy-control-group .wy-form-halves input[type=url],.wy-control-group .wy-form-halves input[type=week],.wy-control-group .wy-form-halves select,.wy-control-group .wy-form-thirds input[type=color],.wy-control-group .wy-form-thirds input[type=date],.wy-control-group .wy-form-thirds input[type=datetime-local],.wy-control-group .wy-form-thirds input[type=datetime],.wy-control-group .wy-form-thirds input[type=email],.wy-control-group .wy-form-thirds input[type=month],.wy-control-group .wy-form-thirds input[type=number],.wy-control-group .wy-form-thirds input[type=password],.wy-control-group .wy-form-thirds input[type=search],.wy-control-group .wy-form-thirds input[type=tel],.wy-control-group .wy-form-thirds input[type=text],.wy-control-group .wy-form-thirds input[type=time],.wy-control-group .wy-form-thirds input[type=url],.wy-control-group .wy-form-thirds input[type=week],.wy-control-group .wy-form-thirds select{width:100%}.wy-control-group .wy-form-full{float:left;display:block;width:100%;margin-right:0}.wy-control-group .wy-form-full:last-child{margin-right:0}.wy-control-group .wy-form-halves{float:left;display:block;margin-right:2.35765%;width:48.82117%}.wy-control-group .wy-form-halves:last-child,.wy-control-group .wy-form-halves:nth-of-type(2n){margin-right:0}.wy-control-group .wy-form-halves:nth-of-type(odd){clear:left}.wy-control-group .wy-form-thirds{float:left;display:block;margin-right:2.35765%;width:31.76157%}.wy-control-group .wy-form-thirds:last-child,.wy-control-group .wy-form-thirds:nth-of-type(3n){margin-right:0}.wy-control-group .wy-form-thirds:nth-of-type(3n+1){clear:left}.wy-control-group.wy-control-group-no-input .wy-control,.wy-control-no-input{margin:6px 0 0;font-size:90%}.wy-control-no-input{display:inline-block}.wy-control-group.fluid-input input[type=color],.wy-control-group.fluid-input input[type=date],.wy-control-group.fluid-input input[type=datetime-local],.wy-control-group.fluid-input input[type=datetime],.wy-control-group.fluid-input input[type=email],.wy-control-group.fluid-input input[type=month],.wy-control-group.fluid-input input[type=number],.wy-control-group.fluid-input input[type=password],.wy-control-group.fluid-input input[type=search],.wy-control-group.fluid-input input[type=tel],.wy-control-group.fluid-input input[type=text],.wy-control-group.fluid-input input[type=time],.wy-control-group.fluid-input input[type=url],.wy-control-group.fluid-input input[type=week]{width:100%}.wy-form-message-inline{padding-left:.3em;color:#666;font-size:90%}.wy-form-message{display:block;color:#999;font-size:70%;margin-top:.3125em;font-style:italic}.wy-form-message p{font-size:inherit;font-style:italic;margin-bottom:6px}.wy-form-message p:last-child{margin-bottom:0}input{line-height:normal}input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;*overflow:visible}input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week]{-webkit-appearance:none;padding:6px;display:inline-block;border:1px solid #ccc;font-size:80%;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;box-shadow:inset 0 1px 3px #ddd;border-radius:0;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}input[type=datetime-local]{padding:.34375em .625em}input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{padding:0;margin-right:.3125em;*height:13px;*width:13px}input[type=checkbox],input[type=radio],input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus{outline:0;outline:thin dotted\9;border-color:#333}input.no-focus:focus{border-color:#ccc!important}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus{outline:thin dotted #333;outline:1px auto #129fea}input[type=color][disabled],input[type=date][disabled],input[type=datetime-local][disabled],input[type=datetime][disabled],input[type=email][disabled],input[type=month][disabled],input[type=number][disabled],input[type=password][disabled],input[type=search][disabled],input[type=tel][disabled],input[type=text][disabled],input[type=time][disabled],input[type=url][disabled],input[type=week][disabled]{cursor:not-allowed;background-color:#fafafa}input:focus:invalid,select:focus:invalid,textarea:focus:invalid{color:#e74c3c;border:1px solid #e74c3c}input:focus:invalid:focus,select:focus:invalid:focus,textarea:focus:invalid:focus{border-color:#e74c3c}input[type=checkbox]:focus:invalid:focus,input[type=file]:focus:invalid:focus,input[type=radio]:focus:invalid:focus{outline-color:#e74c3c}input.wy-input-large{padding:12px;font-size:100%}textarea{overflow:auto;vertical-align:top;width:100%;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif}select,textarea{padding:.5em .625em;display:inline-block;border:1px solid #ccc;font-size:80%;box-shadow:inset 0 1px 3px #ddd;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}select{border:1px solid #ccc;background-color:#fff}select[multiple]{height:auto}select:focus,textarea:focus{outline:0}input[readonly],select[disabled],select[readonly],textarea[disabled],textarea[readonly]{cursor:not-allowed;background-color:#fafafa}input[type=checkbox][disabled],input[type=radio][disabled]{cursor:not-allowed}.wy-checkbox,.wy-radio{margin:6px 0;color:#404040;display:block}.wy-checkbox input,.wy-radio input{vertical-align:baseline}.wy-form-message-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-input-prefix,.wy-input-suffix{white-space:nowrap;padding:6px}.wy-input-prefix .wy-input-context,.wy-input-suffix .wy-input-context{line-height:27px;padding:0 8px;display:inline-block;font-size:80%;background-color:#f3f6f6;border:1px solid #ccc;color:#999}.wy-input-suffix .wy-input-context{border-left:0}.wy-input-prefix .wy-input-context{border-right:0}.wy-switch{position:relative;display:block;height:24px;margin-top:12px;cursor:pointer}.wy-switch:before{left:0;top:0;width:36px;height:12px;background:#ccc}.wy-switch:after,.wy-switch:before{position:absolute;content:"";display:block;border-radius:4px;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wy-switch:after{width:18px;height:18px;background:#999;left:-3px;top:-3px}.wy-switch span{position:absolute;left:48px;display:block;font-size:12px;color:#ccc;line-height:1}.wy-switch.active:before{background:#1e8449}.wy-switch.active:after{left:24px;background:#27ae60}.wy-switch.disabled{cursor:not-allowed;opacity:.8}.wy-control-group.wy-control-group-error .wy-form-message,.wy-control-group.wy-control-group-error>label{color:#e74c3c}.wy-control-group.wy-control-group-error input[type=color],.wy-control-group.wy-control-group-error input[type=date],.wy-control-group.wy-control-group-error input[type=datetime-local],.wy-control-group.wy-control-group-error input[type=datetime],.wy-control-group.wy-control-group-error input[type=email],.wy-control-group.wy-control-group-error input[type=month],.wy-control-group.wy-control-group-error input[type=number],.wy-control-group.wy-control-group-error input[type=password],.wy-control-group.wy-control-group-error input[type=search],.wy-control-group.wy-control-group-error input[type=tel],.wy-control-group.wy-control-group-error input[type=text],.wy-control-group.wy-control-group-error input[type=time],.wy-control-group.wy-control-group-error input[type=url],.wy-control-group.wy-control-group-error input[type=week],.wy-control-group.wy-control-group-error textarea{border:1px solid #e74c3c}.wy-inline-validate{white-space:nowrap}.wy-inline-validate .wy-input-context{padding:.5em .625em;display:inline-block;font-size:80%}.wy-inline-validate.wy-inline-validate-success .wy-input-context{color:#27ae60}.wy-inline-validate.wy-inline-validate-danger .wy-input-context{color:#e74c3c}.wy-inline-validate.wy-inline-validate-warning .wy-input-context{color:#e67e22}.wy-inline-validate.wy-inline-validate-info .wy-input-context{color:#2980b9}.rotate-90{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.rotate-180{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.rotate-270{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.mirror{-webkit-transform:scaleX(-1);-moz-transform:scaleX(-1);-ms-transform:scaleX(-1);-o-transform:scaleX(-1);transform:scaleX(-1)}.mirror.rotate-90{-webkit-transform:scaleX(-1) rotate(90deg);-moz-transform:scaleX(-1) rotate(90deg);-ms-transform:scaleX(-1) rotate(90deg);-o-transform:scaleX(-1) rotate(90deg);transform:scaleX(-1) rotate(90deg)}.mirror.rotate-180{-webkit-transform:scaleX(-1) rotate(180deg);-moz-transform:scaleX(-1) rotate(180deg);-ms-transform:scaleX(-1) rotate(180deg);-o-transform:scaleX(-1) rotate(180deg);transform:scaleX(-1) rotate(180deg)}.mirror.rotate-270{-webkit-transform:scaleX(-1) rotate(270deg);-moz-transform:scaleX(-1) rotate(270deg);-ms-transform:scaleX(-1) rotate(270deg);-o-transform:scaleX(-1) rotate(270deg);transform:scaleX(-1) rotate(270deg)}@media only screen and (max-width:480px){.wy-form button[type=submit]{margin:.7em 0 0}.wy-form input[type=color],.wy-form input[type=date],.wy-form input[type=datetime-local],.wy-form input[type=datetime],.wy-form input[type=email],.wy-form input[type=month],.wy-form input[type=number],.wy-form input[type=password],.wy-form input[type=search],.wy-form input[type=tel],.wy-form input[type=text],.wy-form input[type=time],.wy-form input[type=url],.wy-form input[type=week],.wy-form label{margin-bottom:.3em;display:block}.wy-form input[type=color],.wy-form input[type=date],.wy-form input[type=datetime-local],.wy-form input[type=datetime],.wy-form input[type=email],.wy-form input[type=month],.wy-form input[type=number],.wy-form input[type=password],.wy-form input[type=search],.wy-form input[type=tel],.wy-form input[type=time],.wy-form input[type=url],.wy-form input[type=week]{margin-bottom:0}.wy-form-aligned .wy-control-group label{margin-bottom:.3em;text-align:left;display:block;width:100%}.wy-form-aligned .wy-control{margin:1.5em 0 0}.wy-form-message,.wy-form-message-inline,.wy-form .wy-help-inline{display:block;font-size:80%;padding:6px 0}}@media screen and (max-width:768px){.tablet-hide{display:none}}@media screen and (max-width:480px){.mobile-hide{display:none}}.float-left{float:left}.float-right{float:right}.full-width{width:100%}.rst-content table.docutils,.rst-content table.field-list,.wy-table{border-collapse:collapse;border-spacing:0;empty-cells:show;margin-bottom:24px}.rst-content table.docutils caption,.rst-content table.field-list caption,.wy-table caption{color:#000;font:italic 85%/1 arial,sans-serif;padding:1em 0;text-align:center}.rst-content table.docutils td,.rst-content table.docutils th,.rst-content table.field-list td,.rst-content table.field-list th,.wy-table td,.wy-table th{font-size:90%;margin:0;overflow:visible;padding:8px 16px}.rst-content table.docutils td:first-child,.rst-content table.docutils th:first-child,.rst-content table.field-list td:first-child,.rst-content table.field-list th:first-child,.wy-table td:first-child,.wy-table th:first-child{border-left-width:0}.rst-content table.docutils thead,.rst-content table.field-list thead,.wy-table thead{color:#000;text-align:left;vertical-align:bottom;white-space:nowrap}.rst-content table.docutils thead th,.rst-content table.field-list thead th,.wy-table thead th{font-weight:700;border-bottom:2px solid #e1e4e5}.rst-content table.docutils td,.rst-content table.field-list td,.wy-table td{background-color:transparent;vertical-align:middle}.rst-content table.docutils td p,.rst-content table.field-list td p,.wy-table td p{line-height:18px}.rst-content table.docutils td p:last-child,.rst-content table.field-list td p:last-child,.wy-table td p:last-child{margin-bottom:0}.rst-content table.docutils .wy-table-cell-min,.rst-content table.field-list .wy-table-cell-min,.wy-table .wy-table-cell-min{width:1%;padding-right:0}.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-content table.field-list .wy-table-cell-min input[type=checkbox],.wy-table .wy-table-cell-min input[type=checkbox]{margin:0}.wy-table-secondary{color:grey;font-size:90%}.wy-table-tertiary{color:grey;font-size:80%}.rst-content table.docutils:not(.field-list) tr:nth-child(2n-1) td,.wy-table-backed,.wy-table-odd td,.wy-table-striped tr:nth-child(2n-1) td{background-color:#f3f6f6}.rst-content table.docutils,.wy-table-bordered-all{border:1px solid #e1e4e5}.rst-content table.docutils td,.wy-table-bordered-all td{border-bottom:1px solid #e1e4e5;border-left:1px solid #e1e4e5}.rst-content table.docutils tbody>tr:last-child td,.wy-table-bordered-all tbody>tr:last-child td{border-bottom-width:0}.wy-table-bordered{border:1px solid #e1e4e5}.wy-table-bordered-rows td{border-bottom:1px solid #e1e4e5}.wy-table-bordered-rows tbody>tr:last-child td{border-bottom-width:0}.wy-table-horizontal td,.wy-table-horizontal th{border-width:0 0 1px;border-bottom:1px solid #e1e4e5}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-responsive{margin-bottom:24px;max-width:100%;overflow:auto}.wy-table-responsive table{margin-bottom:0!important}.wy-table-responsive table td,.wy-table-responsive table th{white-space:nowrap}a{color:#2980b9;text-decoration:none;cursor:pointer}a:hover{color:#3091d1}a:visited{color:#9b59b6}html{height:100%}body,html{overflow-x:hidden}body{font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;font-weight:400;color:#404040;min-height:100%;background:#edf0f2}.wy-text-left{text-align:left}.wy-text-center{text-align:center}.wy-text-right{text-align:right}.wy-text-large{font-size:120%}.wy-text-normal{font-size:100%}.wy-text-small,small{font-size:80%}.wy-text-strike{text-decoration:line-through}.wy-text-warning{color:#e67e22!important}a.wy-text-warning:hover{color:#eb9950!important}.wy-text-info{color:#2980b9!important}a.wy-text-info:hover{color:#409ad5!important}.wy-text-success{color:#27ae60!important}a.wy-text-success:hover{color:#36d278!important}.wy-text-danger{color:#e74c3c!important}a.wy-text-danger:hover{color:#ed7669!important}.wy-text-neutral{color:#404040!important}a.wy-text-neutral:hover{color:#595959!important}.rst-content .toctree-wrapper>p.caption,h1,h2,h3,h4,h5,h6,legend{margin-top:0;font-weight:700;font-family:Roboto Slab,ff-tisa-web-pro,Georgia,Arial,sans-serif}p{line-height:24px;font-size:16px;margin:0 0 24px}h1{font-size:175%}.rst-content .toctree-wrapper>p.caption,h2{font-size:150%}h3{font-size:125%}h4{font-size:115%}h5{font-size:110%}h6{font-size:100%}hr{display:block;height:1px;border:0;border-top:1px solid #e1e4e5;margin:24px 0;padding:0}.rst-content code,.rst-content tt,code{white-space:nowrap;max-width:100%;background:#fff;border:1px solid #e1e4e5;font-size:75%;padding:0 5px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;color:#e74c3c;overflow-x:auto}.rst-content tt.code-large,code.code-large{font-size:90%}.rst-content .section ul,.rst-content .toctree-wrapper ul,.rst-content section ul,.wy-plain-list-disc,article ul{list-style:disc;line-height:24px;margin-bottom:24px}.rst-content .section ul li,.rst-content .toctree-wrapper ul li,.rst-content section ul li,.wy-plain-list-disc li,article ul li{list-style:disc;margin-left:24px}.rst-content .section ul li p:last-child,.rst-content .section ul li ul,.rst-content .toctree-wrapper ul li p:last-child,.rst-content .toctree-wrapper ul li ul,.rst-content section ul li p:last-child,.rst-content section ul li ul,.wy-plain-list-disc li p:last-child,.wy-plain-list-disc li ul,article ul li p:last-child,article ul li ul{margin-bottom:0}.rst-content .section ul li li,.rst-content .toctree-wrapper ul li li,.rst-content section ul li li,.wy-plain-list-disc li li,article ul li li{list-style:circle}.rst-content .section ul li li li,.rst-content .toctree-wrapper ul li li li,.rst-content section ul li li li,.wy-plain-list-disc li li li,article ul li li li{list-style:square}.rst-content .section ul li ol li,.rst-content .toctree-wrapper ul li ol li,.rst-content section ul li ol li,.wy-plain-list-disc li ol li,article ul li ol li{list-style:decimal}.rst-content .section ol,.rst-content .section ol.arabic,.rst-content .toctree-wrapper ol,.rst-content .toctree-wrapper ol.arabic,.rst-content section ol,.rst-content section ol.arabic,.wy-plain-list-decimal,article ol{list-style:decimal;line-height:24px;margin-bottom:24px}.rst-content .section ol.arabic li,.rst-content .section ol li,.rst-content .toctree-wrapper ol.arabic li,.rst-content .toctree-wrapper ol li,.rst-content section ol.arabic li,.rst-content section ol li,.wy-plain-list-decimal li,article ol li{list-style:decimal;margin-left:24px}.rst-content .section ol.arabic li ul,.rst-content .section ol li p:last-child,.rst-content .section ol li ul,.rst-content .toctree-wrapper ol.arabic li ul,.rst-content .toctree-wrapper ol li p:last-child,.rst-content .toctree-wrapper ol li ul,.rst-content section ol.arabic li ul,.rst-content section ol li p:last-child,.rst-content section ol li ul,.wy-plain-list-decimal li p:last-child,.wy-plain-list-decimal li ul,article ol li p:last-child,article ol li ul{margin-bottom:0}.rst-content .section ol.arabic li ul li,.rst-content .section ol li ul li,.rst-content .toctree-wrapper ol.arabic li ul li,.rst-content .toctree-wrapper ol li ul li,.rst-content section ol.arabic li ul li,.rst-content section ol li ul li,.wy-plain-list-decimal li ul li,article ol li ul li{list-style:disc}.wy-breadcrumbs{*zoom:1}.wy-breadcrumbs:after,.wy-breadcrumbs:before{display:table;content:""}.wy-breadcrumbs:after{clear:both}.wy-breadcrumbs>li{display:inline-block;padding-top:5px}.wy-breadcrumbs>li.wy-breadcrumbs-aside{float:right}.rst-content .wy-breadcrumbs>li code,.rst-content .wy-breadcrumbs>li tt,.wy-breadcrumbs>li .rst-content tt,.wy-breadcrumbs>li code{all:inherit;color:inherit}.breadcrumb-item:before{content:"/";color:#bbb;font-size:13px;padding:0 6px 0 3px}.wy-breadcrumbs-extra{margin-bottom:0;color:#b3b3b3;font-size:80%;display:inline-block}@media screen and (max-width:480px){.wy-breadcrumbs-extra,.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}@media print{.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}html{font-size:16px}.wy-affix{position:fixed;top:1.618em}.wy-menu a:hover{text-decoration:none}.wy-menu-horiz{*zoom:1}.wy-menu-horiz:after,.wy-menu-horiz:before{display:table;content:""}.wy-menu-horiz:after{clear:both}.wy-menu-horiz li,.wy-menu-horiz ul{display:inline-block}.wy-menu-horiz li:hover{background:hsla(0,0%,100%,.1)}.wy-menu-horiz li.divide-left{border-left:1px solid #404040}.wy-menu-horiz li.divide-right{border-right:1px solid #404040}.wy-menu-horiz a{height:32px;display:inline-block;line-height:32px;padding:0 16px}.wy-menu-vertical{width:300px}.wy-menu-vertical header,.wy-menu-vertical p.caption{color:#55a5d9;height:32px;line-height:32px;padding:0 1.618em;margin:12px 0 0;display:block;font-weight:700;text-transform:uppercase;font-size:85%;white-space:nowrap}.wy-menu-vertical ul{margin-bottom:0}.wy-menu-vertical li.divide-top{border-top:1px solid #404040}.wy-menu-vertical li.divide-bottom{border-bottom:1px solid #404040}.wy-menu-vertical li.current{background:#e3e3e3}.wy-menu-vertical li.current a{color:grey;border-right:1px solid #c9c9c9;padding:.4045em 2.427em}.wy-menu-vertical li.current a:hover{background:#d6d6d6}.rst-content .wy-menu-vertical li tt,.wy-menu-vertical li .rst-content tt,.wy-menu-vertical li code{border:none;background:inherit;color:inherit;padding-left:0;padding-right:0}.wy-menu-vertical li button.toctree-expand{display:block;float:left;margin-left:-1.2em;line-height:18px;color:#4d4d4d;border:none;background:none;padding:0}.wy-menu-vertical li.current>a,.wy-menu-vertical li.on a{color:#404040;font-weight:700;position:relative;background:#fcfcfc;border:none;padding:.4045em 1.618em}.wy-menu-vertical li.current>a:hover,.wy-menu-vertical li.on a:hover{background:#fcfcfc}.wy-menu-vertical li.current>a:hover button.toctree-expand,.wy-menu-vertical li.on a:hover button.toctree-expand{color:grey}.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand{display:block;line-height:18px;color:#333}.wy-menu-vertical li.toctree-l1.current>a{border-bottom:1px solid #c9c9c9;border-top:1px solid #c9c9c9}.wy-menu-vertical .toctree-l1.current .toctree-l2>ul,.wy-menu-vertical .toctree-l2.current .toctree-l3>ul,.wy-menu-vertical .toctree-l3.current .toctree-l4>ul,.wy-menu-vertical .toctree-l4.current .toctree-l5>ul,.wy-menu-vertical .toctree-l5.current .toctree-l6>ul,.wy-menu-vertical .toctree-l6.current .toctree-l7>ul,.wy-menu-vertical .toctree-l7.current .toctree-l8>ul,.wy-menu-vertical .toctree-l8.current .toctree-l9>ul,.wy-menu-vertical .toctree-l9.current .toctree-l10>ul,.wy-menu-vertical .toctree-l10.current .toctree-l11>ul{display:none}.wy-menu-vertical .toctree-l1.current .current.toctree-l2>ul,.wy-menu-vertical .toctree-l2.current .current.toctree-l3>ul,.wy-menu-vertical .toctree-l3.current .current.toctree-l4>ul,.wy-menu-vertical .toctree-l4.current .current.toctree-l5>ul,.wy-menu-vertical .toctree-l5.current .current.toctree-l6>ul,.wy-menu-vertical .toctree-l6.current .current.toctree-l7>ul,.wy-menu-vertical .toctree-l7.current .current.toctree-l8>ul,.wy-menu-vertical .toctree-l8.current .current.toctree-l9>ul,.wy-menu-vertical .toctree-l9.current .current.toctree-l10>ul,.wy-menu-vertical .toctree-l10.current .current.toctree-l11>ul{display:block}.wy-menu-vertical li.toctree-l3,.wy-menu-vertical li.toctree-l4{font-size:.9em}.wy-menu-vertical li.toctree-l2 a,.wy-menu-vertical li.toctree-l3 a,.wy-menu-vertical li.toctree-l4 a,.wy-menu-vertical li.toctree-l5 a,.wy-menu-vertical li.toctree-l6 a,.wy-menu-vertical li.toctree-l7 a,.wy-menu-vertical li.toctree-l8 a,.wy-menu-vertical li.toctree-l9 a,.wy-menu-vertical li.toctree-l10 a{color:#404040}.wy-menu-vertical li.toctree-l2 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l3 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l4 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l5 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l6 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l7 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l8 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l9 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l10 a:hover button.toctree-expand{color:grey}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a,.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a,.wy-menu-vertical li.toctree-l4.current li.toctree-l5>a,.wy-menu-vertical li.toctree-l5.current li.toctree-l6>a,.wy-menu-vertical li.toctree-l6.current li.toctree-l7>a,.wy-menu-vertical li.toctree-l7.current li.toctree-l8>a,.wy-menu-vertical li.toctree-l8.current li.toctree-l9>a,.wy-menu-vertical li.toctree-l9.current li.toctree-l10>a,.wy-menu-vertical li.toctree-l10.current li.toctree-l11>a{display:block}.wy-menu-vertical li.toctree-l2.current>a{padding:.4045em 2.427em}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{padding:.4045em 1.618em .4045em 4.045em}.wy-menu-vertical li.toctree-l3.current>a{padding:.4045em 4.045em}.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{padding:.4045em 1.618em .4045em 5.663em}.wy-menu-vertical li.toctree-l4.current>a{padding:.4045em 5.663em}.wy-menu-vertical li.toctree-l4.current li.toctree-l5>a{padding:.4045em 1.618em .4045em 7.281em}.wy-menu-vertical li.toctree-l5.current>a{padding:.4045em 7.281em}.wy-menu-vertical li.toctree-l5.current li.toctree-l6>a{padding:.4045em 1.618em .4045em 8.899em}.wy-menu-vertical li.toctree-l6.current>a{padding:.4045em 8.899em}.wy-menu-vertical li.toctree-l6.current li.toctree-l7>a{padding:.4045em 1.618em .4045em 10.517em}.wy-menu-vertical li.toctree-l7.current>a{padding:.4045em 10.517em}.wy-menu-vertical li.toctree-l7.current li.toctree-l8>a{padding:.4045em 1.618em .4045em 12.135em}.wy-menu-vertical li.toctree-l8.current>a{padding:.4045em 12.135em}.wy-menu-vertical li.toctree-l8.current li.toctree-l9>a{padding:.4045em 1.618em .4045em 13.753em}.wy-menu-vertical li.toctree-l9.current>a{padding:.4045em 13.753em}.wy-menu-vertical li.toctree-l9.current li.toctree-l10>a{padding:.4045em 1.618em .4045em 15.371em}.wy-menu-vertical li.toctree-l10.current>a{padding:.4045em 15.371em}.wy-menu-vertical li.toctree-l10.current li.toctree-l11>a{padding:.4045em 1.618em .4045em 16.989em}.wy-menu-vertical li.toctree-l2.current>a,.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{background:#c9c9c9}.wy-menu-vertical li.toctree-l2 button.toctree-expand{color:#a3a3a3}.wy-menu-vertical li.toctree-l3.current>a,.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{background:#bdbdbd}.wy-menu-vertical li.toctree-l3 button.toctree-expand{color:#969696}.wy-menu-vertical li.current ul{display:block}.wy-menu-vertical li ul{margin-bottom:0;display:none}.wy-menu-vertical li ul li a{margin-bottom:0;color:#d9d9d9;font-weight:400}.wy-menu-vertical a{line-height:18px;padding:.4045em 1.618em;display:block;position:relative;font-size:90%;color:#d9d9d9}.wy-menu-vertical a:hover{background-color:#4e4a4a;cursor:pointer}.wy-menu-vertical a:hover button.toctree-expand{color:#d9d9d9}.wy-menu-vertical a:active{background-color:#2980b9;cursor:pointer;color:#fff}.wy-menu-vertical a:active button.toctree-expand{color:#fff}.wy-side-nav-search{display:block;width:300px;padding:.809em;margin-bottom:.809em;z-index:200;background-color:#2980b9;text-align:center;color:#fcfcfc}.wy-side-nav-search input[type=text]{width:100%;border-radius:50px;padding:6px 12px;border-color:#2472a4}.wy-side-nav-search img{display:block;margin:auto auto .809em;height:45px;width:45px;background-color:#2980b9;padding:5px;border-radius:100%}.wy-side-nav-search .wy-dropdown>a,.wy-side-nav-search>a{color:#fcfcfc;font-size:100%;font-weight:700;display:inline-block;padding:4px 6px;margin-bottom:.809em;max-width:100%}.wy-side-nav-search .wy-dropdown>a:hover,.wy-side-nav-search>a:hover{background:hsla(0,0%,100%,.1)}.wy-side-nav-search .wy-dropdown>a img.logo,.wy-side-nav-search>a img.logo{display:block;margin:0 auto;height:auto;width:auto;border-radius:0;max-width:100%;background:transparent}.wy-side-nav-search .wy-dropdown>a.icon img.logo,.wy-side-nav-search>a.icon img.logo{margin-top:.85em}.wy-side-nav-search>div.version{margin-top:-.4045em;margin-bottom:.809em;font-weight:400;color:hsla(0,0%,100%,.3)}.wy-nav .wy-menu-vertical header{color:#2980b9}.wy-nav .wy-menu-vertical a{color:#b3b3b3}.wy-nav .wy-menu-vertical a:hover{background-color:#2980b9;color:#fff}[data-menu-wrap]{-webkit-transition:all .2s ease-in;-moz-transition:all .2s ease-in;transition:all .2s ease-in;position:absolute;opacity:1;width:100%;opacity:0}[data-menu-wrap].move-center{left:0;right:auto;opacity:1}[data-menu-wrap].move-left{right:auto;left:-100%;opacity:0}[data-menu-wrap].move-right{right:-100%;left:auto;opacity:0}.wy-body-for-nav{background:#fcfcfc}.wy-grid-for-nav{position:absolute;width:100%;height:100%}.wy-nav-side{position:fixed;top:0;bottom:0;left:0;padding-bottom:2em;width:300px;overflow-x:hidden;overflow-y:hidden;min-height:100%;color:#9b9b9b;background:#343131;z-index:200}.wy-side-scroll{width:320px;position:relative;overflow-x:hidden;overflow-y:scroll;height:100%}.wy-nav-top{display:none;background:#2980b9;color:#fff;padding:.4045em .809em;position:relative;line-height:50px;text-align:center;font-size:100%;*zoom:1}.wy-nav-top:after,.wy-nav-top:before{display:table;content:""}.wy-nav-top:after{clear:both}.wy-nav-top a{color:#fff;font-weight:700}.wy-nav-top img{margin-right:12px;height:45px;width:45px;background-color:#2980b9;padding:5px;border-radius:100%}.wy-nav-top i{font-size:30px;float:left;cursor:pointer;padding-top:inherit}.wy-nav-content-wrap{margin-left:300px;background:#fcfcfc;min-height:100%}.wy-nav-content{padding:1.618em 3.236em;height:100%;max-width:800px;margin:auto}.wy-body-mask{position:fixed;width:100%;height:100%;background:rgba(0,0,0,.2);display:none;z-index:499}.wy-body-mask.on{display:block}footer{color:grey}footer p{margin-bottom:12px}.rst-content footer span.commit tt,footer span.commit .rst-content tt,footer span.commit code{padding:0;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;font-size:1em;background:none;border:none;color:grey}.rst-footer-buttons{*zoom:1}.rst-footer-buttons:after,.rst-footer-buttons:before{width:100%;display:table;content:""}.rst-footer-buttons:after{clear:both}.rst-breadcrumbs-buttons{margin-top:12px;*zoom:1}.rst-breadcrumbs-buttons:after,.rst-breadcrumbs-buttons:before{display:table;content:""}.rst-breadcrumbs-buttons:after{clear:both}#search-results .search li{margin-bottom:24px;border-bottom:1px solid #e1e4e5;padding-bottom:24px}#search-results .search li:first-child{border-top:1px solid #e1e4e5;padding-top:24px}#search-results .search li a{font-size:120%;margin-bottom:12px;display:inline-block}#search-results .context{color:grey;font-size:90%}.genindextable li>ul{margin-left:24px}@media screen and (max-width:768px){.wy-body-for-nav{background:#fcfcfc}.wy-nav-top{display:block}.wy-nav-side{left:-300px}.wy-nav-side.shift{width:85%;left:0}.wy-menu.wy-menu-vertical,.wy-side-nav-search,.wy-side-scroll{width:auto}.wy-nav-content-wrap{margin-left:0}.wy-nav-content-wrap .wy-nav-content{padding:1.618em}.wy-nav-content-wrap.shift{position:fixed;min-width:100%;left:85%;top:0;height:100%;overflow:hidden}}@media screen and (min-width:1100px){.wy-nav-content-wrap{background:rgba(0,0,0,.05)}.wy-nav-content{margin:0;background:#fcfcfc}}@media print{.rst-versions,.wy-nav-side,footer{display:none}.wy-nav-content-wrap{margin-left:0}}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60;*zoom:1}.rst-versions .rst-current-version:after,.rst-versions .rst-current-version:before{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-content .code-block-caption .rst-versions .rst-current-version .headerlink,.rst-content .eqno .rst-versions .rst-current-version .headerlink,.rst-content .rst-versions .rst-current-version .admonition-title,.rst-content code.download .rst-versions .rst-current-version span:first-child,.rst-content dl dt .rst-versions .rst-current-version .headerlink,.rst-content h1 .rst-versions .rst-current-version .headerlink,.rst-content h2 .rst-versions .rst-current-version .headerlink,.rst-content h3 .rst-versions .rst-current-version .headerlink,.rst-content h4 .rst-versions .rst-current-version .headerlink,.rst-content h5 .rst-versions .rst-current-version .headerlink,.rst-content h6 .rst-versions .rst-current-version .headerlink,.rst-content p .rst-versions .rst-current-version .headerlink,.rst-content table>caption .rst-versions .rst-current-version .headerlink,.rst-content tt.download .rst-versions .rst-current-version span:first-child,.rst-versions .rst-current-version .fa,.rst-versions .rst-current-version .icon,.rst-versions .rst-current-version .rst-content .admonition-title,.rst-versions .rst-current-version .rst-content .code-block-caption .headerlink,.rst-versions .rst-current-version .rst-content .eqno .headerlink,.rst-versions .rst-current-version .rst-content code.download span:first-child,.rst-versions .rst-current-version .rst-content dl dt .headerlink,.rst-versions .rst-current-version .rst-content h1 .headerlink,.rst-versions .rst-current-version .rst-content h2 .headerlink,.rst-versions .rst-current-version .rst-content h3 .headerlink,.rst-versions .rst-current-version .rst-content h4 .headerlink,.rst-versions .rst-current-version .rst-content h5 .headerlink,.rst-versions .rst-current-version .rst-content h6 .headerlink,.rst-versions .rst-current-version .rst-content p .headerlink,.rst-versions .rst-current-version .rst-content table>caption .headerlink,.rst-versions .rst-current-version .rst-content tt.download span:first-child,.rst-versions .rst-current-version .wy-menu-vertical li button.toctree-expand,.wy-menu-vertical li .rst-versions .rst-current-version button.toctree-expand{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}.rst-content .toctree-wrapper>p.caption,.rst-content h1,.rst-content h2,.rst-content h3,.rst-content h4,.rst-content h5,.rst-content h6{margin-bottom:24px}.rst-content img{max-width:100%;height:auto}.rst-content div.figure,.rst-content figure{margin-bottom:24px}.rst-content div.figure .caption-text,.rst-content figure .caption-text{font-style:italic}.rst-content div.figure p:last-child.caption,.rst-content figure p:last-child.caption{margin-bottom:0}.rst-content div.figure.align-center,.rst-content figure.align-center{text-align:center}.rst-content .section>a>img,.rst-content .section>img,.rst-content section>a>img,.rst-content section>img{margin-bottom:24px}.rst-content abbr[title]{text-decoration:none}.rst-content.style-external-links a.reference.external:after{font-family:FontAwesome;content:"\f08e";color:#b3b3b3;vertical-align:super;font-size:60%;margin:0 .2em}.rst-content blockquote{margin-left:24px;line-height:24px;margin-bottom:24px}.rst-content pre.literal-block{white-space:pre;margin:0;padding:12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;display:block;overflow:auto}.rst-content div[class^=highlight],.rst-content pre.literal-block{border:1px solid #e1e4e5;overflow-x:auto;margin:1px 0 24px}.rst-content div[class^=highlight] div[class^=highlight],.rst-content pre.literal-block div[class^=highlight]{padding:0;border:none;margin:0}.rst-content div[class^=highlight] td.code{width:100%}.rst-content .linenodiv pre{border-right:1px solid #e6e9ea;margin:0;padding:12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;user-select:none;pointer-events:none}.rst-content div[class^=highlight] pre{white-space:pre;margin:0;padding:12px;display:block;overflow:auto}.rst-content div[class^=highlight] pre .hll{display:block;margin:0 -12px;padding:0 12px}.rst-content .linenodiv pre,.rst-content div[class^=highlight] pre,.rst-content pre.literal-block{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;font-size:12px;line-height:1.4}.rst-content div.highlight .gp,.rst-content div.highlight span.linenos{user-select:none;pointer-events:none}.rst-content div.highlight span.linenos{display:inline-block;padding-left:0;padding-right:12px;margin-right:12px;border-right:1px solid #e6e9ea}.rst-content .code-block-caption{font-style:italic;font-size:85%;line-height:1;padding:1em 0;text-align:center}@media print{.rst-content .codeblock,.rst-content div[class^=highlight],.rst-content div[class^=highlight] pre{white-space:pre-wrap}}.rst-content .admonition,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning{clear:both}.rst-content .admonition-todo .last,.rst-content .admonition-todo>:last-child,.rst-content .admonition .last,.rst-content .admonition>:last-child,.rst-content .attention .last,.rst-content .attention>:last-child,.rst-content .caution .last,.rst-content .caution>:last-child,.rst-content .danger .last,.rst-content .danger>:last-child,.rst-content .error .last,.rst-content .error>:last-child,.rst-content .hint .last,.rst-content .hint>:last-child,.rst-content .important .last,.rst-content .important>:last-child,.rst-content .note .last,.rst-content .note>:last-child,.rst-content .seealso .last,.rst-content .seealso>:last-child,.rst-content .tip .last,.rst-content .tip>:last-child,.rst-content .warning .last,.rst-content .warning>:last-child{margin-bottom:0}.rst-content .admonition-title:before{margin-right:4px}.rst-content .admonition table{border-color:rgba(0,0,0,.1)}.rst-content .admonition table td,.rst-content .admonition table th{background:transparent!important;border-color:rgba(0,0,0,.1)!important}.rst-content .section ol.loweralpha,.rst-content .section ol.loweralpha>li,.rst-content .toctree-wrapper ol.loweralpha,.rst-content .toctree-wrapper ol.loweralpha>li,.rst-content section ol.loweralpha,.rst-content section ol.loweralpha>li{list-style:lower-alpha}.rst-content .section ol.upperalpha,.rst-content .section ol.upperalpha>li,.rst-content .toctree-wrapper ol.upperalpha,.rst-content .toctree-wrapper ol.upperalpha>li,.rst-content section ol.upperalpha,.rst-content section ol.upperalpha>li{list-style:upper-alpha}.rst-content .section ol li>*,.rst-content .section ul li>*,.rst-content .toctree-wrapper ol li>*,.rst-content .toctree-wrapper ul li>*,.rst-content section ol li>*,.rst-content section ul li>*{margin-top:12px;margin-bottom:12px}.rst-content .section ol li>:first-child,.rst-content .section ul li>:first-child,.rst-content .toctree-wrapper ol li>:first-child,.rst-content .toctree-wrapper ul li>:first-child,.rst-content section ol li>:first-child,.rst-content section ul li>:first-child{margin-top:0}.rst-content .section ol li>p,.rst-content .section ol li>p:last-child,.rst-content .section ul li>p,.rst-content .section ul li>p:last-child,.rst-content .toctree-wrapper ol li>p,.rst-content .toctree-wrapper ol li>p:last-child,.rst-content .toctree-wrapper ul li>p,.rst-content .toctree-wrapper ul li>p:last-child,.rst-content section ol li>p,.rst-content section ol li>p:last-child,.rst-content section ul li>p,.rst-content section ul li>p:last-child{margin-bottom:12px}.rst-content .section ol li>p:only-child,.rst-content .section ol li>p:only-child:last-child,.rst-content .section ul li>p:only-child,.rst-content .section ul li>p:only-child:last-child,.rst-content .toctree-wrapper ol li>p:only-child,.rst-content .toctree-wrapper ol li>p:only-child:last-child,.rst-content .toctree-wrapper ul li>p:only-child,.rst-content .toctree-wrapper ul li>p:only-child:last-child,.rst-content section ol li>p:only-child,.rst-content section ol li>p:only-child:last-child,.rst-content section ul li>p:only-child,.rst-content section ul li>p:only-child:last-child{margin-bottom:0}.rst-content .section ol li>ol,.rst-content .section ol li>ul,.rst-content .section ul li>ol,.rst-content .section ul li>ul,.rst-content .toctree-wrapper ol li>ol,.rst-content .toctree-wrapper ol li>ul,.rst-content .toctree-wrapper ul li>ol,.rst-content .toctree-wrapper ul li>ul,.rst-content section ol li>ol,.rst-content section ol li>ul,.rst-content section ul li>ol,.rst-content section ul li>ul{margin-bottom:12px}.rst-content .section ol.simple li>*,.rst-content .section ol.simple li ol,.rst-content .section ol.simple li ul,.rst-content .section ul.simple li>*,.rst-content .section ul.simple li ol,.rst-content .section ul.simple li ul,.rst-content .toctree-wrapper ol.simple li>*,.rst-content .toctree-wrapper ol.simple li ol,.rst-content .toctree-wrapper ol.simple li ul,.rst-content .toctree-wrapper ul.simple li>*,.rst-content .toctree-wrapper ul.simple li ol,.rst-content .toctree-wrapper ul.simple li ul,.rst-content section ol.simple li>*,.rst-content section ol.simple li ol,.rst-content section ol.simple li ul,.rst-content section ul.simple li>*,.rst-content section ul.simple li ol,.rst-content section ul.simple li ul{margin-top:0;margin-bottom:0}.rst-content .line-block{margin-left:0;margin-bottom:24px;line-height:24px}.rst-content .line-block .line-block{margin-left:24px;margin-bottom:0}.rst-content .topic-title{font-weight:700;margin-bottom:12px}.rst-content .toc-backref{color:#404040}.rst-content .align-right{float:right;margin:0 0 24px 24px}.rst-content .align-left{float:left;margin:0 24px 24px 0}.rst-content .align-center{margin:auto}.rst-content .align-center:not(table){display:block}.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content .toctree-wrapper>p.caption .headerlink,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink{opacity:0;font-size:14px;font-family:FontAwesome;margin-left:.5em}.rst-content .code-block-caption .headerlink:focus,.rst-content .code-block-caption:hover .headerlink,.rst-content .eqno .headerlink:focus,.rst-content .eqno:hover .headerlink,.rst-content .toctree-wrapper>p.caption .headerlink:focus,.rst-content .toctree-wrapper>p.caption:hover .headerlink,.rst-content dl dt .headerlink:focus,.rst-content dl dt:hover .headerlink,.rst-content h1 .headerlink:focus,.rst-content h1:hover .headerlink,.rst-content h2 .headerlink:focus,.rst-content h2:hover .headerlink,.rst-content h3 .headerlink:focus,.rst-content h3:hover .headerlink,.rst-content h4 .headerlink:focus,.rst-content h4:hover .headerlink,.rst-content h5 .headerlink:focus,.rst-content h5:hover .headerlink,.rst-content h6 .headerlink:focus,.rst-content h6:hover .headerlink,.rst-content p.caption .headerlink:focus,.rst-content p.caption:hover .headerlink,.rst-content p .headerlink:focus,.rst-content p:hover .headerlink,.rst-content table>caption .headerlink:focus,.rst-content table>caption:hover .headerlink{opacity:1}.rst-content p a{overflow-wrap:anywhere}.rst-content .wy-table td p,.rst-content .wy-table td ul,.rst-content .wy-table th p,.rst-content .wy-table th ul,.rst-content table.docutils td p,.rst-content table.docutils td ul,.rst-content table.docutils th p,.rst-content table.docutils th ul,.rst-content table.field-list td p,.rst-content table.field-list td ul,.rst-content table.field-list th p,.rst-content table.field-list th ul{font-size:inherit}.rst-content .btn:focus{outline:2px solid}.rst-content table>caption .headerlink:after{font-size:12px}.rst-content .centered{text-align:center}.rst-content .sidebar{float:right;width:40%;display:block;margin:0 0 24px 24px;padding:24px;background:#f3f6f6;border:1px solid #e1e4e5}.rst-content .sidebar dl,.rst-content .sidebar p,.rst-content .sidebar ul{font-size:90%}.rst-content .sidebar .last,.rst-content .sidebar>:last-child{margin-bottom:0}.rst-content .sidebar .sidebar-title{display:block;font-family:Roboto Slab,ff-tisa-web-pro,Georgia,Arial,sans-serif;font-weight:700;background:#e1e4e5;padding:6px 12px;margin:-24px -24px 24px;font-size:100%}.rst-content .highlighted{background:#f1c40f;box-shadow:0 0 0 2px #f1c40f;display:inline;font-weight:700}.rst-content .citation-reference,.rst-content .footnote-reference{vertical-align:baseline;position:relative;top:-.4em;line-height:0;font-size:90%}.rst-content .citation-reference>span.fn-bracket,.rst-content .footnote-reference>span.fn-bracket{display:none}.rst-content .hlist{width:100%}.rst-content dl dt span.classifier:before{content:" : "}.rst-content dl dt span.classifier-delimiter{display:none!important}html.writer-html4 .rst-content table.docutils.citation,html.writer-html4 .rst-content table.docutils.footnote{background:none;border:none}html.writer-html4 .rst-content table.docutils.citation td,html.writer-html4 .rst-content table.docutils.citation tr,html.writer-html4 .rst-content table.docutils.footnote td,html.writer-html4 .rst-content table.docutils.footnote tr{border:none;background-color:transparent!important;white-space:normal}html.writer-html4 .rst-content table.docutils.citation td.label,html.writer-html4 .rst-content table.docutils.footnote td.label{padding-left:0;padding-right:0;vertical-align:top}html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.field-list,html.writer-html5 .rst-content dl.footnote{display:grid;grid-template-columns:auto minmax(80%,95%)}html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dt{display:inline-grid;grid-template-columns:max-content auto}html.writer-html5 .rst-content aside.citation,html.writer-html5 .rst-content aside.footnote,html.writer-html5 .rst-content div.citation{display:grid;grid-template-columns:auto auto minmax(.65rem,auto) minmax(40%,95%)}html.writer-html5 .rst-content aside.citation>span.label,html.writer-html5 .rst-content aside.footnote>span.label,html.writer-html5 .rst-content div.citation>span.label{grid-column-start:1;grid-column-end:2}html.writer-html5 .rst-content aside.citation>span.backrefs,html.writer-html5 .rst-content aside.footnote>span.backrefs,html.writer-html5 .rst-content div.citation>span.backrefs{grid-column-start:2;grid-column-end:3;grid-row-start:1;grid-row-end:3}html.writer-html5 .rst-content aside.citation>p,html.writer-html5 .rst-content aside.footnote>p,html.writer-html5 .rst-content div.citation>p{grid-column-start:4;grid-column-end:5}html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.field-list,html.writer-html5 .rst-content dl.footnote{margin-bottom:24px}html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dt{padding-left:1rem}html.writer-html5 .rst-content dl.citation>dd,html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.field-list>dd,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dd,html.writer-html5 .rst-content dl.footnote>dt{margin-bottom:0}html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.footnote{font-size:.9rem}html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.footnote>dt{margin:0 .5rem .5rem 0;line-height:1.2rem;word-break:break-all;font-weight:400}html.writer-html5 .rst-content dl.citation>dt>span.brackets:before,html.writer-html5 .rst-content dl.footnote>dt>span.brackets:before{content:"["}html.writer-html5 .rst-content dl.citation>dt>span.brackets:after,html.writer-html5 .rst-content dl.footnote>dt>span.brackets:after{content:"]"}html.writer-html5 .rst-content dl.citation>dt>span.fn-backref,html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref{text-align:left;font-style:italic;margin-left:.65rem;word-break:break-word;word-spacing:-.1rem;max-width:5rem}html.writer-html5 .rst-content dl.citation>dt>span.fn-backref>a,html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref>a{word-break:keep-all}html.writer-html5 .rst-content dl.citation>dt>span.fn-backref>a:not(:first-child):before,html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref>a:not(:first-child):before{content:" "}html.writer-html5 .rst-content dl.citation>dd,html.writer-html5 .rst-content dl.footnote>dd{margin:0 0 .5rem;line-height:1.2rem}html.writer-html5 .rst-content dl.citation>dd p,html.writer-html5 .rst-content dl.footnote>dd p{font-size:.9rem}html.writer-html5 .rst-content aside.citation,html.writer-html5 .rst-content aside.footnote,html.writer-html5 .rst-content div.citation{padding-left:1rem;padding-right:1rem;font-size:.9rem;line-height:1.2rem}html.writer-html5 .rst-content aside.citation p,html.writer-html5 .rst-content aside.footnote p,html.writer-html5 .rst-content div.citation p{font-size:.9rem;line-height:1.2rem;margin-bottom:12px}html.writer-html5 .rst-content aside.citation span.backrefs,html.writer-html5 .rst-content aside.footnote span.backrefs,html.writer-html5 .rst-content div.citation span.backrefs{text-align:left;font-style:italic;margin-left:.65rem;word-break:break-word;word-spacing:-.1rem;max-width:5rem}html.writer-html5 .rst-content aside.citation span.backrefs>a,html.writer-html5 .rst-content aside.footnote span.backrefs>a,html.writer-html5 .rst-content div.citation span.backrefs>a{word-break:keep-all}html.writer-html5 .rst-content aside.citation span.backrefs>a:not(:first-child):before,html.writer-html5 .rst-content aside.footnote span.backrefs>a:not(:first-child):before,html.writer-html5 .rst-content div.citation span.backrefs>a:not(:first-child):before{content:" "}html.writer-html5 .rst-content aside.citation span.label,html.writer-html5 .rst-content aside.footnote span.label,html.writer-html5 .rst-content div.citation span.label{line-height:1.2rem}html.writer-html5 .rst-content aside.citation-list,html.writer-html5 .rst-content aside.footnote-list,html.writer-html5 .rst-content div.citation-list{margin-bottom:24px}html.writer-html5 .rst-content dl.option-list kbd{font-size:.9rem}.rst-content table.docutils.footnote,html.writer-html4 .rst-content table.docutils.citation,html.writer-html5 .rst-content aside.footnote,html.writer-html5 .rst-content aside.footnote-list aside.footnote,html.writer-html5 .rst-content div.citation-list>div.citation,html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.footnote{color:grey}.rst-content table.docutils.footnote code,.rst-content table.docutils.footnote tt,html.writer-html4 .rst-content table.docutils.citation code,html.writer-html4 .rst-content table.docutils.citation tt,html.writer-html5 .rst-content aside.footnote-list aside.footnote code,html.writer-html5 .rst-content aside.footnote-list aside.footnote tt,html.writer-html5 .rst-content aside.footnote code,html.writer-html5 .rst-content aside.footnote tt,html.writer-html5 .rst-content div.citation-list>div.citation code,html.writer-html5 .rst-content div.citation-list>div.citation tt,html.writer-html5 .rst-content dl.citation code,html.writer-html5 .rst-content dl.citation tt,html.writer-html5 .rst-content dl.footnote code,html.writer-html5 .rst-content dl.footnote tt{color:#555}.rst-content .wy-table-responsive.citation,.rst-content .wy-table-responsive.footnote{margin-bottom:0}.rst-content .wy-table-responsive.citation+:not(.citation),.rst-content .wy-table-responsive.footnote+:not(.footnote){margin-top:24px}.rst-content .wy-table-responsive.citation:last-child,.rst-content .wy-table-responsive.footnote:last-child{margin-bottom:24px}.rst-content table.docutils th{border-color:#e1e4e5}html.writer-html5 .rst-content table.docutils th{border:1px solid #e1e4e5}html.writer-html5 .rst-content table.docutils td>p,html.writer-html5 .rst-content table.docutils th>p{line-height:1rem;margin-bottom:0;font-size:.9rem}.rst-content table.docutils td .last,.rst-content table.docutils td .last>:last-child{margin-bottom:0}.rst-content table.field-list,.rst-content table.field-list td{border:none}.rst-content table.field-list td p{line-height:inherit}.rst-content table.field-list td>strong{display:inline-block}.rst-content table.field-list .field-name{padding-right:10px;text-align:left;white-space:nowrap}.rst-content table.field-list .field-body{text-align:left}.rst-content code,.rst-content tt{color:#000;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;padding:2px 5px}.rst-content code big,.rst-content code em,.rst-content tt big,.rst-content tt em{font-size:100%!important;line-height:normal}.rst-content code.literal,.rst-content tt.literal{color:#e74c3c;white-space:normal}.rst-content code.xref,.rst-content tt.xref,a .rst-content code,a .rst-content tt{font-weight:700;color:#404040;overflow-wrap:normal}.rst-content kbd,.rst-content pre,.rst-content samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace}.rst-content a code,.rst-content a tt{color:#2980b9}.rst-content dl{margin-bottom:24px}.rst-content dl dt{font-weight:700;margin-bottom:12px}.rst-content dl ol,.rst-content dl p,.rst-content dl table,.rst-content dl ul{margin-bottom:12px}.rst-content dl dd{margin:0 0 12px 24px;line-height:24px}.rst-content dl dd>ol:last-child,.rst-content dl dd>p:last-child,.rst-content dl dd>table:last-child,.rst-content dl dd>ul:last-child{margin-bottom:0}html.writer-html4 .rst-content dl:not(.docutils),html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple){margin-bottom:24px}html.writer-html4 .rst-content dl:not(.docutils)>dt,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt{display:table;margin:6px 0;font-size:90%;line-height:normal;background:#e7f2fa;color:#2980b9;border-top:3px solid #6ab0de;padding:6px;position:relative}html.writer-html4 .rst-content dl:not(.docutils)>dt:before,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt:before{color:#6ab0de}html.writer-html4 .rst-content dl:not(.docutils)>dt .headerlink,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt .headerlink{color:#404040;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt{margin-bottom:6px;border:none;border-left:3px solid #ccc;background:#f0f0f0;color:#555}html.writer-html4 .rst-content dl:not(.docutils) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt .headerlink,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt .headerlink{color:#404040;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils)>dt:first-child,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt:first-child{margin-top:0}html.writer-html4 .rst-content dl:not(.docutils) code.descclassname,html.writer-html4 .rst-content dl:not(.docutils) code.descname,html.writer-html4 .rst-content dl:not(.docutils) tt.descclassname,html.writer-html4 .rst-content dl:not(.docutils) tt.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) code.descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) code.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) tt.descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) tt.descname{background-color:transparent;border:none;padding:0;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils) code.descname,html.writer-html4 .rst-content dl:not(.docutils) tt.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) code.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) tt.descname{font-weight:700}html.writer-html4 .rst-content dl:not(.docutils) .optional,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .optional{display:inline-block;padding:0 4px;color:#000;font-weight:700}html.writer-html4 .rst-content dl:not(.docutils) .property,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .property{display:inline-block;padding-right:8px;max-width:100%}html.writer-html4 .rst-content dl:not(.docutils) .k,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .k{font-style:italic}html.writer-html4 .rst-content dl:not(.docutils) .descclassname,html.writer-html4 .rst-content dl:not(.docutils) .descname,html.writer-html4 .rst-content dl:not(.docutils) .sig-name,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .sig-name{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;color:#000}.rst-content .viewcode-back,.rst-content .viewcode-link{display:inline-block;color:#27ae60;font-size:80%;padding-left:24px}.rst-content .viewcode-back{display:block;float:right}.rst-content p.rubric{margin-bottom:12px;font-weight:700}.rst-content code.download,.rst-content tt.download{background:inherit;padding:inherit;font-weight:400;font-family:inherit;font-size:inherit;color:inherit;border:inherit;white-space:inherit}.rst-content code.download span:first-child,.rst-content tt.download span:first-child{-webkit-font-smoothing:subpixel-antialiased}.rst-content code.download span:first-child:before,.rst-content tt.download span:first-child:before{margin-right:4px}.rst-content .guilabel,.rst-content .menuselection{font-size:80%;font-weight:700;border-radius:4px;padding:2.4px 6px;margin:auto 2px}.rst-content .guilabel,.rst-content .menuselection{border:1px solid #7fbbe3;background:#e7f2fa}.rst-content :not(dl.option-list)>:not(dt):not(kbd):not(.kbd)>.kbd,.rst-content :not(dl.option-list)>:not(dt):not(kbd):not(.kbd)>kbd{color:inherit;font-size:80%;background-color:#fff;border:1px solid #a6a6a6;border-radius:4px;box-shadow:0 2px grey;padding:2.4px 6px;margin:auto 0}.rst-content .versionmodified{font-style:italic}@media screen and (max-width:480px){.rst-content .sidebar{width:100%}}span[id*=MathJax-Span]{color:#404040}.math{text-align:center}@font-face{font-family:Lato;src:url(fonts/lato-normal.woff2?bd03a2cc277bbbc338d464e679fe9942) format("woff2"),url(fonts/lato-normal.woff?27bd77b9162d388cb8d4c4217c7c5e2a) format("woff");font-weight:400;font-style:normal;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-bold.woff2?cccb897485813c7c256901dbca54ecf2) format("woff2"),url(fonts/lato-bold.woff?d878b6c29b10beca227e9eef4246111b) format("woff");font-weight:700;font-style:normal;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-bold-italic.woff2?0b6bb6725576b072c5d0b02ecdd1900d) format("woff2"),url(fonts/lato-bold-italic.woff?9c7e4e9eb485b4a121c760e61bc3707c) format("woff");font-weight:700;font-style:italic;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-normal-italic.woff2?4eb103b4d12be57cb1d040ed5e162e9d) format("woff2"),url(fonts/lato-normal-italic.woff?f28f2d6482446544ef1ea1ccc6dd5892) format("woff");font-weight:400;font-style:italic;font-display:block}@font-face{font-family:Roboto Slab;font-style:normal;font-weight:400;src:url(fonts/Roboto-Slab-Regular.woff2?7abf5b8d04d26a2cafea937019bca958) format("woff2"),url(fonts/Roboto-Slab-Regular.woff?c1be9284088d487c5e3ff0a10a92e58c) format("woff");font-display:block}@font-face{font-family:Roboto Slab;font-style:normal;font-weight:700;src:url(fonts/Roboto-Slab-Bold.woff2?9984f4a9bda09be08e83f2506954adbe) format("woff2"),url(fonts/Roboto-Slab-Bold.woff?bed5564a116b05148e3b3bea6fb1162a) format("woff");font-display:block} \ No newline at end of file diff --git a/_static/doctools.js b/_static/doctools.js new file mode 100644 index 00000000..d06a71d7 --- /dev/null +++ b/_static/doctools.js @@ -0,0 +1,156 @@ +/* + * doctools.js + * ~~~~~~~~~~~ + * + * Base JavaScript utilities for all Sphinx HTML documentation. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ +"use strict"; + +const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ + "TEXTAREA", + "INPUT", + "SELECT", + "BUTTON", +]); + +const _ready = (callback) => { + if (document.readyState !== "loading") { + callback(); + } else { + document.addEventListener("DOMContentLoaded", callback); + } +}; + +/** + * Small JavaScript module for the documentation. + */ +const Documentation = { + init: () => { + Documentation.initDomainIndexTable(); + Documentation.initOnKeyListeners(); + }, + + /** + * i18n support + */ + TRANSLATIONS: {}, + PLURAL_EXPR: (n) => (n === 1 ? 0 : 1), + LOCALE: "unknown", + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext: (string) => { + const translated = Documentation.TRANSLATIONS[string]; + switch (typeof translated) { + case "undefined": + return string; // no translation + case "string": + return translated; // translation exists + default: + return translated[0]; // (singular, plural) translation tuple exists + } + }, + + ngettext: (singular, plural, n) => { + const translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated !== "undefined") + return translated[Documentation.PLURAL_EXPR(n)]; + return n === 1 ? singular : plural; + }, + + addTranslations: (catalog) => { + Object.assign(Documentation.TRANSLATIONS, catalog.messages); + Documentation.PLURAL_EXPR = new Function( + "n", + `return (${catalog.plural_expr})` + ); + Documentation.LOCALE = catalog.locale; + }, + + /** + * helper function to focus on search bar + */ + focusSearchBar: () => { + document.querySelectorAll("input[name=q]")[0]?.focus(); + }, + + /** + * Initialise the domain index toggle buttons + */ + initDomainIndexTable: () => { + const toggler = (el) => { + const idNumber = el.id.substr(7); + const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); + if (el.src.substr(-9) === "minus.png") { + el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; + toggledRows.forEach((el) => (el.style.display = "none")); + } else { + el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; + toggledRows.forEach((el) => (el.style.display = "")); + } + }; + + const togglerElements = document.querySelectorAll("img.toggler"); + togglerElements.forEach((el) => + el.addEventListener("click", (event) => toggler(event.currentTarget)) + ); + togglerElements.forEach((el) => (el.style.display = "")); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); + }, + + initOnKeyListeners: () => { + // only install a listener if it is really needed + if ( + !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && + !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS + ) + return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.altKey || event.ctrlKey || event.metaKey) return; + + if (!event.shiftKey) { + switch (event.key) { + case "ArrowLeft": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const prevLink = document.querySelector('link[rel="prev"]'); + if (prevLink && prevLink.href) { + window.location.href = prevLink.href; + event.preventDefault(); + } + break; + case "ArrowRight": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const nextLink = document.querySelector('link[rel="next"]'); + if (nextLink && nextLink.href) { + window.location.href = nextLink.href; + event.preventDefault(); + } + break; + } + } + + // some keyboard layouts may need Shift to get / + switch (event.key) { + case "/": + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; + Documentation.focusSearchBar(); + event.preventDefault(); + } + }); + }, +}; + +// quick alias for translations +const _ = Documentation.gettext; + +_ready(Documentation.init); diff --git a/_static/documentation_options.js b/_static/documentation_options.js new file mode 100644 index 00000000..b8cd738b --- /dev/null +++ b/_static/documentation_options.js @@ -0,0 +1,13 @@ +const DOCUMENTATION_OPTIONS = { + VERSION: '1.14.1', + LANGUAGE: 'en', + COLLAPSE_INDEX: false, + BUILDER: 'html', + FILE_SUFFIX: '.html', + LINK_SUFFIX: '.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt', + NAVIGATION_WITH_KEYS: false, + SHOW_SEARCH_SUMMARY: true, + ENABLE_SEARCH_SHORTCUTS: true, +}; \ No newline at end of file diff --git a/_static/file.png b/_static/file.png new file mode 100644 index 00000000..a858a410 Binary files /dev/null and b/_static/file.png differ diff --git a/_static/graphviz.css b/_static/graphviz.css new file mode 100644 index 00000000..8d81c02e --- /dev/null +++ b/_static/graphviz.css @@ -0,0 +1,19 @@ +/* + * graphviz.css + * ~~~~~~~~~~~~ + * + * Sphinx stylesheet -- graphviz extension. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +img.graphviz { + border: 0; + max-width: 100%; +} + +object.graphviz { + max-width: 100%; +} diff --git a/_static/js/badge_only.js b/_static/js/badge_only.js new file mode 100644 index 00000000..526d7234 --- /dev/null +++ b/_static/js/badge_only.js @@ -0,0 +1 @@ +!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=4)}({4:function(e,t,r){}}); \ No newline at end of file diff --git a/_static/js/html5shiv-printshiv.min.js b/_static/js/html5shiv-printshiv.min.js new file mode 100644 index 00000000..2b43bd06 --- /dev/null +++ b/_static/js/html5shiv-printshiv.min.js @@ -0,0 +1,4 @@ +/** +* @preserve HTML5 Shiv 3.7.3-pre | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed +*/ +!function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=y.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=y.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),y.elements=c+" "+a,j(b)}function f(a){var b=x[a[v]];return b||(b={},w++,a[v]=w,x[w]=b),b}function g(a,c,d){if(c||(c=b),q)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():u.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||t.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),q)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return y.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(y,b.frag)}function j(a){a||(a=b);var d=f(a);return!y.shivCSS||p||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),q||i(a,d),a}function k(a){for(var b,c=a.getElementsByTagName("*"),e=c.length,f=RegExp("^(?:"+d().join("|")+")$","i"),g=[];e--;)b=c[e],f.test(b.nodeName)&&g.push(b.applyElement(l(b)));return g}function l(a){for(var b,c=a.attributes,d=c.length,e=a.ownerDocument.createElement(A+":"+a.nodeName);d--;)b=c[d],b.specified&&e.setAttribute(b.nodeName,b.nodeValue);return e.style.cssText=a.style.cssText,e}function m(a){for(var b,c=a.split("{"),e=c.length,f=RegExp("(^|[\\s,>+~])("+d().join("|")+")(?=[[\\s,>+~#.:]|$)","gi"),g="$1"+A+"\\:$2";e--;)b=c[e]=c[e].split("}"),b[b.length-1]=b[b.length-1].replace(f,g),c[e]=b.join("}");return c.join("{")}function n(a){for(var b=a.length;b--;)a[b].removeNode()}function o(a){function b(){clearTimeout(g._removeSheetTimer),d&&d.removeNode(!0),d=null}var d,e,g=f(a),h=a.namespaces,i=a.parentWindow;return!B||a.printShived?a:("undefined"==typeof h[A]&&h.add(A),i.attachEvent("onbeforeprint",function(){b();for(var f,g,h,i=a.styleSheets,j=[],l=i.length,n=Array(l);l--;)n[l]=i[l];for(;h=n.pop();)if(!h.disabled&&z.test(h.media)){try{f=h.imports,g=f.length}catch(o){g=0}for(l=0;g>l;l++)n.push(f[l]);try{j.push(h.cssText)}catch(o){}}j=m(j.reverse().join("")),e=k(a),d=c(a,j)}),i.attachEvent("onafterprint",function(){n(e),clearTimeout(g._removeSheetTimer),g._removeSheetTimer=setTimeout(b,500)}),a.printShived=!0,a)}var p,q,r="3.7.3",s=a.html5||{},t=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,u=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,v="_html5shiv",w=0,x={};!function(){try{var a=b.createElement("a");a.innerHTML="",p="hidden"in a,q=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){p=!0,q=!0}}();var y={elements:s.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:r,shivCSS:s.shivCSS!==!1,supportsUnknownElements:q,shivMethods:s.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=y,j(b);var z=/^$|\b(?:all|print)\b/,A="html5shiv",B=!q&&function(){var c=b.documentElement;return!("undefined"==typeof b.namespaces||"undefined"==typeof b.parentWindow||"undefined"==typeof c.applyElement||"undefined"==typeof c.removeNode||"undefined"==typeof a.attachEvent)}();y.type+=" print",y.shivPrint=o,o(b),"object"==typeof module&&module.exports&&(module.exports=y)}("undefined"!=typeof window?window:this,document); \ No newline at end of file diff --git a/_static/js/html5shiv.min.js b/_static/js/html5shiv.min.js new file mode 100644 index 00000000..cd1c674f --- /dev/null +++ b/_static/js/html5shiv.min.js @@ -0,0 +1,4 @@ +/** +* @preserve HTML5 Shiv 3.7.3 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed +*/ +!function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=t.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=t.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),t.elements=c+" "+a,j(b)}function f(a){var b=s[a[q]];return b||(b={},r++,a[q]=r,s[r]=b),b}function g(a,c,d){if(c||(c=b),l)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():p.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||o.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),l)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return t.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(t,b.frag)}function j(a){a||(a=b);var d=f(a);return!t.shivCSS||k||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),l||i(a,d),a}var k,l,m="3.7.3-pre",n=a.html5||{},o=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,p=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,q="_html5shiv",r=0,s={};!function(){try{var a=b.createElement("a");a.innerHTML="",k="hidden"in a,l=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){k=!0,l=!0}}();var t={elements:n.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:m,shivCSS:n.shivCSS!==!1,supportsUnknownElements:l,shivMethods:n.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=t,j(b),"object"==typeof module&&module.exports&&(module.exports=t)}("undefined"!=typeof window?window:this,document); \ No newline at end of file diff --git a/_static/js/theme.js b/_static/js/theme.js new file mode 100644 index 00000000..1fddb6ee --- /dev/null +++ b/_static/js/theme.js @@ -0,0 +1 @@ +!function(n){var e={};function t(i){if(e[i])return e[i].exports;var o=e[i]={i:i,l:!1,exports:{}};return n[i].call(o.exports,o,o.exports,t),o.l=!0,o.exports}t.m=n,t.c=e,t.d=function(n,e,i){t.o(n,e)||Object.defineProperty(n,e,{enumerable:!0,get:i})},t.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},t.t=function(n,e){if(1&e&&(n=t(n)),8&e)return n;if(4&e&&"object"==typeof n&&n&&n.__esModule)return n;var i=Object.create(null);if(t.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:n}),2&e&&"string"!=typeof n)for(var o in n)t.d(i,o,function(e){return n[e]}.bind(null,o));return i},t.n=function(n){var e=n&&n.__esModule?function(){return n.default}:function(){return n};return t.d(e,"a",e),e},t.o=function(n,e){return Object.prototype.hasOwnProperty.call(n,e)},t.p="",t(t.s=0)}([function(n,e,t){t(1),n.exports=t(3)},function(n,e,t){(function(){var e="undefined"!=typeof window?window.jQuery:t(2);n.exports.ThemeNav={navBar:null,win:null,winScroll:!1,winResize:!1,linkScroll:!1,winPosition:0,winHeight:null,docHeight:null,isRunning:!1,enable:function(n){var t=this;void 0===n&&(n=!0),t.isRunning||(t.isRunning=!0,e((function(e){t.init(e),t.reset(),t.win.on("hashchange",t.reset),n&&t.win.on("scroll",(function(){t.linkScroll||t.winScroll||(t.winScroll=!0,requestAnimationFrame((function(){t.onScroll()})))})),t.win.on("resize",(function(){t.winResize||(t.winResize=!0,requestAnimationFrame((function(){t.onResize()})))})),t.onResize()})))},enableSticky:function(){this.enable(!0)},init:function(n){n(document);var e=this;this.navBar=n("div.wy-side-scroll:first"),this.win=n(window),n(document).on("click","[data-toggle='wy-nav-top']",(function(){n("[data-toggle='wy-nav-shift']").toggleClass("shift"),n("[data-toggle='rst-versions']").toggleClass("shift")})).on("click",".wy-menu-vertical .current ul li a",(function(){var t=n(this);n("[data-toggle='wy-nav-shift']").removeClass("shift"),n("[data-toggle='rst-versions']").toggleClass("shift"),e.toggleCurrent(t),e.hashChange()})).on("click","[data-toggle='rst-current-version']",(function(){n("[data-toggle='rst-versions']").toggleClass("shift-up")})),n("table.docutils:not(.field-list,.footnote,.citation)").wrap("
"),n("table.docutils.footnote").wrap("
"),n("table.docutils.citation").wrap("
"),n(".wy-menu-vertical ul").not(".simple").siblings("a").each((function(){var t=n(this);expand=n(''),expand.on("click",(function(n){return e.toggleCurrent(t),n.stopPropagation(),!1})),t.prepend(expand)}))},reset:function(){var n=encodeURI(window.location.hash)||"#";try{var e=$(".wy-menu-vertical"),t=e.find('[href="'+n+'"]');if(0===t.length){var i=$('.document [id="'+n.substring(1)+'"]').closest("div.section");0===(t=e.find('[href="#'+i.attr("id")+'"]')).length&&(t=e.find('[href="#"]'))}if(t.length>0){$(".wy-menu-vertical .current").removeClass("current").attr("aria-expanded","false"),t.addClass("current").attr("aria-expanded","true"),t.closest("li.toctree-l1").parent().addClass("current").attr("aria-expanded","true");for(let n=1;n<=10;n++)t.closest("li.toctree-l"+n).addClass("current").attr("aria-expanded","true");t[0].scrollIntoView()}}catch(n){console.log("Error expanding nav for anchor",n)}},onScroll:function(){this.winScroll=!1;var n=this.win.scrollTop(),e=n+this.winHeight,t=this.navBar.scrollTop()+(n-this.winPosition);n<0||e>this.docHeight||(this.navBar.scrollTop(t),this.winPosition=n)},onResize:function(){this.winResize=!1,this.winHeight=this.win.height(),this.docHeight=$(document).height()},hashChange:function(){this.linkScroll=!0,this.win.one("hashchange",(function(){this.linkScroll=!1}))},toggleCurrent:function(n){var e=n.closest("li");e.siblings("li.current").removeClass("current").attr("aria-expanded","false"),e.siblings().find("li.current").removeClass("current").attr("aria-expanded","false");var t=e.find("> ul li");t.length&&(t.removeClass("current").attr("aria-expanded","false"),e.toggleClass("current").attr("aria-expanded",(function(n,e){return"true"==e?"false":"true"})))}},"undefined"!=typeof window&&(window.SphinxRtdTheme={Navigation:n.exports.ThemeNav,StickyNav:n.exports.ThemeNav}),function(){for(var n=0,e=["ms","moz","webkit","o"],t=0;t0 + var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 + var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 + var s_v = "^(" + C + ")?" + v; // vowel in stem + + this.stemWord = function (w) { + var stem; + var suffix; + var firstch; + var origword = w; + + if (w.length < 3) + return w; + + var re; + var re2; + var re3; + var re4; + + firstch = w.substr(0,1); + if (firstch == "y") + w = firstch.toUpperCase() + w.substr(1); + + // Step 1a + re = /^(.+?)(ss|i)es$/; + re2 = /^(.+?)([^s])s$/; + + if (re.test(w)) + w = w.replace(re,"$1$2"); + else if (re2.test(w)) + w = w.replace(re2,"$1$2"); + + // Step 1b + re = /^(.+?)eed$/; + re2 = /^(.+?)(ed|ing)$/; + if (re.test(w)) { + var fp = re.exec(w); + re = new RegExp(mgr0); + if (re.test(fp[1])) { + re = /.$/; + w = w.replace(re,""); + } + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = new RegExp(s_v); + if (re2.test(stem)) { + w = stem; + re2 = /(at|bl|iz)$/; + re3 = new RegExp("([^aeiouylsz])\\1$"); + re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re2.test(w)) + w = w + "e"; + else if (re3.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + else if (re4.test(w)) + w = w + "e"; + } + } + + // Step 1c + re = /^(.+?)y$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(s_v); + if (re.test(stem)) + w = stem + "i"; + } + + // Step 2 + re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step2list[suffix]; + } + + // Step 3 + re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step3list[suffix]; + } + + // Step 4 + re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; + re2 = /^(.+?)(s|t)(ion)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + if (re.test(stem)) + w = stem; + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = new RegExp(mgr1); + if (re2.test(stem)) + w = stem; + } + + // Step 5 + re = /^(.+?)e$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + re2 = new RegExp(meq1); + re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) + w = stem; + } + re = /ll$/; + re2 = new RegExp(mgr1); + if (re.test(w) && re2.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + + // and turn initial Y back to y + if (firstch == "y") + w = firstch.toLowerCase() + w.substr(1); + return w; + } +} + diff --git a/_static/minus.png b/_static/minus.png new file mode 100644 index 00000000..d96755fd Binary files /dev/null and b/_static/minus.png differ diff --git a/_static/plus.png b/_static/plus.png new file mode 100644 index 00000000..7107cec9 Binary files /dev/null and b/_static/plus.png differ diff --git a/_static/pygments.css b/_static/pygments.css new file mode 100644 index 00000000..0d49244e --- /dev/null +++ b/_static/pygments.css @@ -0,0 +1,75 @@ +pre { line-height: 125%; } +td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +.highlight .hll { background-color: #ffffcc } +.highlight { background: #eeffcc; } +.highlight .c { color: #408090; font-style: italic } /* Comment */ +.highlight .err { border: 1px solid #FF0000 } /* Error */ +.highlight .k { color: #007020; font-weight: bold } /* Keyword */ +.highlight .o { color: #666666 } /* Operator */ +.highlight .ch { color: #408090; font-style: italic } /* Comment.Hashbang */ +.highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: #007020 } /* Comment.Preproc */ +.highlight .cpf { color: #408090; font-style: italic } /* Comment.PreprocFile */ +.highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */ +.highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */ +.highlight .gd { color: #A00000 } /* Generic.Deleted */ +.highlight .ge { font-style: italic } /* Generic.Emph */ +.highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */ +.highlight .gr { color: #FF0000 } /* Generic.Error */ +.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ +.highlight .gi { color: #00A000 } /* Generic.Inserted */ +.highlight .go { color: #333333 } /* Generic.Output */ +.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */ +.highlight .gs { font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ +.highlight .gt { color: #0044DD } /* Generic.Traceback */ +.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */ +.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */ +.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */ +.highlight .kp { color: #007020 } /* Keyword.Pseudo */ +.highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */ +.highlight .kt { color: #902000 } /* Keyword.Type */ +.highlight .m { color: #208050 } /* Literal.Number */ +.highlight .s { color: #4070a0 } /* Literal.String */ +.highlight .na { color: #4070a0 } /* Name.Attribute */ +.highlight .nb { color: #007020 } /* Name.Builtin */ +.highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */ +.highlight .no { color: #60add5 } /* Name.Constant */ +.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */ +.highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */ +.highlight .ne { color: #007020 } /* Name.Exception */ +.highlight .nf { color: #06287e } /* Name.Function */ +.highlight .nl { color: #002070; font-weight: bold } /* Name.Label */ +.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */ +.highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */ +.highlight .nv { color: #bb60d5 } /* Name.Variable */ +.highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */ +.highlight .w { color: #bbbbbb } /* Text.Whitespace */ +.highlight .mb { color: #208050 } /* Literal.Number.Bin */ +.highlight .mf { color: #208050 } /* Literal.Number.Float */ +.highlight .mh { color: #208050 } /* Literal.Number.Hex */ +.highlight .mi { color: #208050 } /* Literal.Number.Integer */ +.highlight .mo { color: #208050 } /* Literal.Number.Oct */ +.highlight .sa { color: #4070a0 } /* Literal.String.Affix */ +.highlight .sb { color: #4070a0 } /* Literal.String.Backtick */ +.highlight .sc { color: #4070a0 } /* Literal.String.Char */ +.highlight .dl { color: #4070a0 } /* Literal.String.Delimiter */ +.highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */ +.highlight .s2 { color: #4070a0 } /* Literal.String.Double */ +.highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */ +.highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */ +.highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */ +.highlight .sx { color: #c65d09 } /* Literal.String.Other */ +.highlight .sr { color: #235388 } /* Literal.String.Regex */ +.highlight .s1 { color: #4070a0 } /* Literal.String.Single */ +.highlight .ss { color: #517918 } /* Literal.String.Symbol */ +.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */ +.highlight .fm { color: #06287e } /* Name.Function.Magic */ +.highlight .vc { color: #bb60d5 } /* Name.Variable.Class */ +.highlight .vg { color: #bb60d5 } /* Name.Variable.Global */ +.highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */ +.highlight .vm { color: #bb60d5 } /* Name.Variable.Magic */ +.highlight .il { color: #208050 } /* Literal.Number.Integer.Long */ \ No newline at end of file diff --git a/_static/searchtools.js b/_static/searchtools.js new file mode 100644 index 00000000..7918c3fa --- /dev/null +++ b/_static/searchtools.js @@ -0,0 +1,574 @@ +/* + * searchtools.js + * ~~~~~~~~~~~~~~~~ + * + * Sphinx JavaScript utilities for the full-text search. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ +"use strict"; + +/** + * Simple result scoring code. + */ +if (typeof Scorer === "undefined") { + var Scorer = { + // Implement the following function to further tweak the score for each result + // The function takes a result array [docname, title, anchor, descr, score, filename] + // and returns the new score. + /* + score: result => { + const [docname, title, anchor, descr, score, filename] = result + return score + }, + */ + + // query matches the full name of an object + objNameMatch: 11, + // or matches in the last dotted part of the object name + objPartialMatch: 6, + // Additive scores depending on the priority of the object + objPrio: { + 0: 15, // used to be importantResults + 1: 5, // used to be objectResults + 2: -5, // used to be unimportantResults + }, + // Used when the priority is not in the mapping. + objPrioDefault: 0, + + // query found in title + title: 15, + partialTitle: 7, + // query found in terms + term: 5, + partialTerm: 2, + }; +} + +const _removeChildren = (element) => { + while (element && element.lastChild) element.removeChild(element.lastChild); +}; + +/** + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping + */ +const _escapeRegExp = (string) => + string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string + +const _displayItem = (item, searchTerms, highlightTerms) => { + const docBuilder = DOCUMENTATION_OPTIONS.BUILDER; + const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX; + const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX; + const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; + const contentRoot = document.documentElement.dataset.content_root; + + const [docName, title, anchor, descr, score, _filename] = item; + + let listItem = document.createElement("li"); + let requestUrl; + let linkUrl; + if (docBuilder === "dirhtml") { + // dirhtml builder + let dirname = docName + "/"; + if (dirname.match(/\/index\/$/)) + dirname = dirname.substring(0, dirname.length - 6); + else if (dirname === "index/") dirname = ""; + requestUrl = contentRoot + dirname; + linkUrl = requestUrl; + } else { + // normal html builders + requestUrl = contentRoot + docName + docFileSuffix; + linkUrl = docName + docLinkSuffix; + } + let linkEl = listItem.appendChild(document.createElement("a")); + linkEl.href = linkUrl + anchor; + linkEl.dataset.score = score; + linkEl.innerHTML = title; + if (descr) { + listItem.appendChild(document.createElement("span")).innerHTML = + " (" + descr + ")"; + // highlight search terms in the description + if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js + highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); + } + else if (showSearchSummary) + fetch(requestUrl) + .then((responseData) => responseData.text()) + .then((data) => { + if (data) + listItem.appendChild( + Search.makeSearchSummary(data, searchTerms) + ); + // highlight search terms in the summary + if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js + highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); + }); + Search.output.appendChild(listItem); +}; +const _finishSearch = (resultCount) => { + Search.stopPulse(); + Search.title.innerText = _("Search Results"); + if (!resultCount) + Search.status.innerText = Documentation.gettext( + "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories." + ); + else + Search.status.innerText = _( + `Search finished, found ${resultCount} page(s) matching the search query.` + ); +}; +const _displayNextItem = ( + results, + resultCount, + searchTerms, + highlightTerms, +) => { + // results left, load the summary and display it + // this is intended to be dynamic (don't sub resultsCount) + if (results.length) { + _displayItem(results.pop(), searchTerms, highlightTerms); + setTimeout( + () => _displayNextItem(results, resultCount, searchTerms, highlightTerms), + 5 + ); + } + // search finished, update title and status message + else _finishSearch(resultCount); +}; + +/** + * Default splitQuery function. Can be overridden in ``sphinx.search`` with a + * custom function per language. + * + * The regular expression works by splitting the string on consecutive characters + * that are not Unicode letters, numbers, underscores, or emoji characters. + * This is the same as ``\W+`` in Python, preserving the surrogate pair area. + */ +if (typeof splitQuery === "undefined") { + var splitQuery = (query) => query + .split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}]+/gu) + .filter(term => term) // remove remaining empty strings +} + +/** + * Search Module + */ +const Search = { + _index: null, + _queued_query: null, + _pulse_status: -1, + + htmlToText: (htmlString) => { + const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html'); + htmlElement.querySelectorAll(".headerlink").forEach((el) => { el.remove() }); + const docContent = htmlElement.querySelector('[role="main"]'); + if (docContent !== undefined) return docContent.textContent; + console.warn( + "Content block not found. Sphinx search tries to obtain it via '[role=main]'. Could you check your theme or template." + ); + return ""; + }, + + init: () => { + const query = new URLSearchParams(window.location.search).get("q"); + document + .querySelectorAll('input[name="q"]') + .forEach((el) => (el.value = query)); + if (query) Search.performSearch(query); + }, + + loadIndex: (url) => + (document.body.appendChild(document.createElement("script")).src = url), + + setIndex: (index) => { + Search._index = index; + if (Search._queued_query !== null) { + const query = Search._queued_query; + Search._queued_query = null; + Search.query(query); + } + }, + + hasIndex: () => Search._index !== null, + + deferQuery: (query) => (Search._queued_query = query), + + stopPulse: () => (Search._pulse_status = -1), + + startPulse: () => { + if (Search._pulse_status >= 0) return; + + const pulse = () => { + Search._pulse_status = (Search._pulse_status + 1) % 4; + Search.dots.innerText = ".".repeat(Search._pulse_status); + if (Search._pulse_status >= 0) window.setTimeout(pulse, 500); + }; + pulse(); + }, + + /** + * perform a search for something (or wait until index is loaded) + */ + performSearch: (query) => { + // create the required interface elements + const searchText = document.createElement("h2"); + searchText.textContent = _("Searching"); + const searchSummary = document.createElement("p"); + searchSummary.classList.add("search-summary"); + searchSummary.innerText = ""; + const searchList = document.createElement("ul"); + searchList.classList.add("search"); + + const out = document.getElementById("search-results"); + Search.title = out.appendChild(searchText); + Search.dots = Search.title.appendChild(document.createElement("span")); + Search.status = out.appendChild(searchSummary); + Search.output = out.appendChild(searchList); + + const searchProgress = document.getElementById("search-progress"); + // Some themes don't use the search progress node + if (searchProgress) { + searchProgress.innerText = _("Preparing search..."); + } + Search.startPulse(); + + // index already loaded, the browser was quick! + if (Search.hasIndex()) Search.query(query); + else Search.deferQuery(query); + }, + + /** + * execute search (requires search index to be loaded) + */ + query: (query) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + const allTitles = Search._index.alltitles; + const indexEntries = Search._index.indexentries; + + // stem the search terms and add them to the correct list + const stemmer = new Stemmer(); + const searchTerms = new Set(); + const excludedTerms = new Set(); + const highlightTerms = new Set(); + const objectTerms = new Set(splitQuery(query.toLowerCase().trim())); + splitQuery(query.trim()).forEach((queryTerm) => { + const queryTermLower = queryTerm.toLowerCase(); + + // maybe skip this "word" + // stopwords array is from language_data.js + if ( + stopwords.indexOf(queryTermLower) !== -1 || + queryTerm.match(/^\d+$/) + ) + return; + + // stem the word + let word = stemmer.stemWord(queryTermLower); + // select the correct list + if (word[0] === "-") excludedTerms.add(word.substr(1)); + else { + searchTerms.add(word); + highlightTerms.add(queryTermLower); + } + }); + + if (SPHINX_HIGHLIGHT_ENABLED) { // set in sphinx_highlight.js + localStorage.setItem("sphinx_highlight_terms", [...highlightTerms].join(" ")) + } + + // console.debug("SEARCH: searching for:"); + // console.info("required: ", [...searchTerms]); + // console.info("excluded: ", [...excludedTerms]); + + // array of [docname, title, anchor, descr, score, filename] + let results = []; + _removeChildren(document.getElementById("search-progress")); + + const queryLower = query.toLowerCase(); + for (const [title, foundTitles] of Object.entries(allTitles)) { + if (title.toLowerCase().includes(queryLower) && (queryLower.length >= title.length/2)) { + for (const [file, id] of foundTitles) { + let score = Math.round(100 * queryLower.length / title.length) + results.push([ + docNames[file], + titles[file] !== title ? `${titles[file]} > ${title}` : title, + id !== null ? "#" + id : "", + null, + score, + filenames[file], + ]); + } + } + } + + // search for explicit entries in index directives + for (const [entry, foundEntries] of Object.entries(indexEntries)) { + if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) { + for (const [file, id] of foundEntries) { + let score = Math.round(100 * queryLower.length / entry.length) + results.push([ + docNames[file], + titles[file], + id ? "#" + id : "", + null, + score, + filenames[file], + ]); + } + } + } + + // lookup as object + objectTerms.forEach((term) => + results.push(...Search.performObjectSearch(term, objectTerms)) + ); + + // lookup as search terms in fulltext + results.push(...Search.performTermsSearch(searchTerms, excludedTerms)); + + // let the scorer override scores with a custom scoring function + if (Scorer.score) results.forEach((item) => (item[4] = Scorer.score(item))); + + // now sort the results by score (in opposite order of appearance, since the + // display function below uses pop() to retrieve items) and then + // alphabetically + results.sort((a, b) => { + const leftScore = a[4]; + const rightScore = b[4]; + if (leftScore === rightScore) { + // same score: sort alphabetically + const leftTitle = a[1].toLowerCase(); + const rightTitle = b[1].toLowerCase(); + if (leftTitle === rightTitle) return 0; + return leftTitle > rightTitle ? -1 : 1; // inverted is intentional + } + return leftScore > rightScore ? 1 : -1; + }); + + // remove duplicate search results + // note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept + let seen = new Set(); + results = results.reverse().reduce((acc, result) => { + let resultStr = result.slice(0, 4).concat([result[5]]).map(v => String(v)).join(','); + if (!seen.has(resultStr)) { + acc.push(result); + seen.add(resultStr); + } + return acc; + }, []); + + results = results.reverse(); + + // for debugging + //Search.lastresults = results.slice(); // a copy + // console.info("search results:", Search.lastresults); + + // print the results + _displayNextItem(results, results.length, searchTerms, highlightTerms); + }, + + /** + * search for object names + */ + performObjectSearch: (object, objectTerms) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const objects = Search._index.objects; + const objNames = Search._index.objnames; + const titles = Search._index.titles; + + const results = []; + + const objectSearchCallback = (prefix, match) => { + const name = match[4] + const fullname = (prefix ? prefix + "." : "") + name; + const fullnameLower = fullname.toLowerCase(); + if (fullnameLower.indexOf(object) < 0) return; + + let score = 0; + const parts = fullnameLower.split("."); + + // check for different match types: exact matches of full name or + // "last name" (i.e. last dotted part) + if (fullnameLower === object || parts.slice(-1)[0] === object) + score += Scorer.objNameMatch; + else if (parts.slice(-1)[0].indexOf(object) > -1) + score += Scorer.objPartialMatch; // matches in last name + + const objName = objNames[match[1]][2]; + const title = titles[match[0]]; + + // If more than one term searched for, we require other words to be + // found in the name/title/description + const otherTerms = new Set(objectTerms); + otherTerms.delete(object); + if (otherTerms.size > 0) { + const haystack = `${prefix} ${name} ${objName} ${title}`.toLowerCase(); + if ( + [...otherTerms].some((otherTerm) => haystack.indexOf(otherTerm) < 0) + ) + return; + } + + let anchor = match[3]; + if (anchor === "") anchor = fullname; + else if (anchor === "-") anchor = objNames[match[1]][1] + "-" + fullname; + + const descr = objName + _(", in ") + title; + + // add custom score for some objects according to scorer + if (Scorer.objPrio.hasOwnProperty(match[2])) + score += Scorer.objPrio[match[2]]; + else score += Scorer.objPrioDefault; + + results.push([ + docNames[match[0]], + fullname, + "#" + anchor, + descr, + score, + filenames[match[0]], + ]); + }; + Object.keys(objects).forEach((prefix) => + objects[prefix].forEach((array) => + objectSearchCallback(prefix, array) + ) + ); + return results; + }, + + /** + * search for full-text terms in the index + */ + performTermsSearch: (searchTerms, excludedTerms) => { + // prepare search + const terms = Search._index.terms; + const titleTerms = Search._index.titleterms; + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + + const scoreMap = new Map(); + const fileMap = new Map(); + + // perform the search on the required terms + searchTerms.forEach((word) => { + const files = []; + const arr = [ + { files: terms[word], score: Scorer.term }, + { files: titleTerms[word], score: Scorer.title }, + ]; + // add support for partial matches + if (word.length > 2) { + const escapedWord = _escapeRegExp(word); + Object.keys(terms).forEach((term) => { + if (term.match(escapedWord) && !terms[word]) + arr.push({ files: terms[term], score: Scorer.partialTerm }); + }); + Object.keys(titleTerms).forEach((term) => { + if (term.match(escapedWord) && !titleTerms[word]) + arr.push({ files: titleTerms[word], score: Scorer.partialTitle }); + }); + } + + // no match but word was a required one + if (arr.every((record) => record.files === undefined)) return; + + // found search word in contents + arr.forEach((record) => { + if (record.files === undefined) return; + + let recordFiles = record.files; + if (recordFiles.length === undefined) recordFiles = [recordFiles]; + files.push(...recordFiles); + + // set score for the word in each file + recordFiles.forEach((file) => { + if (!scoreMap.has(file)) scoreMap.set(file, {}); + scoreMap.get(file)[word] = record.score; + }); + }); + + // create the mapping + files.forEach((file) => { + if (fileMap.has(file) && fileMap.get(file).indexOf(word) === -1) + fileMap.get(file).push(word); + else fileMap.set(file, [word]); + }); + }); + + // now check if the files don't contain excluded terms + const results = []; + for (const [file, wordList] of fileMap) { + // check if all requirements are matched + + // as search terms with length < 3 are discarded + const filteredTermCount = [...searchTerms].filter( + (term) => term.length > 2 + ).length; + if ( + wordList.length !== searchTerms.size && + wordList.length !== filteredTermCount + ) + continue; + + // ensure that none of the excluded terms is in the search result + if ( + [...excludedTerms].some( + (term) => + terms[term] === file || + titleTerms[term] === file || + (terms[term] || []).includes(file) || + (titleTerms[term] || []).includes(file) + ) + ) + break; + + // select one (max) score for the file. + const score = Math.max(...wordList.map((w) => scoreMap.get(file)[w])); + // add result to the result list + results.push([ + docNames[file], + titles[file], + "", + null, + score, + filenames[file], + ]); + } + return results; + }, + + /** + * helper function to return a node containing the + * search summary for a given text. keywords is a list + * of stemmed words. + */ + makeSearchSummary: (htmlText, keywords) => { + const text = Search.htmlToText(htmlText); + if (text === "") return null; + + const textLower = text.toLowerCase(); + const actualStartPosition = [...keywords] + .map((k) => textLower.indexOf(k.toLowerCase())) + .filter((i) => i > -1) + .slice(-1)[0]; + const startWithContext = Math.max(actualStartPosition - 120, 0); + + const top = startWithContext === 0 ? "" : "..."; + const tail = startWithContext + 240 < text.length ? "..." : ""; + + let summary = document.createElement("p"); + summary.classList.add("context"); + summary.textContent = top + text.substr(startWithContext, 240).trim() + tail; + + return summary; + }, +}; + +_ready(Search.init); diff --git a/_static/sphinx_highlight.js b/_static/sphinx_highlight.js new file mode 100644 index 00000000..8a96c69a --- /dev/null +++ b/_static/sphinx_highlight.js @@ -0,0 +1,154 @@ +/* Highlighting utilities for Sphinx HTML documentation. */ +"use strict"; + +const SPHINX_HIGHLIGHT_ENABLED = true + +/** + * highlight a given string on a node by wrapping it in + * span elements with the given class name. + */ +const _highlight = (node, addItems, text, className) => { + if (node.nodeType === Node.TEXT_NODE) { + const val = node.nodeValue; + const parent = node.parentNode; + const pos = val.toLowerCase().indexOf(text); + if ( + pos >= 0 && + !parent.classList.contains(className) && + !parent.classList.contains("nohighlight") + ) { + let span; + + const closestNode = parent.closest("body, svg, foreignObject"); + const isInSVG = closestNode && closestNode.matches("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.classList.add(className); + } + + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + const rest = document.createTextNode(val.substr(pos + text.length)); + parent.insertBefore( + span, + parent.insertBefore( + rest, + node.nextSibling + ) + ); + node.nodeValue = val.substr(0, pos); + /* There may be more occurrences of search term in this node. So call this + * function recursively on the remaining fragment. + */ + _highlight(rest, addItems, text, className); + + if (isInSVG) { + const rect = document.createElementNS( + "http://www.w3.org/2000/svg", + "rect" + ); + const bbox = parent.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute("class", className); + addItems.push({ parent: parent, target: rect }); + } + } + } else if (node.matches && !node.matches("button, select, textarea")) { + node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); + } +}; +const _highlightText = (thisNode, text, className) => { + let addItems = []; + _highlight(thisNode, addItems, text, className); + addItems.forEach((obj) => + obj.parent.insertAdjacentElement("beforebegin", obj.target) + ); +}; + +/** + * Small JavaScript module for the documentation. + */ +const SphinxHighlight = { + + /** + * highlight the search words provided in localstorage in the text + */ + highlightSearchWords: () => { + if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight + + // get and clear terms from localstorage + const url = new URL(window.location); + const highlight = + localStorage.getItem("sphinx_highlight_terms") + || url.searchParams.get("highlight") + || ""; + localStorage.removeItem("sphinx_highlight_terms") + url.searchParams.delete("highlight"); + window.history.replaceState({}, "", url); + + // get individual terms from highlight string + const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); + if (terms.length === 0) return; // nothing to do + + // There should never be more than one element matching "div.body" + const divBody = document.querySelectorAll("div.body"); + const body = divBody.length ? divBody[0] : document.querySelector("body"); + window.setTimeout(() => { + terms.forEach((term) => _highlightText(body, term, "highlighted")); + }, 10); + + const searchBox = document.getElementById("searchbox"); + if (searchBox === null) return; + searchBox.appendChild( + document + .createRange() + .createContextualFragment( + '" + ) + ); + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords: () => { + document + .querySelectorAll("#searchbox .highlight-link") + .forEach((el) => el.remove()); + document + .querySelectorAll("span.highlighted") + .forEach((el) => el.classList.remove("highlighted")); + localStorage.removeItem("sphinx_highlight_terms") + }, + + initEscapeListener: () => { + // only install a listener if it is really needed + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return; + if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === "Escape")) { + SphinxHighlight.hideSearchWords(); + event.preventDefault(); + } + }); + }, +}; + +_ready(() => { + /* Do not call highlightSearchWords() when we are on the search page. + * It will highlight words from the *previous* search query. + */ + if (typeof Search === "undefined") SphinxHighlight.highlightSearchWords(); + SphinxHighlight.initEscapeListener(); +}); diff --git a/automod/cpymad.libmadx.apply_table_selections.html b/automod/cpymad.libmadx.apply_table_selections.html new file mode 100644 index 00000000..77b6c25a --- /dev/null +++ b/automod/cpymad.libmadx.apply_table_selections.html @@ -0,0 +1,193 @@ + + + + + + + apply_table_selections — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

apply_table_selections

+
+
+apply_table_selections(table_name)
+

Apply the SELECT/DESELECT commands for table columns/rows.

+

Needed as replacement for the missing out_table call for initializing +t.row_out, t.col_out if the twiss command was performed without a +filename.

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.libmadx.eval.html b/automod/cpymad.libmadx.eval.html new file mode 100644 index 00000000..b1ef0474 --- /dev/null +++ b/automod/cpymad.libmadx.eval.html @@ -0,0 +1,205 @@ + + + + + + + eval — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ +
+
+ +
+

eval

+
+
+eval(expression)
+

Evaluates an expression and returns the result as double.

+
+
Parameters:
+

expression (str) – symbolic expression to evaluate

+
+
Return type:
+

float

+
+
Returns:
+

numeric value of the expression

+
+
+

NOTE: This function does not perform rigorous input validation! It uses +nothing but the MAD-X builtin rather incompetent error checks. This means +invalid input such as ‘+’ can lead to program crashes! If you’re looking +for more secure validation, see cpymad.util.check_expression().

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.libmadx.finish.html b/automod/cpymad.libmadx.finish.html new file mode 100644 index 00000000..f0358e6e --- /dev/null +++ b/automod/cpymad.libmadx.finish.html @@ -0,0 +1,195 @@ + + + + + + + finish — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

finish

+
+
+finish()
+

Cleanup MAD-X.

+
+
Return type:
+

None

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.libmadx.get_active_sequence_name.html b/automod/cpymad.libmadx.get_active_sequence_name.html new file mode 100644 index 00000000..bf3c1c2a --- /dev/null +++ b/automod/cpymad.libmadx.get_active_sequence_name.html @@ -0,0 +1,201 @@ + + + + + + + get_active_sequence_name — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

get_active_sequence_name

+
+
+get_active_sequence_name()
+

Get the name of the active sequence.

+
+
Return type:
+

str

+
+
Returns:
+

name of active sequence

+
+
Raises:
+

RuntimeError – if no sequence is activated

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.libmadx.get_base_type_names.html b/automod/cpymad.libmadx.get_base_type_names.html new file mode 100644 index 00000000..a7085ff7 --- /dev/null +++ b/automod/cpymad.libmadx.get_base_type_names.html @@ -0,0 +1,195 @@ + + + + + + + get_base_type_names — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

get_base_type_names

+
+
+get_base_type_names()
+

Return list of element names for base types.

+
+
Return type:
+

list

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.libmadx.get_beam.html b/automod/cpymad.libmadx.get_beam.html new file mode 100644 index 00000000..57e9786a --- /dev/null +++ b/automod/cpymad.libmadx.get_beam.html @@ -0,0 +1,195 @@ + + + + + + + get_beam — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

get_beam

+
+
+get_beam(beam_name)
+

Return MAD-X beam as dict of values.

+
+
Return type:
+

dict

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.libmadx.get_beam_names.html b/automod/cpymad.libmadx.get_beam_names.html new file mode 100644 index 00000000..c8d11318 --- /dev/null +++ b/automod/cpymad.libmadx.get_beam_names.html @@ -0,0 +1,195 @@ + + + + + + + get_beam_names — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

get_beam_names

+
+
+get_beam_names()
+

Return list of MAD-X beam names.

+
+
Return type:
+

list

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.libmadx.get_current_beam.html b/automod/cpymad.libmadx.get_current_beam.html new file mode 100644 index 00000000..6b604cf3 --- /dev/null +++ b/automod/cpymad.libmadx.get_current_beam.html @@ -0,0 +1,195 @@ + + + + + + + get_current_beam — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

get_current_beam

+
+
+get_current_beam()
+

Get properties of current default beam.

+
+
Return type:
+

dict

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.libmadx.get_defined_command.html b/automod/cpymad.libmadx.get_defined_command.html new file mode 100644 index 00000000..54d5c923 --- /dev/null +++ b/automod/cpymad.libmadx.get_defined_command.html @@ -0,0 +1,195 @@ + + + + + + + get_defined_command — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

get_defined_command

+
+
+get_defined_command(command_name)
+

Return MAD-X command as dict of values.

+
+
Return type:
+

dict

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.libmadx.get_defined_command_names.html b/automod/cpymad.libmadx.get_defined_command_names.html new file mode 100644 index 00000000..0c2b377f --- /dev/null +++ b/automod/cpymad.libmadx.get_defined_command_names.html @@ -0,0 +1,195 @@ + + + + + + + get_defined_command_names — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

get_defined_command_names

+
+
+get_defined_command_names()
+

Return list of MAD-X command names.

+
+
Return type:
+

list

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.libmadx.get_element.html b/automod/cpymad.libmadx.get_element.html new file mode 100644 index 00000000..f4bce526 --- /dev/null +++ b/automod/cpymad.libmadx.get_element.html @@ -0,0 +1,210 @@ + + + + + + + get_element — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

get_element

+
+
+get_element(sequence_name, element_index)
+

Return requested element in the original sequence.

+
+
Parameters:
+
    +
  • sequence_name (str) – sequence name

  • +
  • element_index (int) – element index

  • +
+
+
Return type:
+

dict

+
+
Returns:
+

the element with the specified index

+
+
Raises:
+
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.libmadx.get_element_count.html b/automod/cpymad.libmadx.get_element_count.html new file mode 100644 index 00000000..6a02e79b --- /dev/null +++ b/automod/cpymad.libmadx.get_element_count.html @@ -0,0 +1,204 @@ + + + + + + + get_element_count — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

get_element_count

+
+
+get_element_count(sequence_name)
+

Return number of elements in the original sequence.

+
+
Parameters:
+

sequence_name (str) – sequence name

+
+
Return type:
+

int

+
+
Returns:
+

number of elements in the original sequence

+
+
Raises:
+

ValueError – if the sequence is invalid.

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.libmadx.get_element_index.html b/automod/cpymad.libmadx.get_element_index.html new file mode 100644 index 00000000..47e3e238 --- /dev/null +++ b/automod/cpymad.libmadx.get_element_index.html @@ -0,0 +1,207 @@ + + + + + + + get_element_index — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

get_element_index

+
+
+get_element_index(sequence_name, element_name)
+

Return index of element with specified name in the original sequence.

+
+
Parameters:
+
    +
  • sequence_name (str) – sequence name

  • +
  • element_name (str) – element name

  • +
+
+
Return type:
+

int

+
+
Returns:
+

the index of the specified element

+
+
Raises:
+

ValueError – if the sequence or element name is invalid

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.libmadx.get_element_index_by_position.html b/automod/cpymad.libmadx.get_element_index_by_position.html new file mode 100644 index 00000000..07a59a70 --- /dev/null +++ b/automod/cpymad.libmadx.get_element_index_by_position.html @@ -0,0 +1,207 @@ + + + + + + + get_element_index_by_position — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

get_element_index_by_position

+
+
+get_element_index_by_position(sequence_name, position)
+

Return index of element at specified position in the original sequence.

+
+
Parameters:
+
    +
  • sequence_name (str) – sequence name

  • +
  • position (float) – position (S coordinate)

  • +
+
+
Return type:
+

int

+
+
Returns:
+

the index of an element at that position, -1 if not found

+
+
Raises:
+

ValueError – if the sequence or element name is invalid

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.libmadx.get_element_name.html b/automod/cpymad.libmadx.get_element_name.html new file mode 100644 index 00000000..2b32d839 --- /dev/null +++ b/automod/cpymad.libmadx.get_element_name.html @@ -0,0 +1,210 @@ + + + + + + + get_element_name — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

get_element_name

+
+
+get_element_name(sequence_name, element_index)
+

Get list with the names of all elements of a specific sequence.

+
+
Parameters:
+
    +
  • sequence_name (str) – sequence name

  • +
  • element_index (int) – element index

  • +
+
+
Return type:
+

str

+
+
Returns:
+

the name of the element with the specified index

+
+
Raises:
+
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.libmadx.get_element_names.html b/automod/cpymad.libmadx.get_element_names.html new file mode 100644 index 00000000..28464ada --- /dev/null +++ b/automod/cpymad.libmadx.get_element_names.html @@ -0,0 +1,204 @@ + + + + + + + get_element_names — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

get_element_names

+
+
+get_element_names(sequence_name)
+

Get list with the names of all elements of a specific sequence.

+
+
Parameters:
+

sequence_name (str) – sequence name

+
+
Return type:
+

list

+
+
Returns:
+

names of all elements in the sequence

+
+
Raises:
+

ValueError – if the sequence is invalid

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.libmadx.get_element_positions.html b/automod/cpymad.libmadx.get_element_positions.html new file mode 100644 index 00000000..faa2ec45 --- /dev/null +++ b/automod/cpymad.libmadx.get_element_positions.html @@ -0,0 +1,204 @@ + + + + + + + get_element_positions — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

get_element_positions

+
+
+get_element_positions(sequence_name)
+

Get list with positions of all elements of a specific sequence.

+
+
Parameters:
+

sequence_name (str) – sequence name

+
+
Return type:
+

list

+
+
Returns:
+

positions of all elements in the sequence

+
+
Raises:
+

ValueError – if the sequence is invalid

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.libmadx.get_expanded_element.html b/automod/cpymad.libmadx.get_expanded_element.html new file mode 100644 index 00000000..b425a0e8 --- /dev/null +++ b/automod/cpymad.libmadx.get_expanded_element.html @@ -0,0 +1,212 @@ + + + + + + + get_expanded_element — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

get_expanded_element

+
+
+get_expanded_element(sequence_name, element_index)
+

Return requested element in the expanded sequence.

+
+
Parameters:
+
    +
  • sequence_name (str) – sequence name

  • +
  • element_index (int) – element index

  • +
+
+
Return type:
+

dict

+
+
Returns:
+

the element with the specified index

+
+
Raises:
+
+
+
+

NOTE: this function may currently return elements beyond the end of the +expanded sequence if requested to do so.

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.libmadx.get_expanded_element_count.html b/automod/cpymad.libmadx.get_expanded_element_count.html new file mode 100644 index 00000000..2810baba --- /dev/null +++ b/automod/cpymad.libmadx.get_expanded_element_count.html @@ -0,0 +1,204 @@ + + + + + + + get_expanded_element_count — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

get_expanded_element_count

+
+
+get_expanded_element_count(sequence_name)
+

Return number of elements in the expanded sequence.

+
+
Parameters:
+

sequence_name (str) – sequence name

+
+
Return type:
+

int

+
+
Returns:
+

number of elements in the expanded sequence

+
+
Raises:
+

ValueError – if the sequence is invalid.

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.libmadx.get_expanded_element_index.html b/automod/cpymad.libmadx.get_expanded_element_index.html new file mode 100644 index 00000000..b8d279e6 --- /dev/null +++ b/automod/cpymad.libmadx.get_expanded_element_index.html @@ -0,0 +1,209 @@ + + + + + + + get_expanded_element_index — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

get_expanded_element_index

+
+
+get_expanded_element_index(sequence_name, element_name)
+

Return index of element with specified name in the expanded sequence.

+

NOTE: this is the brute-force linear-time algorithm and therefore not +recommended for frequent execution.

+
+
Parameters:
+
    +
  • sequence_name (str) – sequence name

  • +
  • element_name (str) – element index

  • +
+
+
Return type:
+

int

+
+
Returns:
+

the index of the specified element, -1 if not found

+
+
Raises:
+

ValueError – if the sequence is invalid

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.libmadx.get_expanded_element_index_by_position.html b/automod/cpymad.libmadx.get_expanded_element_index_by_position.html new file mode 100644 index 00000000..442db210 --- /dev/null +++ b/automod/cpymad.libmadx.get_expanded_element_index_by_position.html @@ -0,0 +1,207 @@ + + + + + + + get_expanded_element_index_by_position — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

get_expanded_element_index_by_position

+
+
+get_expanded_element_index_by_position(sequence_name, position)
+

Return index of element at specified position in the expanded sequence.

+
+
Parameters:
+
    +
  • sequence_name (str) – sequence name

  • +
  • position (float) – position (S coordinate)

  • +
+
+
Return type:
+

int

+
+
Returns:
+

the index of an element at that position

+
+
Raises:
+

ValueError – if the sequence or element name is invalid

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.libmadx.get_expanded_element_name.html b/automod/cpymad.libmadx.get_expanded_element_name.html new file mode 100644 index 00000000..c31f9332 --- /dev/null +++ b/automod/cpymad.libmadx.get_expanded_element_name.html @@ -0,0 +1,210 @@ + + + + + + + get_expanded_element_name — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

get_expanded_element_name

+
+
+get_expanded_element_name(sequence_name, element_index)
+

Get list with the names of all elements of a specific sequence.

+
+
Parameters:
+
    +
  • sequence_name (str) – sequence name

  • +
  • element_index (int) – element index

  • +
+
+
Return type:
+

str

+
+
Returns:
+

the name of the element with the specified index

+
+
Raises:
+
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.libmadx.get_expanded_element_names.html b/automod/cpymad.libmadx.get_expanded_element_names.html new file mode 100644 index 00000000..0cd01bc4 --- /dev/null +++ b/automod/cpymad.libmadx.get_expanded_element_names.html @@ -0,0 +1,204 @@ + + + + + + + get_expanded_element_names — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

get_expanded_element_names

+
+
+get_expanded_element_names(sequence_name)
+

Get list with the names of all elements of a specific sequence.

+
+
Parameters:
+

sequence_name (str) – sequence name

+
+
Return type:
+

list

+
+
Returns:
+

names of all elements in the sequence

+
+
Raises:
+

ValueError – if the sequence is invalid

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.libmadx.get_expanded_element_positions.html b/automod/cpymad.libmadx.get_expanded_element_positions.html new file mode 100644 index 00000000..35179062 --- /dev/null +++ b/automod/cpymad.libmadx.get_expanded_element_positions.html @@ -0,0 +1,204 @@ + + + + + + + get_expanded_element_positions — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

get_expanded_element_positions

+
+
+get_expanded_element_positions(sequence_name)
+

Get list with positions of all elements of a specific sequence.

+
+
Parameters:
+

sequence_name (str) – sequence name

+
+
Return type:
+

list

+
+
Returns:
+

positions of all elements in the sequence

+
+
Raises:
+

ValueError – if the sequence is invalid

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.libmadx.get_global_element.html b/automod/cpymad.libmadx.get_global_element.html new file mode 100644 index 00000000..4afdf925 --- /dev/null +++ b/automod/cpymad.libmadx.get_global_element.html @@ -0,0 +1,204 @@ + + + + + + + get_global_element — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

get_global_element

+
+
+get_global_element(element_index)
+

Return requested element in the expanded sequence.

+
+
Parameters:
+

element_index (int) – element index

+
+
Return type:
+

dict

+
+
Returns:
+

the element with the specified index

+
+
Raises:
+

IndexError – if the index is out of range

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.libmadx.get_global_element_count.html b/automod/cpymad.libmadx.get_global_element_count.html new file mode 100644 index 00000000..ea46a2c4 --- /dev/null +++ b/automod/cpymad.libmadx.get_global_element_count.html @@ -0,0 +1,195 @@ + + + + + + + get_global_element_count — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

get_global_element_count

+
+
+get_global_element_count()
+

Return number of globally visible elements.

+
+
Return type:
+

int

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.libmadx.get_global_element_index.html b/automod/cpymad.libmadx.get_global_element_index.html new file mode 100644 index 00000000..86835d60 --- /dev/null +++ b/automod/cpymad.libmadx.get_global_element_index.html @@ -0,0 +1,201 @@ + + + + + + + get_global_element_index — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

get_global_element_index

+
+
+get_global_element_index(element_name)
+

Return index of element with specified name in the global element list.

+
+
Parameters:
+

element_name (str) – element index

+
+
Return type:
+

int

+
+
Returns:
+

the index of the specified element, -1 if not found

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.libmadx.get_global_element_name.html b/automod/cpymad.libmadx.get_global_element_name.html new file mode 100644 index 00000000..c023ed28 --- /dev/null +++ b/automod/cpymad.libmadx.get_global_element_name.html @@ -0,0 +1,204 @@ + + + + + + + get_global_element_name — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

get_global_element_name

+
+
+get_global_element_name(element_index)
+

Return name of element.

+
+
Parameters:
+

element_index (int) – element index

+
+
Return type:
+

str

+
+
Returns:
+

element name

+
+
Raises:
+

IndexError – if the index is out of range

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.libmadx.get_globals.html b/automod/cpymad.libmadx.get_globals.html new file mode 100644 index 00000000..ec023d78 --- /dev/null +++ b/automod/cpymad.libmadx.get_globals.html @@ -0,0 +1,195 @@ + + + + + + + get_globals — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

get_globals

+
+
+get_globals()
+

Get a list of names of all global variables.

+
+
Return type:
+

list

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.libmadx.get_options.html b/automod/cpymad.libmadx.get_options.html new file mode 100644 index 00000000..08bfe284 --- /dev/null +++ b/automod/cpymad.libmadx.get_options.html @@ -0,0 +1,195 @@ + + + + + + + get_options — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

get_options

+
+
+get_options()
+

Get the current option values.

+
+
Return type:
+

dict

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.libmadx.get_sequence_beam.html b/automod/cpymad.libmadx.get_sequence_beam.html new file mode 100644 index 00000000..fdb3e911 --- /dev/null +++ b/automod/cpymad.libmadx.get_sequence_beam.html @@ -0,0 +1,207 @@ + + + + + + + get_sequence_beam — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

get_sequence_beam

+
+
+get_sequence_beam(sequence_name)
+

Get the beam associated to the sequence.

+
+
Parameters:
+

sequence_name (str) – sequence name

+
+
Return type:
+

dict

+
+
Returns:
+

beam properties as set with the BEAM command (and some more)

+
+
Raises:
+
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.libmadx.get_sequence_count.html b/automod/cpymad.libmadx.get_sequence_count.html new file mode 100644 index 00000000..1106c378 --- /dev/null +++ b/automod/cpymad.libmadx.get_sequence_count.html @@ -0,0 +1,198 @@ + + + + + + + get_sequence_count — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

get_sequence_count

+
+
+get_sequence_count()
+

Get the number of all sequences currently in memory.

+
+
Return type:
+

int

+
+
Returns:
+

number of sequences

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.libmadx.get_sequence_names.html b/automod/cpymad.libmadx.get_sequence_names.html new file mode 100644 index 00000000..6016e342 --- /dev/null +++ b/automod/cpymad.libmadx.get_sequence_names.html @@ -0,0 +1,198 @@ + + + + + + + get_sequence_names — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

get_sequence_names

+
+
+get_sequence_names()
+

Get a list of all sequences currently in memory.

+
+
Return type:
+

list

+
+
Returns:
+

sequence names

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.libmadx.get_sequence_twiss_table_name.html b/automod/cpymad.libmadx.get_sequence_twiss_table_name.html new file mode 100644 index 00000000..e40f69a2 --- /dev/null +++ b/automod/cpymad.libmadx.get_sequence_twiss_table_name.html @@ -0,0 +1,207 @@ + + + + + + + get_sequence_twiss_table_name — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

get_sequence_twiss_table_name

+
+
+get_sequence_twiss_table_name(sequence_name)
+

Get the last calculated twiss table for the given sequence.

+
+
Parameters:
+

sequence_name (str) – sequence name

+
+
Return type:
+

bool

+
+
Returns:
+

twiss table name

+
+
Raises:
+
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.libmadx.get_table_column.html b/automod/cpymad.libmadx.get_table_column.html new file mode 100644 index 00000000..010acaa7 --- /dev/null +++ b/automod/cpymad.libmadx.get_table_column.html @@ -0,0 +1,214 @@ + + + + + + + get_table_column — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

get_table_column

+
+
+get_table_column(table_name, column_name, rows='all')
+

Get data from the specified table.

+
+
Parameters:
+
    +
  • table_name (str) – table name

  • +
  • column_name (str) – column name

  • +
+
+
Return type:
+

ndarray

+
+
Returns:
+

the data in the requested column

+
+
Raises:
+
    +
  • ValueError – if the column cannot be found in the table

  • +
  • RuntimeError – if the column has unknown type

  • +
+
+
+

CAUTION: Numeric data is wrapped in numpy arrays but not copied. Make +sure to copy all data before invoking any further MAD-X commands! This +is done automatically for you if using libmadx in a remote service +(pickle serialization effectively copies the data).

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.libmadx.get_table_column_count.html b/automod/cpymad.libmadx.get_table_column_count.html new file mode 100644 index 00000000..a5078be4 --- /dev/null +++ b/automod/cpymad.libmadx.get_table_column_count.html @@ -0,0 +1,207 @@ + + + + + + + get_table_column_count — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

get_table_column_count

+
+
+get_table_column_count(table_name, selected=False)
+

Get a number of columns in the table.

+
+
Parameters:
+
    +
  • table_name (str) – table name

  • +
  • selected (bool) – consider only selected columns

  • +
+
+
Return type:
+

int

+
+
Returns:
+

number of columns

+
+
Raises:
+

ValueError – if the table name is invalid

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.libmadx.get_table_column_names.html b/automod/cpymad.libmadx.get_table_column_names.html new file mode 100644 index 00000000..baa39a59 --- /dev/null +++ b/automod/cpymad.libmadx.get_table_column_names.html @@ -0,0 +1,207 @@ + + + + + + + get_table_column_names — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

get_table_column_names

+
+
+get_table_column_names(table_name, selected=False)
+

Get a list of all column names in the table.

+
+
Parameters:
+
    +
  • table_name (str) – table name

  • +
  • selected (bool) – consider only selected columns

  • +
+
+
Return type:
+

list

+
+
Returns:
+

column names

+
+
Raises:
+

ValueError – if the table name is invalid

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.libmadx.get_table_count.html b/automod/cpymad.libmadx.get_table_count.html new file mode 100644 index 00000000..fe1d6c15 --- /dev/null +++ b/automod/cpymad.libmadx.get_table_count.html @@ -0,0 +1,198 @@ + + + + + + + get_table_count — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

get_table_count

+
+
+get_table_count()
+

Return number of existing tables.

+
+
Return type:
+

int

+
+
Returns:
+

number of tables in memory

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.libmadx.get_table_names.html b/automod/cpymad.libmadx.get_table_names.html new file mode 100644 index 00000000..ecf7fbe6 --- /dev/null +++ b/automod/cpymad.libmadx.get_table_names.html @@ -0,0 +1,198 @@ + + + + + + + get_table_names — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

get_table_names

+
+
+get_table_names()
+

Return list of all table names.

+
+
Return type:
+

list

+
+
Returns:
+

table names

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.libmadx.get_table_row.html b/automod/cpymad.libmadx.get_table_row.html new file mode 100644 index 00000000..ffce4f44 --- /dev/null +++ b/automod/cpymad.libmadx.get_table_row.html @@ -0,0 +1,195 @@ + + + + + + + get_table_row — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

get_table_row

+
+
+get_table_row(table_name, row_index, columns='all')
+

Return row as tuple of values.

+
+
Return type:
+

dict

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.libmadx.get_table_row_count.html b/automod/cpymad.libmadx.get_table_row_count.html new file mode 100644 index 00000000..ffe8cda7 --- /dev/null +++ b/automod/cpymad.libmadx.get_table_row_count.html @@ -0,0 +1,195 @@ + + + + + + + get_table_row_count — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

get_table_row_count

+
+
+get_table_row_count(table_name)
+

Return total number of rows in the table.

+
+
Return type:
+

int

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.libmadx.get_table_row_names.html b/automod/cpymad.libmadx.get_table_row_names.html new file mode 100644 index 00000000..64214f13 --- /dev/null +++ b/automod/cpymad.libmadx.get_table_row_names.html @@ -0,0 +1,195 @@ + + + + + + + get_table_row_names — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

get_table_row_names

+
+
+get_table_row_names(table_name, indices='all')
+

Return row names for every index (row number) in the list.

+
+
Return type:
+

list

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.libmadx.get_table_selected_rows.html b/automod/cpymad.libmadx.get_table_selected_rows.html new file mode 100644 index 00000000..2ef17cbb --- /dev/null +++ b/automod/cpymad.libmadx.get_table_selected_rows.html @@ -0,0 +1,195 @@ + + + + + + + get_table_selected_rows — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

get_table_selected_rows

+
+
+get_table_selected_rows(table_name)
+

Return list of selected row indices in table (may be empty).

+
+
Return type:
+

list

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.libmadx.get_table_selected_rows_mask.html b/automod/cpymad.libmadx.get_table_selected_rows_mask.html new file mode 100644 index 00000000..6c467a19 --- /dev/null +++ b/automod/cpymad.libmadx.get_table_selected_rows_mask.html @@ -0,0 +1,195 @@ + + + + + + + get_table_selected_rows_mask — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

get_table_selected_rows_mask

+
+
+get_table_selected_rows_mask(table_name)
+

Return boolean mask of which rows are selected in a table.

+
+
Return type:
+

ndarray

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.libmadx.get_table_summary.html b/automod/cpymad.libmadx.get_table_summary.html new file mode 100644 index 00000000..ecaef284 --- /dev/null +++ b/automod/cpymad.libmadx.get_table_summary.html @@ -0,0 +1,201 @@ + + + + + + + get_table_summary — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

get_table_summary

+
+
+get_table_summary(table_name)
+

Get table summary.

+
+
Parameters:
+

table_name (str) – table name

+
+
Return type:
+

dict

+
+
Returns:
+

mapping of {column: value}

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.libmadx.get_var.html b/automod/cpymad.libmadx.get_var.html new file mode 100644 index 00000000..51f5a278 --- /dev/null +++ b/automod/cpymad.libmadx.get_var.html @@ -0,0 +1,195 @@ + + + + + + + get_var — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

get_var

+
+
+get_var(name)
+

Get the value of a global variable.

+
+
Return type:
+

Parameter

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.libmadx.get_var_type.html b/automod/cpymad.libmadx.get_var_type.html new file mode 100644 index 00000000..9f17b527 --- /dev/null +++ b/automod/cpymad.libmadx.get_var_type.html @@ -0,0 +1,197 @@ + + + + + + + get_var_type — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

get_var_type

+
+
+get_var_type(name)
+

Get the type of the variable: +:rtype: int

+
+

0 constant +1 direct +2 deferred +3 string

+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.libmadx.get_version_date.html b/automod/cpymad.libmadx.get_version_date.html new file mode 100644 index 00000000..663f4b32 --- /dev/null +++ b/automod/cpymad.libmadx.get_version_date.html @@ -0,0 +1,198 @@ + + + + + + + get_version_date — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

get_version_date

+
+
+get_version_date()
+

Get the release date of loaded MAD-X interpreter.

+
+
Return type:
+

str

+
+
Returns:
+

release date in YYYY.MM.DD format

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.libmadx.get_version_number.html b/automod/cpymad.libmadx.get_version_number.html new file mode 100644 index 00000000..f9b0ac8f --- /dev/null +++ b/automod/cpymad.libmadx.get_version_number.html @@ -0,0 +1,198 @@ + + + + + + + get_version_number — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

get_version_number

+
+
+get_version_number()
+

Get the version number of loaded MAD-X interpreter.

+
+
Return type:
+

str

+
+
Returns:
+

full version number

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.libmadx.getcwd.html b/automod/cpymad.libmadx.getcwd.html new file mode 100644 index 00000000..223cf846 --- /dev/null +++ b/automod/cpymad.libmadx.getcwd.html @@ -0,0 +1,195 @@ + + + + + + + getcwd — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

getcwd

+
+
+getcwd()
+

Return the current working directory.

+
+
Return type:
+

str

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.libmadx.input.html b/automod/cpymad.libmadx.input.html new file mode 100644 index 00000000..9a39565c --- /dev/null +++ b/automod/cpymad.libmadx.input.html @@ -0,0 +1,201 @@ + + + + + + + input — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

input

+
+
+input(cmd)
+

Pass one input command to MAD-X.

+
+
Parameters:
+

cmd (str) – command to be executed by the MAD-X interpreter

+
+
Return type:
+

bool

+
+
Returns:
+

success status, whether the command has completed without error

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.libmadx.is_sequence_expanded.html b/automod/cpymad.libmadx.is_sequence_expanded.html new file mode 100644 index 00000000..73f3534f --- /dev/null +++ b/automod/cpymad.libmadx.is_sequence_expanded.html @@ -0,0 +1,204 @@ + + + + + + + is_sequence_expanded — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

is_sequence_expanded

+
+
+is_sequence_expanded(sequence_name)
+

Check whether a sequence has already been expanded.

+
+
Parameters:
+

sequence_name (str) – sequence name

+
+
Return type:
+

bool

+
+
Returns:
+

expanded state of the sequence

+
+
Raises:
+

ValueError – if the sequence is invalid

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.libmadx.is_started.html b/automod/cpymad.libmadx.is_started.html new file mode 100644 index 00000000..20ee19be --- /dev/null +++ b/automod/cpymad.libmadx.is_started.html @@ -0,0 +1,198 @@ + + + + + + + is_started — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

is_started

+
+
+is_started()
+

Check whether MAD-X has been initialized.

+
+
Return type:
+

bool

+
+
Returns:
+

whether start() was called without matching finish()

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.libmadx.num_globals.html b/automod/cpymad.libmadx.num_globals.html new file mode 100644 index 00000000..e5ae13c9 --- /dev/null +++ b/automod/cpymad.libmadx.num_globals.html @@ -0,0 +1,195 @@ + + + + + + + num_globals — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

num_globals

+
+
+num_globals()
+

Return the number of global variables.

+
+
Return type:
+

int

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.libmadx.sequence_exists.html b/automod/cpymad.libmadx.sequence_exists.html new file mode 100644 index 00000000..7cbc87b4 --- /dev/null +++ b/automod/cpymad.libmadx.sequence_exists.html @@ -0,0 +1,201 @@ + + + + + + + sequence_exists — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

sequence_exists

+
+
+sequence_exists(sequence_name)
+

Check if the sequence exists.

+
+
Parameters:
+

sequence_name (str) – sequence name

+
+
Return type:
+

bool

+
+
Returns:
+

True if the sequence exists

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.libmadx.start.html b/automod/cpymad.libmadx.start.html new file mode 100644 index 00000000..e66b901e --- /dev/null +++ b/automod/cpymad.libmadx.start.html @@ -0,0 +1,195 @@ + + + + + + + start — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

start

+
+
+start()
+

Initialize MAD-X.

+
+
Return type:
+

None

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.libmadx.table_exists.html b/automod/cpymad.libmadx.table_exists.html new file mode 100644 index 00000000..bf9f3646 --- /dev/null +++ b/automod/cpymad.libmadx.table_exists.html @@ -0,0 +1,201 @@ + + + + + + + table_exists — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

table_exists

+
+
+table_exists(table_name)
+

Check if the table exists.

+
+
Parameters:
+

table_name (str) – table name

+
+
Return type:
+

bool

+
+
Returns:
+

True if the table exists

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.madx.ArrayAttribute.html b/automod/cpymad.madx.ArrayAttribute.html new file mode 100644 index 00000000..cf570754 --- /dev/null +++ b/automod/cpymad.madx.ArrayAttribute.html @@ -0,0 +1,180 @@ + + + + + + + ArrayAttribute — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

ArrayAttribute

+
+
+class ArrayAttribute(element, values, name)[source]
+

Bases: Sequence

+

Methods Summary

+ + + + + + + + + +

count(value)

index(value, [start, [stop]])

Raises ValueError if the value is not present.

+

Methods Documentation

+
+
+count(value) integer -- return number of occurrences of value
+
+ +
+
+index(value[, start[, stop]]) integer -- return first index of value.
+

Raises ValueError if the value is not present.

+

Supporting start and stop arguments is optional, but +recommended.

+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.madx.AttrDict.html b/automod/cpymad.madx.AttrDict.html new file mode 100644 index 00000000..e9a5e8a4 --- /dev/null +++ b/automod/cpymad.madx.AttrDict.html @@ -0,0 +1,201 @@ + + + + + + + AttrDict — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

AttrDict

+
+
+class AttrDict(data)[source]
+

Bases: _Mapping

+

Methods Summary

+ + + + + + + + + + + + + + + + + + +

get(k[,d])

items()

keys()

update(*args, **kwargs)

values()

+

Methods Documentation

+
+
+get(k[, d]) D[k] if k in D, else d.  d defaults to None.
+
+ +
+
+items() a set-like object providing a view on D's items
+
+ +
+
+keys() a set-like object providing a view on D's keys
+
+ +
+
+update(*args, **kwargs)[source]
+
+ +
+
+values() an object providing a view on D's values
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.madx.BaseTypeMap.html b/automod/cpymad.madx.BaseTypeMap.html new file mode 100644 index 00000000..7d4675d5 --- /dev/null +++ b/automod/cpymad.madx.BaseTypeMap.html @@ -0,0 +1,193 @@ + + + + + + + BaseTypeMap — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

BaseTypeMap

+
+
+class BaseTypeMap(madx)[source]
+

Bases: CommandMap

+

Methods Summary

+ + + + + + + + + + + + + + + +

get(k[,d])

items()

keys()

values()

+

Methods Documentation

+
+
+get(k[, d]) D[k] if k in D, else d.  d defaults to None.
+
+ +
+
+items() a set-like object providing a view on D's items
+
+ +
+
+keys() a set-like object providing a view on D's keys
+
+ +
+
+values() an object providing a view on D's values
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.madx.Command.html b/automod/cpymad.madx.Command.html new file mode 100644 index 00000000..b234f57a --- /dev/null +++ b/automod/cpymad.madx.Command.html @@ -0,0 +1,293 @@ + + + + + + + Command — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

Command

+
+
+class Command(madx, data)[source]
+

Bases: _MutableMapping

+

Raw python interface to issue and view MAD-X commands. Usage example:

+
>>> madx.command.twiss(sequence='LEBT')
+>>> madx.command.title('A meaningful phrase')
+>>> madx.command.twiss.betx
+0.0
+
+
+

Attributes Summary

+ + + + + + + + + +

cmdpar

defs

+

Methods Summary

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

__call__(**kwargs)

Perform a single MAD-X command.

clear()

clone(**kwargs)

Clone this command, assign the given name. This corresponds to the colon syntax in MAD-X, e.g.::.

get(k[,d])

items()

keys()

pop(k[,d])

If key is not found, d is returned if given, otherwise KeyError is raised.

popitem()

as a 2-tuple; but raise KeyError if D is empty.

setdefault(k[,d])

update([E, ]**F)

If E present and has a .keys() method, does: for k in E: D[k] = E[k] If E present and lacks .keys() method, does: for (k, v) in E: D[k] = v In either case, this is followed by: for k, v in F.items(): D[k] = v

values()

+

Attributes Documentation

+
+
+cmdpar
+
+ +
+
+defs
+
+ +

Methods Documentation

+
+
+__call__(**kwargs)[source]
+

Perform a single MAD-X command.

+
+ +
+
+clear() None.  Remove all items from D.
+
+ +
+
+clone(**kwargs)[source]
+

Clone this command, assign the given name. This corresponds to the +colon syntax in MAD-X, e.g.:

+
madx.command.quadrupole.clone('qp', at=2, l=1)
+
+
+

translates to the MAD-X command:

+
qp: quadrupole, at=2, l=1;
+
+
+
+ +
+
+get(k[, d]) D[k] if k in D, else d.  d defaults to None.
+
+ +
+
+items() a set-like object providing a view on D's items
+
+ +
+
+keys() a set-like object providing a view on D's keys
+
+ +
+
+pop(k[, d]) v, remove specified key and return the corresponding value.
+

If key is not found, d is returned if given, otherwise KeyError is raised.

+
+ +
+
+popitem() (k, v), remove and return some (key, value) pair
+

as a 2-tuple; but raise KeyError if D is empty.

+
+ +
+
+setdefault(k[, d]) D.get(k,d), also set D[k]=d if k not in D
+
+ +
+
+update([E, ]**F) None.  Update D from mapping/iterable E and F.
+

If E present and has a .keys() method, does: for k in E: D[k] = E[k] +If E present and lacks .keys() method, does: for (k, v) in E: D[k] = v +In either case, this is followed by: for k, v in F.items(): D[k] = v

+
+ +
+
+values() an object providing a view on D's values
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.madx.CommandLog.html b/automod/cpymad.madx.CommandLog.html new file mode 100644 index 00000000..8911abfb --- /dev/null +++ b/automod/cpymad.madx.CommandLog.html @@ -0,0 +1,188 @@ + + + + + + + CommandLog — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

CommandLog

+
+
+class CommandLog(file, prefix='', suffix='\n', own=False)[source]
+

Bases: object

+

Log MAD-X command history to a text file.

+

Methods Summary

+ + + + + + + + + + + + +

__call__(command)

Log a single history line and flush to file immediately.

close()

create(filename[, prefix, suffix])

Create CommandLog from filename (overwrite/create).

+

Methods Documentation

+
+
+__call__(command)[source]
+

Log a single history line and flush to file immediately.

+
+ +
+
+close()[source]
+
+ +
+
+classmethod create(filename, prefix='', suffix='\n')[source]
+

Create CommandLog from filename (overwrite/create).

+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.madx.CommandMap.html b/automod/cpymad.madx.CommandMap.html new file mode 100644 index 00000000..37ce4ce5 --- /dev/null +++ b/automod/cpymad.madx.CommandMap.html @@ -0,0 +1,193 @@ + + + + + + + CommandMap — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

CommandMap

+
+
+class CommandMap(madx)[source]
+

Bases: _Mapping

+

Methods Summary

+ + + + + + + + + + + + + + + +

get(k[,d])

items()

keys()

values()

+

Methods Documentation

+
+
+get(k[, d]) D[k] if k in D, else d.  d defaults to None.
+
+ +
+
+items() a set-like object providing a view on D's items
+
+ +
+
+keys() a set-like object providing a view on D's keys
+
+ +
+
+values() an object providing a view on D's values
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.madx.Element.html b/automod/cpymad.madx.Element.html new file mode 100644 index 00000000..3b4e42cb --- /dev/null +++ b/automod/cpymad.madx.Element.html @@ -0,0 +1,302 @@ + + + + + + + Element — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

Element

+
+
+class Element(madx, data)[source]
+

Bases: Command

+

Attributes Summary

+ + + + + + + + + + + + + + + +

base_type

cmdpar

defs

parent

+

Methods Summary

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

__call__(**kwargs)

Perform a single MAD-X command.

clear()

clone(**kwargs)

Clone this command, assign the given name. This corresponds to the colon syntax in MAD-X, e.g.::.

get(k[,d])

items()

keys()

pop(k[,d])

If key is not found, d is returned if given, otherwise KeyError is raised.

popitem()

as a 2-tuple; but raise KeyError if D is empty.

setdefault(k[,d])

update([E, ]**F)

If E present and has a .keys() method, does: for k in E: D[k] = E[k] If E present and lacks .keys() method, does: for (k, v) in E: D[k] = v In either case, this is followed by: for k, v in F.items(): D[k] = v

values()

+

Attributes Documentation

+
+
+base_type
+
+ +
+
+cmdpar
+
+ +
+
+defs
+
+ +
+
+parent
+
+ +

Methods Documentation

+
+
+__call__(**kwargs)
+

Perform a single MAD-X command.

+
+ +
+
+clear() None.  Remove all items from D.
+
+ +
+
+clone(**kwargs)
+

Clone this command, assign the given name. This corresponds to the +colon syntax in MAD-X, e.g.:

+
madx.command.quadrupole.clone('qp', at=2, l=1)
+
+
+

translates to the MAD-X command:

+
qp: quadrupole, at=2, l=1;
+
+
+
+ +
+
+get(k[, d]) D[k] if k in D, else d.  d defaults to None.
+
+ +
+
+items() a set-like object providing a view on D's items
+
+ +
+
+keys() a set-like object providing a view on D's keys
+
+ +
+
+pop(k[, d]) v, remove specified key and return the corresponding value.
+

If key is not found, d is returned if given, otherwise KeyError is raised.

+
+ +
+
+popitem() (k, v), remove and return some (key, value) pair
+

as a 2-tuple; but raise KeyError if D is empty.

+
+ +
+
+setdefault(k[, d]) D.get(k,d), also set D[k]=d if k not in D
+
+ +
+
+update([E, ]**F) None.  Update D from mapping/iterable E and F.
+

If E present and has a .keys() method, does: for k in E: D[k] = E[k] +If E present and lacks .keys() method, does: for (k, v) in E: D[k] = v +In either case, this is followed by: for k, v in F.items(): D[k] = v

+
+ +
+
+values() an object providing a view on D's values
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.madx.ElementList.html b/automod/cpymad.madx.ElementList.html new file mode 100644 index 00000000..404ddcca --- /dev/null +++ b/automod/cpymad.madx.ElementList.html @@ -0,0 +1,192 @@ + + + + + + + ElementList — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

ElementList

+
+
+class ElementList(madx, sequence_name)[source]
+

Bases: BaseElementList, Sequence

+

Methods Summary

+ + + + + + + + + + + + +

at(pos)

Find the element at specified S position.

count(value)

index(name)

Find index of element with specified name.

+

Methods Documentation

+
+
+at(pos)[source]
+

Find the element at specified S position.

+
+ +
+
+count(value) integer -- return number of occurrences of value
+
+ +
+
+index(name)
+

Find index of element with specified name.

+
+
Raises:
+

ValueError – if the element is not found

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.madx.ExpandedElementList.html b/automod/cpymad.madx.ExpandedElementList.html new file mode 100644 index 00000000..843fb259 --- /dev/null +++ b/automod/cpymad.madx.ExpandedElementList.html @@ -0,0 +1,192 @@ + + + + + + + ExpandedElementList — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

ExpandedElementList

+
+
+class ExpandedElementList(madx, sequence_name)[source]
+

Bases: ElementList

+

Methods Summary

+ + + + + + + + + + + + +

at(pos)

Find the element at specified S position.

count(value)

index(name)

Find index of element with specified name.

+

Methods Documentation

+
+
+at(pos)
+

Find the element at specified S position.

+
+ +
+
+count(value) integer -- return number of occurrences of value
+
+ +
+
+index(name)
+

Find index of element with specified name.

+
+
Raises:
+

ValueError – if the element is not found

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.madx.GlobalElementList.html b/automod/cpymad.madx.GlobalElementList.html new file mode 100644 index 00000000..bef3055e --- /dev/null +++ b/automod/cpymad.madx.GlobalElementList.html @@ -0,0 +1,208 @@ + + + + + + + GlobalElementList — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

GlobalElementList

+
+
+class GlobalElementList(madx)[source]
+

Bases: BaseElementList, _Mapping

+

Mapping of the global elements in MAD-X.

+

Methods Summary

+ + + + + + + + + + + + + + + + + + +

get(k[,d])

index(name)

Find index of element with specified name.

items()

keys()

values()

+

Methods Documentation

+
+
+get(k[, d]) D[k] if k in D, else d.  d defaults to None.
+
+ +
+
+index(name)
+

Find index of element with specified name.

+
+
Raises:
+

ValueError – if the element is not found

+
+
+
+ +
+
+items() a set-like object providing a view on D's items
+
+ +
+
+keys() a set-like object providing a view on D's keys
+
+ +
+
+values() an object providing a view on D's values
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.madx.Madx.html b/automod/cpymad.madx.Madx.html new file mode 100644 index 00000000..7b4c4089 --- /dev/null +++ b/automod/cpymad.madx.Madx.html @@ -0,0 +1,506 @@ + + + + + + + Madx — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

Madx

+
+
+class Madx(libmadx=None, command_log=None, stdout=None, history=None, prompt=None, **Popen_args)[source]
+

Bases: object

+

Python interface for a MAD-X process.

+

For usage instructions, please refer to:

+
+
+

Communicates with a MAD-X interpreter in a background process.

+

The state of the MAD-X interpreter is controlled by feeding textual MAD-X +commands to the interpreter.

+

The state of the MAD-X interpreter is accessed by directly reading the +values from the C variables in-memory and sending the results pickled back +over the pipe.

+

Data attributes:

+
+
Variables:
+
    +
  • command – Mapping of all MAD-X commands.

  • +
  • globals – Mapping of global MAD-X variables.

  • +
  • elements – Mapping of globally visible elements.

  • +
  • base_types – Mapping of MAD-X base elements.

  • +
  • sequence – Mapping of all sequences in memory.

  • +
  • table – Mapping of all tables in memory.

  • +
+
+
+

Attributes Summary

+ + + + + + + + + + + + +

beam

Get the current default beam.

options

Values of current options.

version

Get the MAD-X version.

+

Methods Summary

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

__call__(text)

Run any textual MAD-X input.

batch()

Collect input and send in a single batch when leaving context.

call(file[, chdir])

CALL a file in the MAD-X interpreter.

chdir(dir)

Change the directory of the MAD-X process (not the current python process).

eval(expr)

Evaluates an expression and returns the result as double.

exit()

Shutdown MAD-X interpreter and stop process.

expr_vars(expr)

Find all variable names used in an expression.

input(text)

Run any textual MAD-X input.

match([constraints, vary, weight, method, ...])

Perform a simple MATCH operation.

quit()

Shutdown MAD-X interpreter and stop process.

sectormap(elems, **kwargs)

Compute the 7D transfer maps (the 7'th column accounting for KICKs) for the given elements and return as Nx7x7 array.

sectortable([name])

Read sectormap + kicks from memory and return as Nx7x7 array.

sectortable2([name])

Read 2nd order sectormap T_ijk, return as Nx6x6x6 array.

survey(**kwargs)

Run SURVEY.

twiss(**kwargs)

Run TWISS.

use([sequence, range])

Run USE to expand a sequence.

verbose([switch])

Turn verbose output on/off.

+

Attributes Documentation

+
+
+beam
+

Get the current default beam.

+
+ +
+
+options
+

Values of current options.

+
+ +
+
+version
+

Get the MAD-X version.

+
+ +

Methods Documentation

+
+
+__call__(text)
+

Run any textual MAD-X input.

+
+
Parameters:
+

text (str) – command text

+
+
Return type:
+

bool

+
+
Returns:
+

whether the command has completed without error

+
+
+
+ +
+
+batch()[source]
+

Collect input and send in a single batch when leaving context. This is +useful to improve performance when issueing many related commands in +quick succession.

+

Example:

+
>>> with madx.batch():
+...     madx.globals.update(optic)
+
+
+
+ +
+
+call(file, chdir=False)[source]
+

CALL a file in the MAD-X interpreter.

+
+
Parameters:
+
    +
  • file (str) – file name with path

  • +
  • chdir (bool) – temporarily change directory in MAD-X process

  • +
+
+
+
+ +
+
+chdir(dir)[source]
+

Change the directory of the MAD-X process (not the current python process).

+
+
Parameters:
+

dir (str) – new path name

+
+
Return type:
+

ChangeDirectory

+
+
Returns:
+

a context manager that can change the directory back

+
+
+

It can be used as context manager for temporary directory changes:

+
with madx.chdir('/x/y/z'):
+    madx.call('file.x')
+    madx.call('file.y')
+
+
+
+ +
+
+eval(expr)[source]
+

Evaluates an expression and returns the result as double.

+
+
Parameters:
+

expr (str) – expression to evaluate.

+
+
Return type:
+

float

+
+
Returns:
+

numeric value of the expression

+
+
+
+ +
+
+exit()
+

Shutdown MAD-X interpreter and stop process.

+
+ +
+
+expr_vars(expr)[source]
+

Find all variable names used in an expression. This does not +include element attribute nor function names.

+
+
Return type:
+

list

+
+
+
+ +
+
+input(text)[source]
+

Run any textual MAD-X input.

+
+
Parameters:
+

text (str) – command text

+
+
Return type:
+

bool

+
+
Returns:
+

whether the command has completed without error

+
+
+
+ +
+
+match(constraints=[], vary=[], weight=None, method=('lmdif', {}), knobfile=None, limits=None, **kwargs)[source]
+

Perform a simple MATCH operation.

+

For more advanced cases, you should issue the commands manually.

+
+
Parameters:
+
    +
  • constraints (list) – constraints to pose during matching

  • +
  • vary (list) – knob names to be varied

  • +
  • weight (dict) – weights for matching parameters

  • +
  • knobfile (str) – file to write the knob values to

  • +
  • kwargs (dict) – keyword arguments for the MAD-X command

  • +
+
+
Return type:
+

dict

+
+
Returns:
+

final knob values

+
+
+

Example:

+
>>> from cpymad.madx import Madx
+>>> from cpymad.types import Constraint
+>>> m = Madx()
+>>> m.call('sequence.madx')
+>>> twiss_init = {'betx': 1, 'bety': 2, 'alfx': 3, 'alfy': 4}
+>>> m.match(
+...     sequence='mysequence',
+...     constraints=[
+...         dict(range='marker1',
+...              betx=Constraint(min=1, max=3),
+...              bety=2)
+...     ],
+...     vary=['qp1->k1',
+...           'qp2->k1'],
+...     **twiss_init,
+... )
+>>> tw = m.twiss('mysequence', **twiss_init)
+
+
+
+ +
+
+quit()[source]
+

Shutdown MAD-X interpreter and stop process.

+
+ +
+
+sectormap(elems, **kwargs)[source]
+

Compute the 7D transfer maps (the 7’th column accounting for KICKs) +for the given elements and return as Nx7x7 array.

+
+ +
+
+sectortable(name='sectortable')[source]
+

Read sectormap + kicks from memory and return as Nx7x7 array.

+
+ +
+
+sectortable2(name='sectortable')[source]
+

Read 2nd order sectormap T_ijk, return as Nx6x6x6 array.

+
+ +
+
+survey(**kwargs)[source]
+

Run SURVEY.

+
+
Parameters:
+
    +
  • sequence (str) – name of sequence

  • +
  • kwargs – keyword arguments for the MAD-X command

  • +
+
+
+
+ +
+
+twiss(**kwargs)[source]
+

Run TWISS.

+
+
Parameters:
+
    +
  • sequence (str) – name of sequence

  • +
  • kwargs – keyword arguments for the MAD-X command

  • +
+
+
+

Note that the kwargs overwrite any arguments in twiss_init.

+
+ +
+
+use(sequence=None, range=None, **kwargs)[source]
+

Run USE to expand a sequence.

+
+
Parameters:
+

sequence (str) – sequence name

+
+
Returns:
+

name of active sequence

+
+
+
+ +
+
+verbose(switch=True)[source]
+

Turn verbose output on/off.

+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.madx.Metadata.html b/automod/cpymad.madx.Metadata.html new file mode 100644 index 00000000..846fc9f2 --- /dev/null +++ b/automod/cpymad.madx.Metadata.html @@ -0,0 +1,170 @@ + + + + + + + Metadata — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

Metadata

+
+
+class Metadata[source]
+

Bases: object

+

MAD-X metadata (license info, etc).

+

Methods Summary

+ + + + + + +

get_copyright_notice()

+

Methods Documentation

+
+ +
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.madx.Sequence.html b/automod/cpymad.madx.Sequence.html new file mode 100644 index 00000000..5f9b8d08 --- /dev/null +++ b/automod/cpymad.madx.Sequence.html @@ -0,0 +1,299 @@ + + + + + + + Sequence — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

Sequence

+
+
+class Sequence(name, madx, _check=True)[source]
+

Bases: object

+

MAD-X sequence representation.

+

Attributes Summary

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

beam

Get the beam dictionary associated to the sequence.

elements

Get list of elements.

expanded_elements

List of elements including implicit drifts.

has_beam

Check if the sequence has an associated beam.

is_expanded

Check if sequence is already expanded.

length

Return sequence length in the declaration

name

Get the name of the sequence.

twiss_table

Get the TWISS results from the last calculation.

twiss_table_name

Get the name of the table with the TWISS results.

+

Methods Summary

+ + + + + + + + + + + + + + + + + + + + + +

element_names()

element_positions()

expand()

Expand sequence (needed for expanded_elements).

expanded_element_names()

expanded_element_positions()

use()

Set this sequence as active.

+

Attributes Documentation

+
+
+beam
+

Get the beam dictionary associated to the sequence.

+
+ +
+
+elements
+

Get list of elements.

+
+ +
+
+expanded_elements
+

List of elements including implicit drifts.

+
+ +
+
+has_beam
+

Check if the sequence has an associated beam.

+
+ +
+
+is_expanded
+

Check if sequence is already expanded.

+
+ +
+
+length
+

Return sequence length in the declaration

+
+ +
+
+name
+

Get the name of the sequence.

+
+ +
+
+twiss_table
+

Get the TWISS results from the last calculation.

+
+ +
+
+twiss_table_name
+

Get the name of the table with the TWISS results.

+
+ +

Methods Documentation

+
+
+element_names()[source]
+
+ +
+
+element_positions()[source]
+
+ +
+
+expand()[source]
+

Expand sequence (needed for expanded_elements).

+
+ +
+
+expanded_element_names()[source]
+
+ +
+
+expanded_element_positions()[source]
+
+ +
+
+use()[source]
+

Set this sequence as active.

+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.madx.SequenceMap.html b/automod/cpymad.madx.SequenceMap.html new file mode 100644 index 00000000..ef61714b --- /dev/null +++ b/automod/cpymad.madx.SequenceMap.html @@ -0,0 +1,203 @@ + + + + + + + SequenceMap — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

SequenceMap

+
+
+class SequenceMap(madx)[source]
+

Bases: _Mapping

+

Mapping of all sequences (Sequence) in memory.

+

Methods Summary

+ + + + + + + + + + + + + + + + + + +

__call__()

The active Sequence (may be None).

get(k[,d])

items()

keys()

values()

+

Methods Documentation

+
+
+__call__()[source]
+

The active Sequence (may be None).

+
+ +
+
+get(k[, d]) D[k] if k in D, else d.  d defaults to None.
+
+ +
+
+items() a set-like object providing a view on D's items
+
+ +
+
+keys() a set-like object providing a view on D's keys
+
+ +
+
+values() an object providing a view on D's values
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.madx.Table.html b/automod/cpymad.madx.Table.html new file mode 100644 index 00000000..f737a213 --- /dev/null +++ b/automod/cpymad.madx.Table.html @@ -0,0 +1,417 @@ + + + + + + + Table — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

Table

+
+
+class Table(name, libmadx, *, columns='all', rows='all', _check=True)[source]
+

Bases: _Mapping

+

MAD-X twiss table.

+

Loads individual columns from the MAD-X process lazily only on demand.

+

Attributes Summary

+ + + + + + + + + +

range

Get the element names (first, last) of the valid range.

summary

Get the table summary.

+

Methods Summary

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

col_names([columns])

Get list of all columns in the table.

column(column[, rows])

Retrieve all specified rows in the given column of the table.

copy([columns, rows])

Return a frozen table with the desired columns.

dframe([columns, rows, index])

Return table as pandas.DataFrame.

get(k[,d])

getmat(name, idx, *dim)

items()

keys()

kvec(idx[, dim])

Kicks.

reload(column)

Reload (recache) one column from MAD-X.

rmat(idx[, dim])

Sectormap.

row(index[, columns])

Retrieve one row from the table.

row_names([rows])

Get table row names.

selected_columns()

Get list of column names that were selected by the user (can be empty).

selected_rows()

Get list of row indices that were selected by the user (can be empty).

selection([columns, rows])

Return a Table object that only retrieves the specified rows and columns by default.

sigmat(idx[, dim])

Beam matrix.

tmat(idx[, dim])

2nd order sectormap.

values()

+

Attributes Documentation

+
+
+range
+

Get the element names (first, last) of the valid range.

+
+ +
+
+summary
+

Get the table summary.

+
+ +

Methods Documentation

+
+
+col_names(columns=None)[source]
+

Get list of all columns in the table.

+
+ +
+
+column(column, rows=None)[source]
+

Retrieve all specified rows in the given column of the table.

+
+
Parameters:
+
    +
  • column (str) – column name

  • +
  • rows – a list of row indices or 'all' or 'selected'

  • +
+
+
Return type:
+

ndarray

+
+
+
+ +
+
+copy(columns=None, rows=None)[source]
+

Return a frozen table with the desired columns.

+
+
Parameters:
+

columns (list) – column names or None for all columns.

+
+
Return type:
+

dict

+
+
Returns:
+

column data

+
+
Raises:
+

ValueError – if the table name is invalid

+
+
+
+ +
+
+dframe(columns=None, rows=None, *, index=None)[source]
+

Return table as pandas.DataFrame.

+
+
Parameters:
+
    +
  • columns – column names or ‘all’ or ‘selected’

  • +
  • rows – row indices or ‘all’ or ‘selected’

  • +
  • index (str) – column name or sequence to be used as index, or +None for using the row_names

  • +
+
+
Returns:
+

column data as pandas.DataFrame

+
+
Raises:
+

ValueError – if the table name is invalid

+
+
+

WARNING: using index=None is unsafe after calling USE. +In this case, please manually specify another column to be used, +e.g. index="name".

+
+ +
+
+get(k[, d]) D[k] if k in D, else d.  d defaults to None.
+
+ +
+
+getmat(name, idx, *dim)[source]
+
+ +
+
+items() a set-like object providing a view on D's items
+
+ +
+
+keys() a set-like object providing a view on D's keys
+
+ +
+
+kvec(idx, dim=6)[source]
+

Kicks.

+
+ +
+
+reload(column)[source]
+

Reload (recache) one column from MAD-X.

+
+ +
+
+rmat(idx, dim=6)[source]
+

Sectormap.

+
+ +
+
+row(index, columns=None)[source]
+

Retrieve one row from the table.

+
+ +
+
+row_names(rows=None)[source]
+

Get table row names.

+

WARNING: using row_names after calling USE (before recomputing +the table) is unsafe and may lead to segmentation faults or incorrect +results.

+
+ +
+
+selected_columns()[source]
+

Get list of column names that were selected by the user (can be +empty).

+
+ +
+
+selected_rows()[source]
+

Get list of row indices that were selected by the user (can be +empty).

+
+ +
+
+selection(columns='selected', rows=None)[source]
+

Return a Table object that only retrieves the specified rows and +columns by default.

+
+
Parameters:
+
    +
  • columns – list of names or ‘all’ or ‘selected’

  • +
  • rows – list of indices or ‘all’ or ‘selected’

  • +
+
+
Return type:
+

Table

+
+
+

If only columns is given, rows defaults to ‘selected’ +unless columns is set to ‘all’ in which case it also defaults +to ‘all’.

+
+ +
+
+sigmat(idx, dim=6)[source]
+

Beam matrix.

+
+ +
+
+tmat(idx, dim=6)[source]
+

2nd order sectormap.

+
+ +
+
+values() an object providing a view on D's values
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.madx.TableMap.html b/automod/cpymad.madx.TableMap.html new file mode 100644 index 00000000..29893e0b --- /dev/null +++ b/automod/cpymad.madx.TableMap.html @@ -0,0 +1,194 @@ + + + + + + + TableMap — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

TableMap

+
+
+class TableMap(libmadx)[source]
+

Bases: _Mapping

+

Mapping of all tables (Table) in memory.

+

Methods Summary

+ + + + + + + + + + + + + + + +

get(k[,d])

items()

keys()

values()

+

Methods Documentation

+
+
+get(k[, d]) D[k] if k in D, else d.  d defaults to None.
+
+ +
+
+items() a set-like object providing a view on D's items
+
+ +
+
+keys() a set-like object providing a view on D's keys
+
+ +
+
+values() an object providing a view on D's values
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.madx.TwissFailed.html b/automod/cpymad.madx.TwissFailed.html new file mode 100644 index 00000000..2f309021 --- /dev/null +++ b/automod/cpymad.madx.TwissFailed.html @@ -0,0 +1,154 @@ + + + + + + + TwissFailed — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

TwissFailed

+
+
+exception TwissFailed[source]
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.madx.VarList.html b/automod/cpymad.madx.VarList.html new file mode 100644 index 00000000..327d1dbc --- /dev/null +++ b/automod/cpymad.madx.VarList.html @@ -0,0 +1,261 @@ + + + + + + + VarList — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

VarList

+
+
+class VarList(madx)[source]
+

Bases: _MutableMapping

+

Mapping of global MAD-X variables.

+

Attributes Summary

+ + + + + + + + + +

cmdpar

defs

+

Methods Summary

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

clear()

get(k[,d])

items()

keys()

pop(k[,d])

If key is not found, d is returned if given, otherwise KeyError is raised.

popitem()

as a 2-tuple; but raise KeyError if D is empty.

setdefault(k[,d])

update([E, ]**F)

If E present and has a .keys() method, does: for k in E: D[k] = E[k] If E present and lacks .keys() method, does: for (k, v) in E: D[k] = v In either case, this is followed by: for k, v in F.items(): D[k] = v

values()

+

Attributes Documentation

+
+
+cmdpar
+
+ +
+
+defs
+
+ +

Methods Documentation

+
+
+clear() None.  Remove all items from D.
+
+ +
+
+get(k[, d]) D[k] if k in D, else d.  d defaults to None.
+
+ +
+
+items() a set-like object providing a view on D's items
+
+ +
+
+keys() a set-like object providing a view on D's keys
+
+ +
+
+pop(k[, d]) v, remove specified key and return the corresponding value.
+

If key is not found, d is returned if given, otherwise KeyError is raised.

+
+ +
+
+popitem() (k, v), remove and return some (key, value) pair
+

as a 2-tuple; but raise KeyError if D is empty.

+
+ +
+
+setdefault(k[, d]) D.get(k,d), also set D[k]=d if k not in D
+
+ +
+
+update([E, ]**F) None.  Update D from mapping/iterable E and F.
+

If E present and has a .keys() method, does: for k in E: D[k] = E[k] +If E present and lacks .keys() method, does: for (k, v) in E: D[k] = v +In either case, this is followed by: for k, v in F.items(): D[k] = v

+
+ +
+
+values() an object providing a view on D's values
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.madx.VarParamList.html b/automod/cpymad.madx.VarParamList.html new file mode 100644 index 00000000..bd30b328 --- /dev/null +++ b/automod/cpymad.madx.VarParamList.html @@ -0,0 +1,194 @@ + + + + + + + VarParamList — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

VarParamList

+
+
+class VarParamList(madx)[source]
+

Bases: _Mapping

+

Mapping of global MAD-X variables.

+

Methods Summary

+ + + + + + + + + + + + + + + +

get(k[,d])

items()

keys()

values()

+

Methods Documentation

+
+
+get(k[, d]) D[k] if k in D, else d.  d defaults to None.
+
+ +
+
+items() a set-like object providing a view on D's items
+
+ +
+
+keys() a set-like object providing a view on D's keys
+
+ +
+
+values() an object providing a view on D's values
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.madx.Version.html b/automod/cpymad.madx.Version.html new file mode 100644 index 00000000..6ce35868 --- /dev/null +++ b/automod/cpymad.madx.Version.html @@ -0,0 +1,156 @@ + + + + + + + Version — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

Version

+
+
+class Version(release, date)[source]
+

Bases: object

+

Version information struct.

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.madx.metadata.html b/automod/cpymad.madx.metadata.html new file mode 100644 index 00000000..c5ef9f16 --- /dev/null +++ b/automod/cpymad.madx.metadata.html @@ -0,0 +1,136 @@ + + + + + + + metadata — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

metadata

+
+
+metadata = <cpymad.madx.Metadata object>
+

MAD-X metadata (license info, etc).

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.types.AlignError.html b/automod/cpymad.types.AlignError.html new file mode 100644 index 00000000..1bff6b5a --- /dev/null +++ b/automod/cpymad.types.AlignError.html @@ -0,0 +1,298 @@ + + + + + + + AlignError — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

AlignError

+
+
+class AlignError(dx, dy, ds, dphi, dtheta, dpsi, mrex, mrey, mredx, mredy, arex, arey, mscalx, mscaly)
+

Bases: tuple

+

Attributes Summary

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

arex

Alias for field number 10

arey

Alias for field number 11

dphi

Alias for field number 3

dpsi

Alias for field number 5

ds

Alias for field number 2

dtheta

Alias for field number 4

dx

Alias for field number 0

dy

Alias for field number 1

mredx

Alias for field number 8

mredy

Alias for field number 9

mrex

Alias for field number 6

mrey

Alias for field number 7

mscalx

Alias for field number 12

mscaly

Alias for field number 13

+

Methods Summary

+ + + + + + + + + +

count(value, /)

Return number of occurrences of value.

index(value[, start, stop])

Return first index of value.

+

Attributes Documentation

+
+
+arex
+

Alias for field number 10

+
+ +
+
+arey
+

Alias for field number 11

+
+ +
+
+dphi
+

Alias for field number 3

+
+ +
+
+dpsi
+

Alias for field number 5

+
+ +
+
+ds
+

Alias for field number 2

+
+ +
+
+dtheta
+

Alias for field number 4

+
+ +
+
+dx
+

Alias for field number 0

+
+ +
+
+dy
+

Alias for field number 1

+
+ +
+
+mredx
+

Alias for field number 8

+
+ +
+
+mredy
+

Alias for field number 9

+
+ +
+
+mrex
+

Alias for field number 6

+
+ +
+
+mrey
+

Alias for field number 7

+
+ +
+
+mscalx
+

Alias for field number 12

+
+ +
+
+mscaly
+

Alias for field number 13

+
+ +

Methods Documentation

+
+
+count(value, /)
+

Return number of occurrences of value.

+
+ +
+
+index(value, start=0, stop=9223372036854775807, /)
+

Return first index of value.

+

Raises ValueError if the value is not present.

+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.types.Constraint.html b/automod/cpymad.types.Constraint.html new file mode 100644 index 00000000..9054ba35 --- /dev/null +++ b/automod/cpymad.types.Constraint.html @@ -0,0 +1,142 @@ + + + + + + + Constraint — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

Constraint

+
+
+class Constraint(val=None, min=None, max=None)[source]
+

Bases: object

+

Represents a MAD-X constraint, which has either min/max/both/value.

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.types.FieldError.html b/automod/cpymad.types.FieldError.html new file mode 100644 index 00000000..0d6fcd19 --- /dev/null +++ b/automod/cpymad.types.FieldError.html @@ -0,0 +1,190 @@ + + + + + + + FieldError — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

FieldError

+
+
+class FieldError(dkn, dks)
+

Bases: tuple

+

Attributes Summary

+ + + + + + + + + +

dkn

Alias for field number 0

dks

Alias for field number 1

+

Methods Summary

+ + + + + + + + + +

count(value, /)

Return number of occurrences of value.

index(value[, start, stop])

Return first index of value.

+

Attributes Documentation

+
+
+dkn
+

Alias for field number 0

+
+ +
+
+dks
+

Alias for field number 1

+
+ +

Methods Documentation

+
+
+count(value, /)
+

Return number of occurrences of value.

+
+ +
+
+index(value, start=0, stop=9223372036854775807, /)
+

Return first index of value.

+

Raises ValueError if the value is not present.

+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.types.PARAM_TYPE_CONSTRAINT.html b/automod/cpymad.types.PARAM_TYPE_CONSTRAINT.html new file mode 100644 index 00000000..f1de1975 --- /dev/null +++ b/automod/cpymad.types.PARAM_TYPE_CONSTRAINT.html @@ -0,0 +1,159 @@ + + + + + + + PARAM_TYPE_CONSTRAINT — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

PARAM_TYPE_CONSTRAINT

+
+
+PARAM_TYPE_CONSTRAINT = 4
+

int([x]) -> integer +int(x, base=10) -> integer

+

Convert a number or string to an integer, or return 0 if no arguments +are given. If x is a number, return x.__int__(). For floating point +numbers, this truncates towards zero.

+

If x is not a number or if base is given, then x must be a string, +bytes, or bytearray instance representing an integer literal in the +given base. The literal can be preceded by ‘+’ or ‘-’ and be surrounded +by whitespace. The base defaults to 10. Valid bases are 0 and 2-36. +Base 0 means to interpret the base from the string as an integer literal. +>>> int(‘0b100’, base=0) +4

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.types.PARAM_TYPE_DOUBLE.html b/automod/cpymad.types.PARAM_TYPE_DOUBLE.html new file mode 100644 index 00000000..e550115b --- /dev/null +++ b/automod/cpymad.types.PARAM_TYPE_DOUBLE.html @@ -0,0 +1,159 @@ + + + + + + + PARAM_TYPE_DOUBLE — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

PARAM_TYPE_DOUBLE

+
+
+PARAM_TYPE_DOUBLE = 2
+

int([x]) -> integer +int(x, base=10) -> integer

+

Convert a number or string to an integer, or return 0 if no arguments +are given. If x is a number, return x.__int__(). For floating point +numbers, this truncates towards zero.

+

If x is not a number or if base is given, then x must be a string, +bytes, or bytearray instance representing an integer literal in the +given base. The literal can be preceded by ‘+’ or ‘-’ and be surrounded +by whitespace. The base defaults to 10. Valid bases are 0 and 2-36. +Base 0 means to interpret the base from the string as an integer literal. +>>> int(‘0b100’, base=0) +4

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.types.PARAM_TYPE_DOUBLE_ARRAY.html b/automod/cpymad.types.PARAM_TYPE_DOUBLE_ARRAY.html new file mode 100644 index 00000000..8a1ba64a --- /dev/null +++ b/automod/cpymad.types.PARAM_TYPE_DOUBLE_ARRAY.html @@ -0,0 +1,159 @@ + + + + + + + PARAM_TYPE_DOUBLE_ARRAY — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

PARAM_TYPE_DOUBLE_ARRAY

+
+
+PARAM_TYPE_DOUBLE_ARRAY = 12
+

int([x]) -> integer +int(x, base=10) -> integer

+

Convert a number or string to an integer, or return 0 if no arguments +are given. If x is a number, return x.__int__(). For floating point +numbers, this truncates towards zero.

+

If x is not a number or if base is given, then x must be a string, +bytes, or bytearray instance representing an integer literal in the +given base. The literal can be preceded by ‘+’ or ‘-’ and be surrounded +by whitespace. The base defaults to 10. Valid bases are 0 and 2-36. +Base 0 means to interpret the base from the string as an integer literal. +>>> int(‘0b100’, base=0) +4

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.types.PARAM_TYPE_INTEGER.html b/automod/cpymad.types.PARAM_TYPE_INTEGER.html new file mode 100644 index 00000000..0162a6e2 --- /dev/null +++ b/automod/cpymad.types.PARAM_TYPE_INTEGER.html @@ -0,0 +1,159 @@ + + + + + + + PARAM_TYPE_INTEGER — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

PARAM_TYPE_INTEGER

+
+
+PARAM_TYPE_INTEGER = 1
+

int([x]) -> integer +int(x, base=10) -> integer

+

Convert a number or string to an integer, or return 0 if no arguments +are given. If x is a number, return x.__int__(). For floating point +numbers, this truncates towards zero.

+

If x is not a number or if base is given, then x must be a string, +bytes, or bytearray instance representing an integer literal in the +given base. The literal can be preceded by ‘+’ or ‘-’ and be surrounded +by whitespace. The base defaults to 10. Valid bases are 0 and 2-36. +Base 0 means to interpret the base from the string as an integer literal. +>>> int(‘0b100’, base=0) +4

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.types.PARAM_TYPE_INTEGER_ARRAY.html b/automod/cpymad.types.PARAM_TYPE_INTEGER_ARRAY.html new file mode 100644 index 00000000..cca417a6 --- /dev/null +++ b/automod/cpymad.types.PARAM_TYPE_INTEGER_ARRAY.html @@ -0,0 +1,159 @@ + + + + + + + PARAM_TYPE_INTEGER_ARRAY — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

PARAM_TYPE_INTEGER_ARRAY

+
+
+PARAM_TYPE_INTEGER_ARRAY = 11
+

int([x]) -> integer +int(x, base=10) -> integer

+

Convert a number or string to an integer, or return 0 if no arguments +are given. If x is a number, return x.__int__(). For floating point +numbers, this truncates towards zero.

+

If x is not a number or if base is given, then x must be a string, +bytes, or bytearray instance representing an integer literal in the +given base. The literal can be preceded by ‘+’ or ‘-’ and be surrounded +by whitespace. The base defaults to 10. Valid bases are 0 and 2-36. +Base 0 means to interpret the base from the string as an integer literal. +>>> int(‘0b100’, base=0) +4

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.types.PARAM_TYPE_LOGICAL.html b/automod/cpymad.types.PARAM_TYPE_LOGICAL.html new file mode 100644 index 00000000..36956a86 --- /dev/null +++ b/automod/cpymad.types.PARAM_TYPE_LOGICAL.html @@ -0,0 +1,159 @@ + + + + + + + PARAM_TYPE_LOGICAL — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

PARAM_TYPE_LOGICAL

+
+
+PARAM_TYPE_LOGICAL = 0
+

int([x]) -> integer +int(x, base=10) -> integer

+

Convert a number or string to an integer, or return 0 if no arguments +are given. If x is a number, return x.__int__(). For floating point +numbers, this truncates towards zero.

+

If x is not a number or if base is given, then x must be a string, +bytes, or bytearray instance representing an integer literal in the +given base. The literal can be preceded by ‘+’ or ‘-’ and be surrounded +by whitespace. The base defaults to 10. Valid bases are 0 and 2-36. +Base 0 means to interpret the base from the string as an integer literal. +>>> int(‘0b100’, base=0) +4

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.types.PARAM_TYPE_LOGICAL_ARRAY.html b/automod/cpymad.types.PARAM_TYPE_LOGICAL_ARRAY.html new file mode 100644 index 00000000..97d4e44a --- /dev/null +++ b/automod/cpymad.types.PARAM_TYPE_LOGICAL_ARRAY.html @@ -0,0 +1,159 @@ + + + + + + + PARAM_TYPE_LOGICAL_ARRAY — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

PARAM_TYPE_LOGICAL_ARRAY

+
+
+PARAM_TYPE_LOGICAL_ARRAY = 10
+

int([x]) -> integer +int(x, base=10) -> integer

+

Convert a number or string to an integer, or return 0 if no arguments +are given. If x is a number, return x.__int__(). For floating point +numbers, this truncates towards zero.

+

If x is not a number or if base is given, then x must be a string, +bytes, or bytearray instance representing an integer literal in the +given base. The literal can be preceded by ‘+’ or ‘-’ and be surrounded +by whitespace. The base defaults to 10. Valid bases are 0 and 2-36. +Base 0 means to interpret the base from the string as an integer literal. +>>> int(‘0b100’, base=0) +4

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.types.PARAM_TYPE_STRING.html b/automod/cpymad.types.PARAM_TYPE_STRING.html new file mode 100644 index 00000000..e0dff3ae --- /dev/null +++ b/automod/cpymad.types.PARAM_TYPE_STRING.html @@ -0,0 +1,159 @@ + + + + + + + PARAM_TYPE_STRING — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

PARAM_TYPE_STRING

+
+
+PARAM_TYPE_STRING = 3
+

int([x]) -> integer +int(x, base=10) -> integer

+

Convert a number or string to an integer, or return 0 if no arguments +are given. If x is a number, return x.__int__(). For floating point +numbers, this truncates towards zero.

+

If x is not a number or if base is given, then x must be a string, +bytes, or bytearray instance representing an integer literal in the +given base. The literal can be preceded by ‘+’ or ‘-’ and be surrounded +by whitespace. The base defaults to 10. Valid bases are 0 and 2-36. +Base 0 means to interpret the base from the string as an integer literal. +>>> int(‘0b100’, base=0) +4

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.types.PARAM_TYPE_STRING_ARRAY.html b/automod/cpymad.types.PARAM_TYPE_STRING_ARRAY.html new file mode 100644 index 00000000..bc5935da --- /dev/null +++ b/automod/cpymad.types.PARAM_TYPE_STRING_ARRAY.html @@ -0,0 +1,159 @@ + + + + + + + PARAM_TYPE_STRING_ARRAY — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

PARAM_TYPE_STRING_ARRAY

+
+
+PARAM_TYPE_STRING_ARRAY = 13
+

int([x]) -> integer +int(x, base=10) -> integer

+

Convert a number or string to an integer, or return 0 if no arguments +are given. If x is a number, return x.__int__(). For floating point +numbers, this truncates towards zero.

+

If x is not a number or if base is given, then x must be a string, +bytes, or bytearray instance representing an integer literal in the +given base. The literal can be preceded by ‘+’ or ‘-’ and be surrounded +by whitespace. The base defaults to 10. Valid bases are 0 and 2-36. +Base 0 means to interpret the base from the string as an integer literal. +>>> int(‘0b100’, base=0) +4

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.types.Parameter.html b/automod/cpymad.types.Parameter.html new file mode 100644 index 00000000..ab6ccf28 --- /dev/null +++ b/automod/cpymad.types.Parameter.html @@ -0,0 +1,220 @@ + + + + + + + Parameter — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

Parameter

+
+
+class Parameter(name, value, expr, dtype, inform, var_type=None)[source]
+

Bases: object

+

Attributes Summary

+ + + + + + + + + + + + + + + + + + + + + + + + +

definition

Return command argument as should be used for MAD-X input to create an identical element.

dtype

expr

inform

name

value

var_type

+

Methods Summary

+ + + + + + +

__call__()

Call self as a function.

+

Attributes Documentation

+
+
+definition
+

Return command argument as should be used for MAD-X input to +create an identical element.

+
+ +
+
+dtype
+
+ +
+
+expr
+
+ +
+
+inform
+
+ +
+
+name
+
+ +
+
+value
+
+ +
+
+var_type
+
+ +

Methods Documentation

+
+
+__call__()[source]
+

Call self as a function.

+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.types.PhaseError.html b/automod/cpymad.types.PhaseError.html new file mode 100644 index 00000000..848a06b3 --- /dev/null +++ b/automod/cpymad.types.PhaseError.html @@ -0,0 +1,190 @@ + + + + + + + PhaseError — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

PhaseError

+
+
+class PhaseError(dpn, dps)
+

Bases: tuple

+

Attributes Summary

+ + + + + + + + + +

dpn

Alias for field number 0

dps

Alias for field number 1

+

Methods Summary

+ + + + + + + + + +

count(value, /)

Return number of occurrences of value.

index(value[, start, stop])

Return first index of value.

+

Attributes Documentation

+
+
+dpn
+

Alias for field number 0

+
+ +
+
+dps
+

Alias for field number 1

+
+ +

Methods Documentation

+
+
+count(value, /)
+

Return number of occurrences of value.

+
+ +
+
+index(value, start=0, stop=9223372036854775807, /)
+

Return first index of value.

+

Raises ValueError if the value is not present.

+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.types.Range.html b/automod/cpymad.types.Range.html new file mode 100644 index 00000000..1820743a --- /dev/null +++ b/automod/cpymad.types.Range.html @@ -0,0 +1,190 @@ + + + + + + + Range — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

Range

+
+
+class Range(first, last)
+

Bases: tuple

+

Attributes Summary

+ + + + + + + + + +

first

Alias for field number 0

last

Alias for field number 1

+

Methods Summary

+ + + + + + + + + +

count(value, /)

Return number of occurrences of value.

index(value[, start, stop])

Return first index of value.

+

Attributes Documentation

+
+
+first
+

Alias for field number 0

+
+ +
+
+last
+

Alias for field number 1

+
+ +

Methods Documentation

+
+
+count(value, /)
+

Return number of occurrences of value.

+
+ +
+
+index(value, start=0, stop=9223372036854775807, /)
+

Return first index of value.

+

Raises ValueError if the value is not present.

+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.types.VAR_TYPE_CONST.html b/automod/cpymad.types.VAR_TYPE_CONST.html new file mode 100644 index 00000000..540b5be6 --- /dev/null +++ b/automod/cpymad.types.VAR_TYPE_CONST.html @@ -0,0 +1,159 @@ + + + + + + + VAR_TYPE_CONST — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

VAR_TYPE_CONST

+
+
+VAR_TYPE_CONST = 0
+

int([x]) -> integer +int(x, base=10) -> integer

+

Convert a number or string to an integer, or return 0 if no arguments +are given. If x is a number, return x.__int__(). For floating point +numbers, this truncates towards zero.

+

If x is not a number or if base is given, then x must be a string, +bytes, or bytearray instance representing an integer literal in the +given base. The literal can be preceded by ‘+’ or ‘-’ and be surrounded +by whitespace. The base defaults to 10. Valid bases are 0 and 2-36. +Base 0 means to interpret the base from the string as an integer literal. +>>> int(‘0b100’, base=0) +4

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.types.VAR_TYPE_DEFERRED.html b/automod/cpymad.types.VAR_TYPE_DEFERRED.html new file mode 100644 index 00000000..04cee939 --- /dev/null +++ b/automod/cpymad.types.VAR_TYPE_DEFERRED.html @@ -0,0 +1,159 @@ + + + + + + + VAR_TYPE_DEFERRED — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

VAR_TYPE_DEFERRED

+
+
+VAR_TYPE_DEFERRED = 2
+

int([x]) -> integer +int(x, base=10) -> integer

+

Convert a number or string to an integer, or return 0 if no arguments +are given. If x is a number, return x.__int__(). For floating point +numbers, this truncates towards zero.

+

If x is not a number or if base is given, then x must be a string, +bytes, or bytearray instance representing an integer literal in the +given base. The literal can be preceded by ‘+’ or ‘-’ and be surrounded +by whitespace. The base defaults to 10. Valid bases are 0 and 2-36. +Base 0 means to interpret the base from the string as an integer literal. +>>> int(‘0b100’, base=0) +4

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.types.VAR_TYPE_DIRECT.html b/automod/cpymad.types.VAR_TYPE_DIRECT.html new file mode 100644 index 00000000..b9e3a374 --- /dev/null +++ b/automod/cpymad.types.VAR_TYPE_DIRECT.html @@ -0,0 +1,159 @@ + + + + + + + VAR_TYPE_DIRECT — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

VAR_TYPE_DIRECT

+
+
+VAR_TYPE_DIRECT = 1
+

int([x]) -> integer +int(x, base=10) -> integer

+

Convert a number or string to an integer, or return 0 if no arguments +are given. If x is a number, return x.__int__(). For floating point +numbers, this truncates towards zero.

+

If x is not a number or if base is given, then x must be a string, +bytes, or bytearray instance representing an integer literal in the +given base. The literal can be preceded by ‘+’ or ‘-’ and be surrounded +by whitespace. The base defaults to 10. Valid bases are 0 and 2-36. +Base 0 means to interpret the base from the string as an integer literal. +>>> int(‘0b100’, base=0) +4

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.types.VAR_TYPE_STRING.html b/automod/cpymad.types.VAR_TYPE_STRING.html new file mode 100644 index 00000000..8f014da2 --- /dev/null +++ b/automod/cpymad.types.VAR_TYPE_STRING.html @@ -0,0 +1,159 @@ + + + + + + + VAR_TYPE_STRING — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

VAR_TYPE_STRING

+
+
+VAR_TYPE_STRING = 3
+

int([x]) -> integer +int(x, base=10) -> integer

+

Convert a number or string to an integer, or return 0 if no arguments +are given. If x is a number, return x.__int__(). For floating point +numbers, this truncates towards zero.

+

If x is not a number or if base is given, then x must be a string, +bytes, or bytearray instance representing an integer literal in the +given base. The literal can be preceded by ‘+’ or ‘-’ and be surrounded +by whitespace. The base defaults to 10. Valid bases are 0 and 2-36. +Base 0 means to interpret the base from the string as an integer literal. +>>> int(‘0b100’, base=0) +4

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.util.ChangeDirectory.html b/automod/cpymad.util.ChangeDirectory.html new file mode 100644 index 00000000..b863d7fd --- /dev/null +++ b/automod/cpymad.util.ChangeDirectory.html @@ -0,0 +1,145 @@ + + + + + + + ChangeDirectory — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

ChangeDirectory

+
+
+class ChangeDirectory(path, chdir, getcwd)[source]
+

Bases: object

+

Context manager for temporarily changing current working directory.

+
+
Parameters:
+
    +
  • path (str) – new path name

  • +
  • _os – module with getcwd and chdir functions

  • +
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.util.check_expression.html b/automod/cpymad.util.check_expression.html new file mode 100644 index 00000000..343eec91 --- /dev/null +++ b/automod/cpymad.util.check_expression.html @@ -0,0 +1,159 @@ + + + + + + + check_expression — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

check_expression

+
+
+check_expression(expr)[source]
+

Check if the given expression is a valid MAD-X expression that is safe to +pass to cpymad.madx.Madx.eval().

+
+
Parameters:
+

expr (str) –

+
+
Returns:
+

True

+
+
Raises:
+

ValueError – if the expression is ill-formed

+
+
+

Note that this function only recognizes a sane subset of the expressions +accepted by MAD-X and rejects valid but strange ones such as a number +formatting ‘.’ representing zero.

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.util.format_cmdpar.html b/automod/cpymad.util.format_cmdpar.html new file mode 100644 index 00000000..fbcb4e02 --- /dev/null +++ b/automod/cpymad.util.format_cmdpar.html @@ -0,0 +1,156 @@ + + + + + + + format_cmdpar — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

format_cmdpar

+
+
+format_cmdpar(cmd, key, value)[source]
+

Format a single MAD-X command parameter.

+
+
Parameters:
+
    +
  • cmd – A MAD-X Command instance for which an argument is to be formatted

  • +
  • key (str) – name of the parameter

  • +
  • value – argument value

  • +
+
+
Return type:
+

str

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.util.format_command.html b/automod/cpymad.util.format_command.html new file mode 100644 index 00000000..32a9be63 --- /dev/null +++ b/automod/cpymad.util.format_command.html @@ -0,0 +1,172 @@ + + + + + + + format_command — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

format_command

+
+
+format_command(*args, **kwargs)[source]
+

Create a MAD-X command from its name and parameter list.

+
+
Parameters:
+
    +
  • cmd – base command (serves as template for parameter types)

  • +
  • args – initial bareword command arguments (including command name!)

  • +
  • kwargs – following named command arguments

  • +
+
+
Return type:
+

str

+
+
Returns:
+

command string

+
+
+

Examples:

+
>>> format_command('twiss', sequence='lhc')
+'twiss, sequence=lhc;'
+
+
+
>>> format_command('option', echo=True)
+'option, echo;'
+
+
+
>>> format_command('constraint', betx=Constraint(max=3.13))
+'constraint, betx<3.13;'
+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.util.format_param.html b/automod/cpymad.util.format_param.html new file mode 100644 index 00000000..46ca526d --- /dev/null +++ b/automod/cpymad.util.format_param.html @@ -0,0 +1,152 @@ + + + + + + + format_param — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

format_param

+
+
+format_param(key, value)[source]
+

Format a single MAD-X command parameter.

+

This is the old version that does not use type information from MAD-X. It +is therefore not limited to existing MAD-X commands and attributes, but +also less reliable for producing valid MAD-X statements.

+
+
Return type:
+

str

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.util.is_identifier.html b/automod/cpymad.util.is_identifier.html new file mode 100644 index 00000000..64120d6a --- /dev/null +++ b/automod/cpymad.util.is_identifier.html @@ -0,0 +1,149 @@ + + + + + + + is_identifier — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

is_identifier

+
+
+is_identifier(name)[source]
+

Check if name is a valid identifier in MAD-X.

+
+
Return type:
+

bool

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.util.mad_quote.html b/automod/cpymad.util.mad_quote.html new file mode 100644 index 00000000..79b41cb5 --- /dev/null +++ b/automod/cpymad.util.mad_quote.html @@ -0,0 +1,149 @@ + + + + + + + mad_quote — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

mad_quote

+
+
+mad_quote(value)[source]
+

Add quotes to a string value.

+
+
Return type:
+

str

+
+
+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.util.name_from_internal.html b/automod/cpymad.util.name_from_internal.html new file mode 100644 index 00000000..17a13f90 --- /dev/null +++ b/automod/cpymad.util.name_from_internal.html @@ -0,0 +1,157 @@ + + + + + + + name_from_internal — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

name_from_internal

+
+
+name_from_internal(element_name)[source]
+

Convert element name from internal representation to user API. Example:

+
>>> name_from_internal("foo:1")
+foo
+:rtype: :py:class:`str`
+
+
+
>>> name_from_internal("foo:2")
+foo[2]
+
+
+

Element names are stored with a “:d” suffix by MAD-X internally (data in +node/sequence structs), but users must use the syntax “elem[d]” to access +the corresponding elements. This function is used to transform any string +coming from the user before passing it to MAD-X.

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.util.name_to_internal.html b/automod/cpymad.util.name_to_internal.html new file mode 100644 index 00000000..ebb290c0 --- /dev/null +++ b/automod/cpymad.util.name_to_internal.html @@ -0,0 +1,154 @@ + + + + + + + name_to_internal — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

name_to_internal

+
+
+name_to_internal(element_name)[source]
+

Convert element name from user API to internal representation. Example:

+
>>> name_to_external("foo")
+foo:1
+:rtype: :py:class:`str`
+
+
+
>>> name_to_external("foo[2]")
+foo:2
+
+
+

See name_from_internal() for further information.

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/automod/cpymad.util.temp_filename.html b/automod/cpymad.util.temp_filename.html new file mode 100644 index 00000000..fc7db64e --- /dev/null +++ b/automod/cpymad.util.temp_filename.html @@ -0,0 +1,144 @@ + + + + + + + temp_filename — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

temp_filename

+
+
+temp_filename()[source]
+

Get filename for use within ‘with’ block and delete file afterwards.

+
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/building.html b/building.html new file mode 100644 index 00000000..7715ab57 --- /dev/null +++ b/building.html @@ -0,0 +1,134 @@ + + + + + + + Building from source — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

Building from source

+

The following sections contain instructions for building MAD-X and cpymad from +source on various platforms. This can be an intricate procedure that is mostly +performed by package maintainers or developers who want to change cpymad code. +Ordinary users usually don’t need to do this and can use the prebuilt wheels +if available (see Installation).

+

Contents

+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/cpymad/index.html b/cpymad/index.html new file mode 100644 index 00000000..483aa6cd --- /dev/null +++ b/cpymad/index.html @@ -0,0 +1,146 @@ + + + + + + + API Reference — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+ +
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/cpymad/libmadx.html b/cpymad/libmadx.html new file mode 100644 index 00000000..69850c38 --- /dev/null +++ b/cpymad/libmadx.html @@ -0,0 +1,373 @@ + + + + + + + cpymad.libmadx — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

cpymad.libmadx

+

Low level cython binding to MAD-X.

+

CAUTION: End users should usually not import this module directly! Use +cpymad.madx.Madx instead.

+
    +
  • The API of this module is considered private, i.e. it may change between +versions without further notice.

  • +
  • Importing this module means loading MAD-X directly into the process space. +This means that any crash in the (sometimes fragile) MAD-X interpreter will +crash the importing process with it.

  • +
  • All functions in this module operate on a shared global state.

  • +
  • this module exposes a very C-ish API that is not convenient to work with.

  • +
+
+

Functions

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

get_version_number()

Get the version number of loaded MAD-X interpreter.

get_version_date()

Get the release date of loaded MAD-X interpreter.

is_started()

Check whether MAD-X has been initialized.

start()

Initialize MAD-X.

finish()

Cleanup MAD-X.

input(cmd)

Pass one input command to MAD-X.

eval(expression)

Evaluates an expression and returns the result as double.

get_var(name)

Get the value of a global variable.

num_globals()

Return the number of global variables.

get_globals()

Get a list of names of all global variables.

get_var_type(name)

Get the type of the variable: :rtype: int

get_options()

Get the current option values.

get_current_beam()

Get properties of current default beam.

sequence_exists(sequence_name)

Check if the sequence exists.

get_sequence_names()

Get a list of all sequences currently in memory.

get_sequence_count()

Get the number of all sequences currently in memory.

get_active_sequence_name()

Get the name of the active sequence.

get_sequence_twiss_table_name(sequence_name)

Get the last calculated twiss table for the given sequence.

get_sequence_beam(sequence_name)

Get the beam associated to the sequence.

is_sequence_expanded(sequence_name)

Check whether a sequence has already been expanded.

table_exists(table_name)

Check if the table exists.

get_table_names()

Return list of all table names.

get_table_count()

Return number of existing tables.

get_table_summary(table_name)

Get table summary.

get_table_column_names(table_name[, selected])

Get a list of all column names in the table.

get_table_column_count(table_name[, selected])

Get a number of columns in the table.

get_table_column(table_name, column_name[, rows])

Get data from the specified table.

get_table_row(table_name, row_index[, columns])

Return row as tuple of values.

get_table_row_count(table_name)

Return total number of rows in the table.

get_table_row_names(table_name[, indices])

Return row names for every index (row number) in the list.

get_table_selected_rows(table_name)

Return list of selected row indices in table (may be empty).

get_table_selected_rows_mask(table_name)

Return boolean mask of which rows are selected in a table.

apply_table_selections(table_name)

Apply the SELECT/DESELECT commands for table columns/rows.

get_element(sequence_name, element_index)

Return requested element in the original sequence.

get_element_name(sequence_name, element_index)

Get list with the names of all elements of a specific sequence.

get_element_positions(sequence_name)

Get list with positions of all elements of a specific sequence.

get_element_names(sequence_name)

Get list with the names of all elements of a specific sequence.

get_element_index(sequence_name, element_name)

Return index of element with specified name in the original sequence.

get_element_index_by_position(sequence_name, ...)

Return index of element at specified position in the original sequence.

get_element_count(sequence_name)

Return number of elements in the original sequence.

get_expanded_element(sequence_name, ...)

Return requested element in the expanded sequence.

get_expanded_element_name(sequence_name, ...)

Get list with the names of all elements of a specific sequence.

get_expanded_element_positions(sequence_name)

Get list with positions of all elements of a specific sequence.

get_expanded_element_names(sequence_name)

Get list with the names of all elements of a specific sequence.

get_expanded_element_index(sequence_name, ...)

Return index of element with specified name in the expanded sequence.

get_expanded_element_index_by_position(...)

Return index of element at specified position in the expanded sequence.

get_expanded_element_count(sequence_name)

Return number of elements in the expanded sequence.

get_global_element(element_index)

Return requested element in the expanded sequence.

get_global_element_name(element_index)

Return name of element.

get_global_element_index(element_name)

Return index of element with specified name in the global element list.

get_global_element_count()

Return number of globally visible elements.

get_base_type_names()

Return list of element names for base types.

get_defined_command(command_name)

Return MAD-X command as dict of values.

get_defined_command_names()

Return list of MAD-X command names.

get_beam(beam_name)

Return MAD-X beam as dict of values.

get_beam_names()

Return list of MAD-X beam names.

getcwd()

Return the current working directory.

+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/cpymad/madx.html b/cpymad/madx.html new file mode 100644 index 00000000..ca6dc389 --- /dev/null +++ b/cpymad/madx.html @@ -0,0 +1,262 @@ + + + + + + + cpymad.madx — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

cpymad.madx

+

This module defines a convenience layer to access the MAD-X interpreter.

+

The most interesting class for users is Madx.

+
+

Classes

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Madx([libmadx, command_log, stdout, ...])

Python interface for a MAD-X process.

ArrayAttribute(element, values, name)

AttrDict(data)

BaseTypeMap(madx)

Command(madx, data)

Raw python interface to issue and view MAD-X commands.

CommandLog(file[, prefix, suffix, own])

Log MAD-X command history to a text file.

CommandMap(madx)

Element(madx, data)

ElementList(madx, sequence_name)

ExpandedElementList(madx, sequence_name)

GlobalElementList(madx)

Mapping of the global elements in MAD-X.

Metadata()

MAD-X metadata (license info, etc).

Sequence(name, madx[, _check])

MAD-X sequence representation.

SequenceMap(madx)

Mapping of all sequences (Sequence) in memory.

Table(name, libmadx, *[, columns, rows, _check])

MAD-X twiss table.

TableMap(libmadx)

Mapping of all tables (Table) in memory.

VarList(madx)

Mapping of global MAD-X variables.

VarParamList(madx)

Mapping of global MAD-X variables.

Version(release, date)

Version information struct.

TwissFailed

+
+
+

Variables

+ + + + + + +

metadata

MAD-X metadata (license info, etc).

+
+
+

Class Inheritance Diagram

+
Inheritance diagram of cpymad.madx.Madx, cpymad.madx.ArrayAttribute, cpymad.madx.AttrDict, cpymad.madx.BaseTypeMap, cpymad.madx.Command, cpymad.madx.CommandLog, cpymad.madx.CommandMap, cpymad.madx.Element, cpymad.madx.ElementList, cpymad.madx.ExpandedElementList, cpymad.madx.GlobalElementList, cpymad.madx.Metadata, cpymad.madx.Sequence, cpymad.madx.SequenceMap, cpymad.madx.Table, cpymad.madx.TableMap, cpymad.madx.VarList, cpymad.madx.VarParamList, cpymad.madx.Version, cpymad.madx.TwissFailed
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/cpymad/types.html b/cpymad/types.html new file mode 100644 index 00000000..859299d8 --- /dev/null +++ b/cpymad/types.html @@ -0,0 +1,232 @@ + + + + + + + cpymad.types — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

cpymad.types

+

Python type analogues for MAD-X data structures.

+
+

Classes

+ + + + + + + + + + + + + + + + + + + + + +

Constraint([val, min, max])

Represents a MAD-X constraint, which has either min/max/both/value.

Parameter(name, value, expr, dtype, inform)

Range(first, last)

AlignError(dx, dy, ds, dphi, dtheta, dpsi, ...)

FieldError(dkn, dks)

PhaseError(dpn, dps)

+
+
+

Variables

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

PARAM_TYPE_LOGICAL

int([x]) -> integer int(x, base=10) -> integer

PARAM_TYPE_INTEGER

int([x]) -> integer int(x, base=10) -> integer

PARAM_TYPE_DOUBLE

int([x]) -> integer int(x, base=10) -> integer

PARAM_TYPE_STRING

int([x]) -> integer int(x, base=10) -> integer

PARAM_TYPE_CONSTRAINT

int([x]) -> integer int(x, base=10) -> integer

PARAM_TYPE_LOGICAL_ARRAY

int([x]) -> integer int(x, base=10) -> integer

PARAM_TYPE_INTEGER_ARRAY

int([x]) -> integer int(x, base=10) -> integer

PARAM_TYPE_DOUBLE_ARRAY

int([x]) -> integer int(x, base=10) -> integer

PARAM_TYPE_STRING_ARRAY

int([x]) -> integer int(x, base=10) -> integer

VAR_TYPE_CONST

int([x]) -> integer int(x, base=10) -> integer

VAR_TYPE_DIRECT

int([x]) -> integer int(x, base=10) -> integer

VAR_TYPE_DEFERRED

int([x]) -> integer int(x, base=10) -> integer

VAR_TYPE_STRING

int([x]) -> integer int(x, base=10) -> integer

+
+
+

Class Inheritance Diagram

+
Inheritance diagram of cpymad.types.Constraint, cpymad.types.Parameter, cpymad.types.Range, cpymad.types.AlignError, cpymad.types.FieldError, cpymad.types.PhaseError
+ + + + + + + +
+
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/cpymad/util.html b/cpymad/util.html new file mode 100644 index 00000000..7d469274 --- /dev/null +++ b/cpymad/util.html @@ -0,0 +1,191 @@ + + + + + + + cpymad.util — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

cpymad.util

+

Utility functions used in other parts of the pymad package.

+
+

Functions

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

mad_quote(value)

Add quotes to a string value.

is_identifier(name)

Check if name is a valid identifier in MAD-X.

name_from_internal(element_name)

Convert element name from internal representation to user API.

name_to_internal(element_name)

Convert element name from user API to internal representation.

format_param(key, value)

Format a single MAD-X command parameter.

format_cmdpar(cmd, key, value)

Format a single MAD-X command parameter.

format_command(*args, **kwargs)

Create a MAD-X command from its name and parameter list.

check_expression(expr)

Check if the given expression is a valid MAD-X expression that is safe to pass to cpymad.madx.Madx.eval().

temp_filename()

Get filename for use within 'with' block and delete file afterwards.

+
+
+

Classes

+ + + + + + +

ChangeDirectory(path, chdir, getcwd)

Context manager for temporarily changing current working directory.

+
+
+

Class Inheritance Diagram

+
Inheritance diagram of cpymad.util.ChangeDirectory
+ + +
+
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/genindex.html b/genindex.html new file mode 100644 index 00000000..e0ecbbfc --- /dev/null +++ b/genindex.html @@ -0,0 +1,946 @@ + + + + + + Index — cpymad 1.14.1 documentation + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ + +

Index

+ +
+ _ + | A + | B + | C + | D + | E + | F + | G + | H + | I + | K + | L + | M + | N + | O + | P + | Q + | R + | S + | T + | U + | V + +
+

_

+ + +
+ +

A

+ + + +
+ +

B

+ + + +
+ +

C

+ + + +
+ +

D

+ + + +
+ +

E

+ + + +
+ +

F

+ + + +
+ +

G

+ + + +
+ +

H

+ + +
+ +

I

+ + + +
+ +

K

+ + + +
+ +

L

+ + + +
+ +

M

+ + + +
+ +

N

+ + + +
+ +

O

+ + +
+ +

P

+ + + +
+ +

Q

+ + +
+ +

R

+ + + +
+ +

S

+ + + +
+ +

T

+ + + +
+ +

U

+ + + +
+ +

V

+ + + +
+ + + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/getting-started.html b/getting-started.html new file mode 100644 index 00000000..4e25e764 --- /dev/null +++ b/getting-started.html @@ -0,0 +1,406 @@ + + + + + + + Getting Started — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

Getting Started

+

The basic way to use cpymad is to create a Madx +instance that can be used to control and access the state of a MAD-X process:

+
from cpymad.madx import Madx
+madx = Madx()
+
+
+

This spawns a MAD-X process in the background and opens a communication +channel to it.

+

Running MAD-X in a separate process is necessary to create multiple instances +with independent interpreter state. This is useful for resetting MAD-X to a +clean initial state by simply creating a new instance; and is a requirement +for parallelization (because MAD-X is not thread safe).

+
+

Basic MAD-X commands

+

Now that you started MAD-X, most MAD-X commands can be executed using the +corresponding method on the Madx instance (except in the +case where the name of the command conflicts with another property, in this +case, see the command() property). For example:

+
madx.option(echo=True)
+
+madx.call(file='/path/to/some/input_file.madx')
+
+madx.twiss(
+    sequence='LEBT',
+    betx=0.1, bety=0.1,
+    alfx=0.1, alfy=0.1)
+
+
+

In general, parameters must be passed by their name, exactly as for the MAD-X +command. Flags should be passed as python bools, deferred expressions (:=) +as strings, and direct expressions (=) as floats using +eval().

+

Most of the command methods are auto-generated by introspecting the +corresponding MAD-X command object. Only a few of the methods provide +additional functionality over the raw MAD-X commands:

+

call() allows to temporarily change the directory to +the one of the executed file by setting the optional chdir parameter to +True:

+
# change directory to `/path/to/your/` during CALL:
+madx.call('/path/to/your/file.madx', chdir=True)
+
+
+

twiss() returns the resulting twiss table, which can +be used conveniently for your own analysis, e.g.:

+
twiss = madx.twiss(sequence='LEBT', betx=1, bety=1)
+
+import matplotlib.pyplot as plt
+plt.plot(twiss.s, twiss.betx)
+plt.show()
+
+
+

survey() returns the resulting survey table, similar +to twiss().

+
+
+

Controlling MAD-X

+

The Madx class works by feeding commands in the form of +textual input to the MAD-X process. This means that you can execute all MAD-X +commands, even if they are not explicitly defined on the python class level.

+
+

input()

+

The method responsible for feeding textual input to MAD-X is +input() method. It is called with a single string +argument that will be forwarded as input to the MAD-X interpreter. For +example:

+
madx.input('CALL, FILE="fodo.madx";')
+
+
+

Do not input anything but simple single line commands, no comments.

+
+
+

command()

+

While it can be necessary to use input() for some +constructs like macros or loops, most of the time your most favorable option +is to use the command attribute. It provides syntactic +sugar for composing regular MAD-X commands from python variables and feeding +the generated command string to input():

+
madx.command.beam(sequence='fodo', particle='PROTON')
+
+
+

If you need to override how command generates the +command string (argument order/formatting), you can pass strings as positional +arguments. For example:

+
madx.command.beam('sequence=fodo', particle='PROTON')
+
+
+

Note that positional and keyword parameters can be mixed.

+

A single trailing underscore will be stripped from the attribute name. This is +useful for MAD-X commands that are python keywords:

+
madx.command.global_(sequence='cassps', Q1=26.58)
+
+
+

In order to clone a command or element (colon syntax in MAD-X), use the +clone() method:

+
madx.command.quadrupole.clone('QP', AT=2, L=1)
+
+
+

which translates to the MAD-X command:

+
QP: QUADRUPOLE, AT=2, L=1;
+
+
+
+
+

chdir()

+

chdir() changes the directory of the MAD-X process +(not the current python process). If the return value can be used as a context +manager, that reverts to the original directory upon leaving the context.

+
+
+

Others

+

At this point, you should be able to execute arbitrary MAD-X commands via +cpymad.

+

All other methods for controlling MAD-X are just syntactic sugar for +input(). Among others, this has the following main +benefits:

+
    +
  • every modification of the MAD-X state is transparent from the +command_log file

  • +
  • the session should be reproducible using the official madx command line +client by the commands in the command_log file.

  • +
  • reduces the need for special implementations on the cython binding by always +going through the same interface.

  • +
+

More methods for changing state:

+
    +
  • verbose(): switch on or off verbose mode.

  • +
+
+
+
+

Accessing MAD-X

+

In contrast to how cpymad is controlling the MAD-X state, when accessing +state it does not use MAD-X commands, but rather directly retrieves the data +from the C variables in the MAD-X process memory!

+

This means that data retrieval is relatively fast because it does not:

+
    +
  • parse command in the MAD-X interpreter

  • +
  • use a file on disk or the network

  • +
  • parse resulting data on python side

  • +
  • to potentially modify the MAD-X interpreter state by executing a command

  • +
+

Apart from this major advantage, another important implication is that the +command_log file will not be cluttered by data-retrieval commands but only +show actions.

+
+

version

+

Access the MAD-X version:

+
print(madx.version)
+# individual parts
+print(madx.version.date)
+print(madx.version.release)
+# or as tuple:
+print(madx.version.info >= (5, 3, 6))
+
+
+
+
+

elements

+

Access to global elements:

+
# list of element names:
+print(list(madx.elements))
+
+# check whether an element is defined:
+print('qp1' in madx.elements)
+
+# get element properties:
+elem = madx.elements.qp1
+print(elem.k1)
+print(elem.l)
+
+
+

Note that elements support dict-like item access to retrieve properties (i.e. +elem['k1']) besides attribute access. The same is true in other places.

+
+
+

table

+

View of MAD-X tables:

+
# list of existing table names
+print(list(madx.table)):
+
+# get table as dict-like object:
+twiss = madx.table.twiss
+
+# get columns as numpy arrays:
+alfx = twiss.alfx
+betx = twiss.alfy
+
+# get all twiss variables for 10th element:
+row = twiss[10]
+
+
+

By default a table provides access to all available rows and columns. In order +to restrict to the selection from a previous SELECT command, you can use +the the table.selection() method:

+
twiss = madx.table.twiss.selection()
+
+# only selected elements:
+twiss.betx
+
+# only selected columns:
+list(twiss)
+
+
+
+
+

globals

+

Dictionary-like view of the MAD-X global variables:

+
# list of variable names
+print(list(madx.globals))
+
+# value of a builtin variable
+print(madx.globals.PI)
+
+
+

Evaluate an expression in the MAD-X interpreter:

+
print(madx.eval('sb->angle / pi * 180'))
+
+
+
+
+

sequence

+

Dictionary like view of all defined sequences:

+
# list of sequence names
+print(list(madx.sequence))
+
+# get a proxy object for the sequence
+fodo = madx.sequence.fodo
+
+beam = fodo.beam
+print(beam.ex, beam.ey)
+
+# ordered dict-like object of explicitly defined elements:
+elements = fodo.elements
+
+# OR: including implicit drifts:
+expanded = fodo.expanded_elements
+
+
+
+
+
+

Logging commands

+

For the purpose of debugging, reproducibility and transparency in general, it +is important to be able to get a listing of the user input sent to +MAD-X. This can be controlled using the command_log parameter. It accepts +file names, arbitrary callables and file-like objects as follows:

+
madx = Madx(command_log="log.madx")
+madx = Madx(command_log=print)
+madx = Madx(command_log=CommandLog(sys.stderr))
+
+
+
+
+

Redirecting output

+

The output of the MAD-X interpreter can be controlled using the redirect +parameter of the Madx constructor. It allows to disable +the output completely:

+
madx = Madx(stdout=False)
+
+
+

redirect it to a file:

+
with open('madx_output.log', 'w') as f:
+    madx = Madx(stdout=f)
+
+
+

or send the MAD-X output directly to an in-memory pipe without going through +the filesystem:

+
madx = Madx(stdout=subprocess.PIPE)
+pipe = m._process.stdout
+
+
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 00000000..9a93d199 --- /dev/null +++ b/index.html @@ -0,0 +1,170 @@ + + + + + + + cpymad — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

cpymad

+

cpymad is a Cython binding to MAD-X for giving full control and access to a +MAD-X interpreter in python.

+

Note: Support for 32bit builds and python 2.7 has been removed in version +1.8.0.

+

Note: python 3.5 and manylinux1 have reached EOL. Support will be +removed in a future release.

+
+

Contents

+ +
+ +
+

Indices and tables

+ +

Documentation updated: Sep 20, 2023

+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/installation.html b/installation.html new file mode 100644 index 00000000..791db3e8 --- /dev/null +++ b/installation.html @@ -0,0 +1,132 @@ + + + + + + + Installation — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

Installation

+

In order to install cpymad, please try:

+
pip install cpymad --only-binary cpymad
+
+
+

If this fails, it usually means that we haven’t uploaded wheels for your +platform or python version. In this case, either ping us about adding a +corresponding wheel, or refer to Building from source.

+

In case of success, check your installation by typing the following:

+
python -c "import cpymad.libmadx as l; l.start()"
+
+
+

The MAD-X banner should appear.

+
+

Note

+

The MacOS wheels are experimental and require Apple’s Accelerate framework +to be installed on the user machine. Please let us know if there are +problems with these.

+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/installation/linux.html b/installation/linux.html new file mode 100644 index 00000000..76de4c55 --- /dev/null +++ b/installation/linux.html @@ -0,0 +1,241 @@ + + + + + + + Linux — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

Linux

+

cpymad is linked against a library version of MAD-X, which means that in order +to build cpymad you first have to compile MAD-X from source. The official +madx executable is not sufficient. These steps are described in the +following subsections:

+ +

If you’re planning to build cpymad inside a conda environment, we recommend +to build MAD-X within that same environment to avoid linker errors. You will +have to install gcc, g++, and gfortran inside conda before continuing, e.g.:

+
conda create -n cpymad python=3.10
+conda activate cpymad
+conda install {gcc,gxx,gfortran}_linux-64
+
+
+
+

Build MAD-X

+

In order to build MAD-X from source, please install the following build tools:

+
    +
  • CMake >= 3.0

  • +
  • gcc >= 4.8

  • +
  • gfortran

  • +
+

Other C/C++/fortran compiler suites may work too but are untested as of now.

+

Download and extract the latest MAD-X release from github, e.g.:

+
wget https://github.com/MethodicalAcceleratorDesign/MAD-X/archive/5.09.00.tar.gz
+tar -xzf MAD-X-5.09.00.tar.gz
+
+
+

or directly checkout the source code using git (unstable):

+
git clone https://github.com/MethodicalAcceleratorDesign/MAD-X
+
+
+

We will do an out-of-source build in a build/ subdirectory. This way, you +can easily delete the build directory and restart if anything goes wrong. +The basic process looks as follows:

+
mkdir MAD-X/build
+cd MAD-X/build
+
+cmake .. \
+    -DMADX_ONLINE=OFF \
+    -DMADX_INSTALL_DOC=OFF \
+    -DCMAKE_INSTALL_PREFIX=../dist \
+    -DCMAKE_C_FLAGS="-fvisibility=hidden"
+
+make install
+
+
+

Here we have specified a custom installation prefix to prevent cmake from +installing MAD-X to a system directory (which would require root privileges, +and may be harder to remove completely). You can also set a more permanent +install location if you prefer (e.g. ~/.local or /opt/madx), but keep +in mind that there is no uninstall command other than removing the files +manually.

+

The cmake command has many more options, the most important ones being +(only use if you now what you’re doing!):

+
    +
  • -DMADX_STATIC=ON: Pass this flag to link statically against the +dependencies of MAD-X (libc, libgfortran, libstdc++, blas, lapack, etc). +This may be attempted in case of problems and is not guaranteed to work on +all platforms (if your OS e.g. does not distribute libgfortran.a as is +the case on archlinux). Note that even without this flag, cpymad will still +be linked statically against MAD-X, just not against its dependencies.

  • +
  • -DBUILD_SHARED_LIBS=ON: Pass this flag if you want to link cpymad +dynamically against MAD-X. In theory, this allows using, testing and even +updating the MAD-X shared object independently of cpymad. If using this +option, also change -DCMAKE_C_FLAGS="-fvisibility=protected" and be +aware that you have to redistribute the MAD-X shared object along with +cpymad, or install MAD-X to a permanent location where it can be found at +runtime. Usually this means installing to the (default) system directories, +but it can also be done by setting the LD_LIBRARY_PATH environment variable +or passing appropriate --rpath to the setup script.

  • +
+

Save the path to the install directory in the MADXDIR environment variable. +This variable will be used later by the setup.py script to locate the +MAD-X headers and library, for example:

+
export MADXDIR="$(pwd)"/../dist
+
+
+

Also, set the following variables according to the flags passed to the cmake +command above (ONLY PASS IF NEEDED!):

+
set STATIC=1    # if -DMADX_STATIC=ON
+set SHARED=1    # if -DBUILD_SHARED_LIBS=ON
+
+
+
+
+

Building cpymad

+

Install setup requirements:

+
pip install cython wheel
+
+
+

Enter the cpymad folder, and build as follows:

+
python setup.py build_ext -lm
+
+
+

The -lm might not be necessary on all systems.

+

If you have installed blas/lapack and MAD-X found it during the cmake step, +you have to pass them as additional link libraries:

+
python setup.py build_ext -lm -lblas -llapack
+
+
+

You can now create and install a wheel as follows (however, note that this +wheel probably won’t be fit to be distributed to other systems):

+
python setup.py bdist_wheel
+pip install dist/cpymad-*.whl
+
+
+

If you plan on changing cpymad code, do the following instead:

+
pip install -e .
+
+
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/installation/macos.html b/installation/macos.html new file mode 100644 index 00000000..33c89de9 --- /dev/null +++ b/installation/macos.html @@ -0,0 +1,227 @@ + + + + + + + MacOS (experimental) — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

MacOS (experimental)

+

cpymad is linked against a library version of MAD-X, which means that in order +to build cpymad you first have to compile MAD-X from source. The official +madx executable is not sufficient. These steps are described in the +following subsections:

+ +
+

Build MAD-X

+

In order to build MAD-X from source, please install the following build tools:

+
    +
  • gcc >= 4.8

  • +
  • gfortran

  • +
  • CMake >= 3.0 (e.g. using pip install cmake)

  • +
+

Other C/C++/fortran compiler suites may work too but are untested as of now.

+

Download and extract the latest MAD-X release from github, e.g.:

+
curl -L -O https://github.com/MethodicalAcceleratorDesign/MAD-X/archive/5.09.00.tar.gz
+tar -xzf 5.09.00.tar.gz
+
+
+

or directly checkout the source code using git (unstable):

+
git clone https://github.com/MethodicalAcceleratorDesign/MAD-X
+
+
+

On Mac, you currently also have to apply the following patch to the MAD-X +source, to make the build work:

+
curl -L -O https://raw.githubusercontent.com/hibtc/cpymad/master/.github/patch/fix-macos-symbol-not-found-mad_argc.patch
+patch -d ./MAD-X -p1 <fix-macos-symbol-not-found-mad_argc.patch
+
+
+

We will do an out-of-source build in a build/ subdirectory. This way, you +can easily delete the build directory and restart if anything goes wrong. +The basic process looks as follows:

+
pip install --upgrade cmake
+
+mkdir MAD-X/build
+cd MAD-X/build
+
+cmake .. \
+    -DCMAKE_POLICY_DEFAULT_CMP0077=NEW \
+    -DCMAKE_POLICY_DEFAULT_CMP0042=NEW \
+    -DCMAKE_OSX_ARCHITECTURES=x86_64 \
+    -DCMAKE_C_COMPILER=gcc \
+    -DCMAKE_CXX_COMPILER=g++ \
+    -DCMAKE_Fortran_COMPILER=gfortran \
+    -DBUILD_SHARED_LIBS=OFF \
+    -DMADX_STATIC=OFF \
+    -DCMAKE_INSTALL_PREFIX=../dist \
+    -DCMAKE_BUILD_TYPE=Release \
+    -DMADX_INSTALL_DOC=OFF \
+    -DMADX_ONLINE=OFF \
+    -DMADX_FORCE_32=OFF \
+    -DMADX_X11=OFF
+cmake --build . --target install
+
+
+

Here we have specified a custom installation prefix to prevent cmake from +installing MAD-X to a system directory (which would require root privileges, +and may be harder to remove completely). You can also set a more permanent +install location if you prefer, but keep in mind that there is no +uninstall command other than removing the files manually.

+

The cmake command has many more options, but these are untested on Mac so far.

+

Save the path to the install directory in the MADXDIR environment variable. +This variable will be used later by the setup.py script to locate the +MAD-X headers and library, for example:

+
export MADXDIR="$(pwd)"/../dist
+
+
+
+
+

Building cpymad

+

Install setup requirements:

+
pip install -U cython wheel setuptools delocate
+
+
+

Enter the cpymad folder, and build as follows:

+
export CC=gcc
+
+python setup.py build_ext
+
+
+

If you have installed blas/lapack and MAD-X found it during the cmake step, +you have to pass them as additional link libraries:

+
python setup.py build_ext -lblas -llapack
+
+
+

You can now create and install a wheel as follows (however, note that this +wheel probably won’t be fit to be distributed to other systems):

+
python setup.py bdist_wheel
+delocate-wheel dist/*.whl
+pip install dist/cpymad-*.whl
+
+
+

If you plan on changing cpymad code, do the following instead:

+
pip install -e .
+
+
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/installation/troubleshooting.html b/installation/troubleshooting.html new file mode 100644 index 00000000..65682c58 --- /dev/null +++ b/installation/troubleshooting.html @@ -0,0 +1,345 @@ + + + + + + + Troubleshooting — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

Troubleshooting

+

In the following we will try to keep a list of the various issues and fixes +that might occur during or after installation.

+

After a successful installation, please use the following command to verify +that the extension can be loaded:

+
python -c "import cpymad.libmadx as l; l.start()"
+
+
+

The MAD-X banner should appear.

+ +
+

MAD-X build errors

+
+

mad_main.c: undefined reference to ‘madx_start’

+

If you see an error like this:

+
[ 96%] Linking CXX executable madx
+/usr/bin/ld: CMakeFiles/madxbin.dir/mad_main.c.o: in function `mad_init'
+mad_main.c:(.text+0x44): undefined reference to `madx_start'
+/usr/bin/ld: CMakeFiles/madxbin.dir/mad_main.c.o: in function `mad_run'
+mad_main.c:(.text+0x73): undefined reference to `madx_input'
+/usr/bin/ld: CMakeFiles/madxbin.dir/mad_main.c.o: in function `mad_fini'
+mad_main.c:(.text+0x81): undefined reference to `madx_finish'
+/usr/bin/ld: CMakeFiles/madxbin.dir/mad_main.c.o: in function `main'
+mad_main.c:(.text.startup+0xc): undefined reference to `madx_input'
+/usr/bin/ld: mad_main.c:(.text.startup+0x11): undefined reference to `madx_finish'
+/usr/bin/ld: mad_main.c:(.text.startup+0x16): undefined reference to `geterrorflag_'
+
+
+

It probably means that you attempted to build MAD-X as shared object +-DBUILD_SHARED_LIBS=ON with -DCMAKE_C_FLAGS="-fvisibility=hidden". +If that is the case, either build MAD-X with -DBUILD_SHARED_LIBS=OFF, or +change hidden to protected, or leave out the visibility option entirely.

+
+
+

Fatal Error: Cannot open module file ‘gxx11_common.mod’

+

With some compiler toolchains (manylinux2014) the following error has been +observed, followed by some additional outputs and warnings:

+
/mnt/MAD-X/src/gxx11ps.f90:2:7:
+
+    2 |   use gxx11_common
+      |       1
+Fatal Error: Cannot open module file ‘gxx11_common.mod’ for reading at (1): No such file or directory
+compilation terminated.
+make[2]: *** [src/CMakeFiles/madx.dir/build.make:101: src/CMakeFiles/madx.dir/gxx11ps.f90.o] Error 1
+make[2]: *** Waiting for unfinished jobs....
+[...]
+make[1]: *** [CMakeFiles/Makefile2:1356: src/CMakeFiles/madx.dir/all] Error 2
+make: *** [Makefile:166: all] Error 2
+
+
+

This is likely related to using parallel make jobs, i.e. make -j. If +that’s the case for you, try without -j.

+
+
+
+

Setup or compile time errors

+

Errors that occur during the execution of pip install cpymad or python +setup.py build.

+
+

ERROR: No matching distribution found

+

Problem: pip install cpymad fails with either or both of these messages:

+
ERROR: Could not find a version that satisfies the requirement cpymad
+ERROR: No matching distribution found for cpymad
+
+
+

This usually means that we haven’t uploaded wheels for your platform or python +version. In this case, either ping us about adding a corresponding wheel, or +refer to the platform specific Installation Instructions.

+
+
+

fatal error: madX/mad_types_f.h: No such file or directory

+

Problem: pip install cpymad fails and shows an error similar to the +following:

+
gcc [...] -c src/cpymad/libmadx.c [...]
+src/cpymad/libmadx.c:642:10: fatal error: madX/mad_types_f.h: No such file or directory
+  642 | #include "madX/mad_types_f.h"
+      |          ^~~~~~~~~~~~~~~~~~~~
+compilation terminated.
+error: command 'gcc' failed with exit status 1
+----------------------------------------
+ERROR: Command errored out with exit status 1: [...]
+
+
+

This occurs because pip couldn’t find a prebuilt binary wheel that is +compatible with your platform, and tried to build the source distribution +instead. Please ping us about adding a wheel for your platform or refer to the +Building from source guide.

+
+
+

OSError: Missing source file

+

Message:

+
OSError: Missing source file: 'cpymad/libmadx.c'. Install Cython to resolve this problem.
+
+
+

This can occur if building cpymad from a local checkout without having Cython +installed. The solution is to install cython and try again:

+
pip install cython
+
+
+
+
+
+

Runtime errors

+

Errors that occur after a successful installation when trying to use cpymad.

+
+

ImportError: undefined symbol: _ZGVbN2vv_pow

+

There are several possible fixes:

+
    +
  • The simplest fix that works without rebuilding MAD-X is to link cpymad +against libmvec. This can be done by passing -lm to the python +setup.py build_ext -lm command. You can also pass it through pip as +follows pip install -e . --global-option build_ext --global-option -lm. +This fix is the recommended one when building for local use on your own +machine.

  • +
  • Rebuild MAD-X without vectorization optimizations by passing +-DCMAKE_C_FLAGS="-fno-tree-vectorize". Same for CMAKE_CXX_FLAGS, and +CMAKE_Fortran_FLAGS.

  • +
  • Rebuild MAD-X in Debug mode (where these optimizations are disabled by +default)

  • +
  • Rebuild MAD-X as shared object: -DBUILD_SHARED_LIBS=ON (also remove +-fvisibility or change to protected), and run setup.py with +export SHARED=1.

  • +
  • use a manylinux build of cpymad

  • +
+

See also cpymad#79.

+
+
+

ImportError: undefined symbol: dgelsd_

+

Message:

+
ImportError: [...]/cpymad/libmadx.so: undefined symbol: dgelsd_
+
+
+

This message is the result of linking cpymad’s libmadx extension module +without a required dependency. In the specific case above, it means that MAD-X +was built with BLAS/LAPACK, but cpymad was not linked against these libraries. +The cpymad setup currently has no mechanism to detect with which libraries +MAD-X was built and assumes by default only some standard libraries.

+

Possible solutions are either rebuilding MAD-X without BLAS/LAPACK, or passing +appropriate libraries during the cpymad build step. The latter can be done by +through environment variables:

+
export BLAS=1
+export LAPACK=1
+pip install .
+
+
+

Or by passing linker flags to the setup.py build_ext command manually:

+
python setup.py build_ext -lblas -llapack
+
+
+
+
+

ImportError: libmadx.so

+

Message:

+
ImportError: libmadx.so: cannot open shared object file: No such file or directory
+
+
+

This error can have multiple causes. It often means that cpymad is linked +against one or more dynamic libraries that could not be found at runtime. +Reasons may be that the MAD-X installation was moved or removed after building +cpymad.

+

A possible solution is to use a permanent installation directory for MAD-X and +specify this during the build:

+
export MADXDIR=<madx-install-prefix>
+pip install .
+
+
+

Another possible solution is to specify the appropriate RPATH to the setup +script when building:

+
python setup.py build_ext --rpath=<rpath>
+python setup.py install
+
+
+

Here, <madx-install-prefix> is the base folder containing the subfolders +bin, include, lib of the MAD-X build and <rpath> contains the +dynamic library files.

+

If this does not work, you can set the LD_LIBRARY_PATH (or +DYLD_LIBRARY_PATH on OSX) environment variable before running pymad, for +example:

+
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/.local/lib/
+
+
+
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/installation/unix.html b/installation/unix.html new file mode 100644 index 00000000..1426bbd8 --- /dev/null +++ b/installation/unix.html @@ -0,0 +1,16 @@ + + + + + + + +

This page has moved.

+

If you are not getting redirected please + click here to continue.

+ + diff --git a/installation/windows.html b/installation/windows.html new file mode 100644 index 00000000..240c71d5 --- /dev/null +++ b/installation/windows.html @@ -0,0 +1,350 @@ + + + + + + + Windows — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

Windows

+

cpymad is linked against a library version of MAD-X, which means that in order +to build cpymad you first have to compile MAD-X from source. The official +madx executable is not sufficient. These steps are described in the +following subsections:

+ +
+

Setup environment

+

Setting up a functional build environment requires more effort on windows than +on other platforms, and there are many pitfalls if not using the right +compiler toolchain (such as linking against DLLs that are not present on most +target systems).

+

We recommend that you install conda. It has proven to be a reliable tool +for this job. Specifically, I recommend getting Miniconda; anaconda should +work too, but I wouldn’t recommend it because it ships many unnecessary +components.

+

Note that while conda is used to setup a consistent environment for the build +process, the generated cpymad build will be usable with other python +distributions as well.

+

Install build tools:

+

After installing conda, open the conda command prompt.

+

We show the commands for the case of working inside a cmd.exe terminal +(batch). If you prefer to work with powershell or bash on msys2, the workflow +(commands/arguments) will be mostly the same, with the only exception that you +have to adapt the syntax accordingly in some places.

+

Now create a build environment with cmake and setup the MinGW compiler +toolchain:

+
conda create -n buildenv
+conda activate buildenv
+
+conda install -c anaconda cmake
+conda install -c msys2 m2w64-toolchain
+
+
+

Get the sources:

+

Now download and extract the latest MAD-X release and cpymad release +side by side.

+

Alternatively, use git if you want to build a development version from local +checkout (unstable):

+
conda install git
+git clone https://github.com/MethodicalAcceleratorDesign/MAD-X
+git clone https://github.com/hibtc/cpymad
+
+
+
+
+

Build MAD-X

+

There are two major alternatives how to build MAD-X:

+
    +
  • I recommend to build MAD-X as a static library as described below. This +way, you won’t need to carry any .dll files around and you won’t run +into version problems when having a multiple MAD-X library builds around.

  • +
  • However, in some cases it may be easier to link cpymad dynamically against +MAD-X, i.e. using a DLL. This comes at the cost of having to redistribute +the madx.dll along. The choice is yours.

  • +
+

Note that if you’re planning on using MSVC to build the cpymad extension later +on, you have to build MAD-X as shared library (DLL). With MinGW (recommended), +both build types are supported.

+

In the following, we show the commands for the static build.

+

In the build environment, type:

+
mkdir MAD-X\build
+cd MAD-X\build
+
+cmake .. -G "MinGW Makefiles" ^
+    -DBUILD_SHARED_LIBS=OFF ^
+    -DMADX_STATIC=ON ^
+    -DCMAKE_INSTALL_PREFIX="../dist"
+
+cmake --build . --target install
+
+
+
+

Note

+

For shared library builds, instead use -DBUILD_SHARED_LIBS=ON.

+
+

If all went well the last command will have installed binaries and library +files to the MAD-X\dist subfolder.

+

Save the path to this install directory in the MADXDIR environment +variable. This variable will be used later by the setup.py script to +locate the MAD-X headers and library, for example:

+
set "MADXDIR=C:\Users\<....>\MAD-X\dist"
+
+
+

Also, set the following variables according to the flags passed to the cmake +command above:

+
set STATIC=1    # if -DMADX_STATIC=ON
+set SHARED=1    # if -DBUILD_SHARED_LIBS=ON
+
+
+
+
+

Build cpymad

+
+

Using MinGW

+

For building cpymad you can simply reuse the build environment with the MinGW +installation from above, and now also install the targeted python version into +the build environment, e.g.:

+
conda install python=3.7 wheel cython
+
+
+
+

Note

+

If you want to build wheels for multiple python versions, just create a +build environment for each target version, and don’t forget to install the +same version of the m2w64 compiler toolchain.

+
+

Now invoke the following command, which will cythonize the .pyx cython +module to .c code as a side effect:

+
python setup.py build_py
+
+
+

Now comes the tricky part: we will have to manually build the C extension +using gcc, because setuptools doesn’t know how to properly use our MinGW.

+

First set a few environment variables corresponding to the target platform +and python version:

+
set py_ver=37
+set file_tag=cp37-win_amd64
+set dir_tag=win-amd64-cpython-37
+
+
+

On python 3.6 or earlier use the form set dir_tag=win-amd64-3.6 instead.

+

With these values set, you should be able to copy-paste the following +commands:

+
set tempdir=build\temp.%dir_tag%\Release\src\cpymad
+set libdir=build\lib.%dir_tag%\cpymad
+
+mkdir %tempdir%
+mkdir %libdir%
+
+call %gcc% -mdll -O -Wall -DMS_WIN64 ^
+    -I %MADXDIR%\include ^
+    -I %pythondir%\include ^
+    -c src/cpymad/libmadx.c ^
+    -o %tempdir%\libmadx.obj ^
+    -std=gnu99
+
+call %gcc% -shared -s ^
+    %tempdir%\libmadx.obj ^
+    -L %MADXDIR%\lib ^
+    -lmadx -lDISTlib -lptc -lgc-lib -lstdc++ -lgfortran ^
+    -lquadmath %pythondir%\python%py_ver%.dll -lmsvcr100 ^
+    -o %libdir%\libmadx.%file_tag%.pyd
+
+
+

For old versions of MAD-X, leave out -lDISTlib from the second gcc call.

+

If this succeeds, you have most of the work behind you.

+

At this point, you may want to check the built .pyd file with Dependency +Walker to verify that it depends only on system dependencies (except for +pythonXY.dll, and in the case of dynamic linking madx.dll).

+

We now proceed to build a so called wheel. Wheels are zip archives containing +all the files ready for installation, as well as some metadata such as version +numbers etc. The wheel can be built as follows:

+
python setup.py bdist_wheel
+
+
+

The .whl file is named after the package and its target platform. This +file can now be used for installation on this or any other machine running the +same operating system and python version. Install as follows:

+
pip install dist\cpymad-*.whl
+
+
+

If you plan on changing cpymad code, do the following instead:

+
pip install -e .
+
+
+

Finally, do a quick check that your cpymad installation is working by typing +the following:

+
python -c "import cpymad.libmadx as l; l.start()"
+
+
+

The MAD-X startup banner should appear. You can also run more tests as +follows:

+
python test\test_madx.py
+python test\test_util.py
+
+
+

Congratulations, you are now free to delete the MAD-X and cpymad folders (but +keep your wheel!).

+
+
+

Using Visual Studio

+

Python’s official binaries are all compiled with the Visual C compiler and +therefore this is the only officially supported method to build python C +extensions on windows.

+

It is possible to build the cpymad C extension with Visual Studio, but there +is a good reason that the above guide doesn’t use it:

+

Visual Studio doesn’t include a Fortran compiler which means that you still +have to build MAD-X as described. Also, you have to build MAD-X as a shared +library, because the static library created by MinGW most likely won’t be +compatible with the Visual C compiler.

+

First, look up the correct Visual Studio version and download and install +it directly from microsoft. It is possible that older versions are not +supported anymore.

+

After that, activate the Visual Studio tools by calling vcvarsall.bat. +Depending on your Visual Studio version and install path, this might look like +this:

+
call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"
+
+
+

Once you’ve accomplished that, the steps to build cpymad should actually be +relatively simple (simpler than using MinGW in conda):

+
conda create -n py37 python=3.7
+conda activate py37
+conda install wheel cython
+python setup.py build_ext --shared --madxdir=%MADXDIR%
+
+
+
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/known-issues.html b/known-issues.html new file mode 100644 index 00000000..6fb0c7db --- /dev/null +++ b/known-issues.html @@ -0,0 +1,122 @@ + + + + + + + Known issues — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

Known issues

+
    +
  • The MAD-X command output may sometimes appear delayed and in wrong order. +This is a problem with mixing output from C and Fortran code. On linux it +can be fixed by setting export GFORTRAN_UNBUFFERED_PRECONNECTED=y in the +environment. On windows, this can be tried as well, but is not reliable to +our knowledge.

  • +
  • the MAD-X USE command invalidates table row names. Therefore, using +Table.dframe() is unsafe after USE should be avoided, unless +manually specifying an index, e.g. Table.dframe(index='name'), see #93.

  • +
+
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/objects.inv b/objects.inv new file mode 100644 index 00000000..74f728b6 Binary files /dev/null and b/objects.inv differ diff --git a/py-modindex.html b/py-modindex.html new file mode 100644 index 00000000..689f1fd1 --- /dev/null +++ b/py-modindex.html @@ -0,0 +1,145 @@ + + + + + + Python Module Index — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+
    +
  • + +
  • +
  • +
+
+
+
+
+ + +

Python Module Index

+ +
+ c +
+ + + + + + + + + + + + + + + + + + + +
 
+ c
+ cpymad +
    + cpymad.libmadx +
    + cpymad.madx +
    + cpymad.types +
    + cpymad.util +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/search.html b/search.html new file mode 100644 index 00000000..4d4d8591 --- /dev/null +++ b/search.html @@ -0,0 +1,125 @@ + + + + + + Search — cpymad 1.14.1 documentation + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+
    +
  • + +
  • +
  • +
+
+
+
+
+ + + + +
+ +
+ +
+
+
+ +
+ +
+

© Copyright 2014-2021, T. Gläßle,2014-2019, HIT Betriebs GmbH,2011-2013 Y.I. Levinsen, K. Fuchsberger (CERN).

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/searchindex.js b/searchindex.js new file mode 100644 index 00000000..b5b8a515 --- /dev/null +++ b/searchindex.js @@ -0,0 +1 @@ +Search.setIndex({"docnames": ["automod/cpymad.libmadx.apply_table_selections", "automod/cpymad.libmadx.eval", "automod/cpymad.libmadx.finish", "automod/cpymad.libmadx.get_active_sequence_name", "automod/cpymad.libmadx.get_base_type_names", "automod/cpymad.libmadx.get_beam", "automod/cpymad.libmadx.get_beam_names", "automod/cpymad.libmadx.get_current_beam", "automod/cpymad.libmadx.get_defined_command", "automod/cpymad.libmadx.get_defined_command_names", "automod/cpymad.libmadx.get_element", "automod/cpymad.libmadx.get_element_count", "automod/cpymad.libmadx.get_element_index", "automod/cpymad.libmadx.get_element_index_by_position", "automod/cpymad.libmadx.get_element_name", "automod/cpymad.libmadx.get_element_names", "automod/cpymad.libmadx.get_element_positions", "automod/cpymad.libmadx.get_expanded_element", "automod/cpymad.libmadx.get_expanded_element_count", "automod/cpymad.libmadx.get_expanded_element_index", "automod/cpymad.libmadx.get_expanded_element_index_by_position", "automod/cpymad.libmadx.get_expanded_element_name", "automod/cpymad.libmadx.get_expanded_element_names", "automod/cpymad.libmadx.get_expanded_element_positions", "automod/cpymad.libmadx.get_global_element", "automod/cpymad.libmadx.get_global_element_count", "automod/cpymad.libmadx.get_global_element_index", "automod/cpymad.libmadx.get_global_element_name", "automod/cpymad.libmadx.get_globals", "automod/cpymad.libmadx.get_options", "automod/cpymad.libmadx.get_sequence_beam", "automod/cpymad.libmadx.get_sequence_count", "automod/cpymad.libmadx.get_sequence_names", "automod/cpymad.libmadx.get_sequence_twiss_table_name", "automod/cpymad.libmadx.get_table_column", "automod/cpymad.libmadx.get_table_column_count", "automod/cpymad.libmadx.get_table_column_names", "automod/cpymad.libmadx.get_table_count", "automod/cpymad.libmadx.get_table_names", "automod/cpymad.libmadx.get_table_row", "automod/cpymad.libmadx.get_table_row_count", "automod/cpymad.libmadx.get_table_row_names", "automod/cpymad.libmadx.get_table_selected_rows", "automod/cpymad.libmadx.get_table_selected_rows_mask", "automod/cpymad.libmadx.get_table_summary", "automod/cpymad.libmadx.get_var", "automod/cpymad.libmadx.get_var_type", "automod/cpymad.libmadx.get_version_date", "automod/cpymad.libmadx.get_version_number", "automod/cpymad.libmadx.getcwd", "automod/cpymad.libmadx.input", "automod/cpymad.libmadx.is_sequence_expanded", "automod/cpymad.libmadx.is_started", "automod/cpymad.libmadx.num_globals", "automod/cpymad.libmadx.sequence_exists", "automod/cpymad.libmadx.start", "automod/cpymad.libmadx.table_exists", "automod/cpymad.madx.ArrayAttribute", "automod/cpymad.madx.AttrDict", "automod/cpymad.madx.BaseTypeMap", "automod/cpymad.madx.Command", "automod/cpymad.madx.CommandLog", "automod/cpymad.madx.CommandMap", "automod/cpymad.madx.Element", "automod/cpymad.madx.ElementList", "automod/cpymad.madx.ExpandedElementList", "automod/cpymad.madx.GlobalElementList", "automod/cpymad.madx.Madx", "automod/cpymad.madx.Metadata", "automod/cpymad.madx.Sequence", "automod/cpymad.madx.SequenceMap", "automod/cpymad.madx.Table", "automod/cpymad.madx.TableMap", "automod/cpymad.madx.TwissFailed", "automod/cpymad.madx.VarList", "automod/cpymad.madx.VarParamList", "automod/cpymad.madx.Version", "automod/cpymad.madx.metadata", "automod/cpymad.types.AlignError", "automod/cpymad.types.Constraint", "automod/cpymad.types.FieldError", "automod/cpymad.types.PARAM_TYPE_CONSTRAINT", "automod/cpymad.types.PARAM_TYPE_DOUBLE", "automod/cpymad.types.PARAM_TYPE_DOUBLE_ARRAY", "automod/cpymad.types.PARAM_TYPE_INTEGER", "automod/cpymad.types.PARAM_TYPE_INTEGER_ARRAY", "automod/cpymad.types.PARAM_TYPE_LOGICAL", "automod/cpymad.types.PARAM_TYPE_LOGICAL_ARRAY", "automod/cpymad.types.PARAM_TYPE_STRING", "automod/cpymad.types.PARAM_TYPE_STRING_ARRAY", "automod/cpymad.types.Parameter", "automod/cpymad.types.PhaseError", "automod/cpymad.types.Range", "automod/cpymad.types.VAR_TYPE_CONST", "automod/cpymad.types.VAR_TYPE_DEFERRED", "automod/cpymad.types.VAR_TYPE_DIRECT", "automod/cpymad.types.VAR_TYPE_STRING", "automod/cpymad.util.ChangeDirectory", "automod/cpymad.util.check_expression", "automod/cpymad.util.format_cmdpar", "automod/cpymad.util.format_command", "automod/cpymad.util.format_param", "automod/cpymad.util.is_identifier", "automod/cpymad.util.mad_quote", "automod/cpymad.util.name_from_internal", "automod/cpymad.util.name_to_internal", "automod/cpymad.util.temp_filename", "building", "cpymad/index", "cpymad/libmadx", "cpymad/madx", "cpymad/types", "cpymad/util", "getting-started", "index", "installation", "installation/linux", "installation/macos", "installation/troubleshooting", "installation/windows", "known-issues"], "filenames": ["automod/cpymad.libmadx.apply_table_selections.rst", "automod/cpymad.libmadx.eval.rst", "automod/cpymad.libmadx.finish.rst", "automod/cpymad.libmadx.get_active_sequence_name.rst", "automod/cpymad.libmadx.get_base_type_names.rst", "automod/cpymad.libmadx.get_beam.rst", "automod/cpymad.libmadx.get_beam_names.rst", "automod/cpymad.libmadx.get_current_beam.rst", "automod/cpymad.libmadx.get_defined_command.rst", "automod/cpymad.libmadx.get_defined_command_names.rst", "automod/cpymad.libmadx.get_element.rst", "automod/cpymad.libmadx.get_element_count.rst", "automod/cpymad.libmadx.get_element_index.rst", "automod/cpymad.libmadx.get_element_index_by_position.rst", "automod/cpymad.libmadx.get_element_name.rst", "automod/cpymad.libmadx.get_element_names.rst", "automod/cpymad.libmadx.get_element_positions.rst", "automod/cpymad.libmadx.get_expanded_element.rst", "automod/cpymad.libmadx.get_expanded_element_count.rst", "automod/cpymad.libmadx.get_expanded_element_index.rst", "automod/cpymad.libmadx.get_expanded_element_index_by_position.rst", "automod/cpymad.libmadx.get_expanded_element_name.rst", "automod/cpymad.libmadx.get_expanded_element_names.rst", "automod/cpymad.libmadx.get_expanded_element_positions.rst", "automod/cpymad.libmadx.get_global_element.rst", "automod/cpymad.libmadx.get_global_element_count.rst", "automod/cpymad.libmadx.get_global_element_index.rst", "automod/cpymad.libmadx.get_global_element_name.rst", "automod/cpymad.libmadx.get_globals.rst", "automod/cpymad.libmadx.get_options.rst", "automod/cpymad.libmadx.get_sequence_beam.rst", "automod/cpymad.libmadx.get_sequence_count.rst", "automod/cpymad.libmadx.get_sequence_names.rst", "automod/cpymad.libmadx.get_sequence_twiss_table_name.rst", "automod/cpymad.libmadx.get_table_column.rst", "automod/cpymad.libmadx.get_table_column_count.rst", "automod/cpymad.libmadx.get_table_column_names.rst", "automod/cpymad.libmadx.get_table_count.rst", "automod/cpymad.libmadx.get_table_names.rst", "automod/cpymad.libmadx.get_table_row.rst", "automod/cpymad.libmadx.get_table_row_count.rst", "automod/cpymad.libmadx.get_table_row_names.rst", "automod/cpymad.libmadx.get_table_selected_rows.rst", "automod/cpymad.libmadx.get_table_selected_rows_mask.rst", "automod/cpymad.libmadx.get_table_summary.rst", "automod/cpymad.libmadx.get_var.rst", "automod/cpymad.libmadx.get_var_type.rst", "automod/cpymad.libmadx.get_version_date.rst", "automod/cpymad.libmadx.get_version_number.rst", "automod/cpymad.libmadx.getcwd.rst", "automod/cpymad.libmadx.input.rst", "automod/cpymad.libmadx.is_sequence_expanded.rst", "automod/cpymad.libmadx.is_started.rst", "automod/cpymad.libmadx.num_globals.rst", "automod/cpymad.libmadx.sequence_exists.rst", "automod/cpymad.libmadx.start.rst", "automod/cpymad.libmadx.table_exists.rst", "automod/cpymad.madx.ArrayAttribute.rst", "automod/cpymad.madx.AttrDict.rst", "automod/cpymad.madx.BaseTypeMap.rst", "automod/cpymad.madx.Command.rst", "automod/cpymad.madx.CommandLog.rst", "automod/cpymad.madx.CommandMap.rst", "automod/cpymad.madx.Element.rst", "automod/cpymad.madx.ElementList.rst", "automod/cpymad.madx.ExpandedElementList.rst", "automod/cpymad.madx.GlobalElementList.rst", "automod/cpymad.madx.Madx.rst", "automod/cpymad.madx.Metadata.rst", "automod/cpymad.madx.Sequence.rst", "automod/cpymad.madx.SequenceMap.rst", "automod/cpymad.madx.Table.rst", "automod/cpymad.madx.TableMap.rst", "automod/cpymad.madx.TwissFailed.rst", "automod/cpymad.madx.VarList.rst", "automod/cpymad.madx.VarParamList.rst", "automod/cpymad.madx.Version.rst", "automod/cpymad.madx.metadata.rst", "automod/cpymad.types.AlignError.rst", "automod/cpymad.types.Constraint.rst", "automod/cpymad.types.FieldError.rst", "automod/cpymad.types.PARAM_TYPE_CONSTRAINT.rst", "automod/cpymad.types.PARAM_TYPE_DOUBLE.rst", "automod/cpymad.types.PARAM_TYPE_DOUBLE_ARRAY.rst", "automod/cpymad.types.PARAM_TYPE_INTEGER.rst", "automod/cpymad.types.PARAM_TYPE_INTEGER_ARRAY.rst", "automod/cpymad.types.PARAM_TYPE_LOGICAL.rst", "automod/cpymad.types.PARAM_TYPE_LOGICAL_ARRAY.rst", "automod/cpymad.types.PARAM_TYPE_STRING.rst", "automod/cpymad.types.PARAM_TYPE_STRING_ARRAY.rst", "automod/cpymad.types.Parameter.rst", "automod/cpymad.types.PhaseError.rst", "automod/cpymad.types.Range.rst", "automod/cpymad.types.VAR_TYPE_CONST.rst", "automod/cpymad.types.VAR_TYPE_DEFERRED.rst", "automod/cpymad.types.VAR_TYPE_DIRECT.rst", "automod/cpymad.types.VAR_TYPE_STRING.rst", "automod/cpymad.util.ChangeDirectory.rst", "automod/cpymad.util.check_expression.rst", "automod/cpymad.util.format_cmdpar.rst", "automod/cpymad.util.format_command.rst", "automod/cpymad.util.format_param.rst", "automod/cpymad.util.is_identifier.rst", "automod/cpymad.util.mad_quote.rst", "automod/cpymad.util.name_from_internal.rst", "automod/cpymad.util.name_to_internal.rst", "automod/cpymad.util.temp_filename.rst", "building.rst", "cpymad/index.rst", "cpymad/libmadx.rst", "cpymad/madx.rst", "cpymad/types.rst", "cpymad/util.rst", "getting-started.rst", "index.rst", "installation.rst", "installation/linux.rst", "installation/macos.rst", "installation/troubleshooting.rst", "installation/windows.rst", "known-issues.rst"], "titles": ["apply_table_selections", "eval", "finish", "get_active_sequence_name", "get_base_type_names", "get_beam", "get_beam_names", "get_current_beam", "get_defined_command", "get_defined_command_names", "get_element", "get_element_count", "get_element_index", "get_element_index_by_position", "get_element_name", "get_element_names", "get_element_positions", "get_expanded_element", "get_expanded_element_count", "get_expanded_element_index", "get_expanded_element_index_by_position", "get_expanded_element_name", "get_expanded_element_names", "get_expanded_element_positions", "get_global_element", "get_global_element_count", "get_global_element_index", "get_global_element_name", "get_globals", "get_options", "get_sequence_beam", "get_sequence_count", "get_sequence_names", "get_sequence_twiss_table_name", "get_table_column", "get_table_column_count", "get_table_column_names", "get_table_count", "get_table_names", "get_table_row", "get_table_row_count", "get_table_row_names", "get_table_selected_rows", "get_table_selected_rows_mask", "get_table_summary", "get_var", "get_var_type", "get_version_date", "get_version_number", "getcwd", "input", "is_sequence_expanded", "is_started", "num_globals", "sequence_exists", "start", "table_exists", "ArrayAttribute", "AttrDict", "BaseTypeMap", "Command", "CommandLog", "CommandMap", "Element", "ElementList", "ExpandedElementList", "GlobalElementList", "Madx", "Metadata", "Sequence", "SequenceMap", "Table", "TableMap", "TwissFailed", "VarList", "VarParamList", "Version", "metadata", "AlignError", "Constraint", "FieldError", "PARAM_TYPE_CONSTRAINT", "PARAM_TYPE_DOUBLE", "PARAM_TYPE_DOUBLE_ARRAY", "PARAM_TYPE_INTEGER", "PARAM_TYPE_INTEGER_ARRAY", "PARAM_TYPE_LOGICAL", "PARAM_TYPE_LOGICAL_ARRAY", "PARAM_TYPE_STRING", "PARAM_TYPE_STRING_ARRAY", "Parameter", "PhaseError", "Range", "VAR_TYPE_CONST", "VAR_TYPE_DEFERRED", "VAR_TYPE_DIRECT", "VAR_TYPE_STRING", "ChangeDirectory", "check_expression", "format_cmdpar", "format_command", "format_param", "is_identifier", "mad_quote", "name_from_internal", "name_to_internal", "temp_filename", "Building from source", "API Reference", "cpymad.libmadx", "cpymad.madx", "cpymad.types", "cpymad.util", "Getting Started", "cpymad", "Installation", "Linux", "MacOS (experimental)", "Troubleshooting", "Windows", "Known issues"], "terms": {"5": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120], "09": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120], "00": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120], "table_nam": [0, 34, 35, 36, 39, 40, 41, 42, 43, 44, 56], "appli": [0, 117], "select": [0, 35, 36, 42, 43, 71, 113], "deselect": 0, "command": [0, 8, 9, 30, 34, 50, 61, 63, 67, 90, 99, 100, 101, 110, 114, 116, 117, 118, 119, 120], "tabl": [0, 33, 34, 35, 36, 37, 38, 40, 42, 43, 44, 56, 67, 69, 72, 110, 120], "column": [0, 34, 35, 36, 39, 44, 67, 71, 113], "row": [0, 34, 39, 40, 41, 42, 43, 71, 113, 120], "need": [0, 69, 107, 113, 116, 119], "replac": 0, "miss": 0, "out_tabl": 0, "call": [0, 52, 67, 71, 90, 113, 119], "initi": [0, 52, 55, 100, 113], "t": [0, 107, 115, 116, 117, 118, 119], "row_out": 0, "col_out": 0, "twiss": [0, 33, 60, 67, 69, 71, 100, 113], "wa": [0, 52, 118], "perform": [0, 1, 60, 63, 67, 107], "without": [0, 50, 52, 67, 109, 113, 116, 118], "filenam": [0, 61, 106], "express": [1, 67, 98, 113], "evalu": [1, 67, 113], "an": [1, 13, 20, 58, 59, 60, 62, 63, 66, 67, 69, 70, 71, 72, 74, 75, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 93, 94, 95, 96, 99, 107, 113, 116, 117, 118, 120], "return": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 60, 63, 64, 65, 67, 69, 71, 74, 78, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 98, 99, 100, 101, 102, 103, 113], "result": [1, 67, 69, 71, 113, 118], "doubl": [1, 67], "paramet": [1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 27, 30, 33, 34, 35, 36, 44, 45, 50, 51, 54, 56, 67, 71, 97, 98, 99, 100, 101, 111, 113], "str": [1, 3, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 26, 27, 30, 33, 34, 35, 36, 44, 47, 48, 49, 50, 51, 54, 56, 67, 71, 97, 98, 99, 100, 101, 103, 104, 105], "symbol": [1, 117], "type": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 67, 71, 99, 100, 101, 102, 103, 108, 114, 115, 119], "float": [1, 13, 20, 67, 81, 82, 83, 84, 85, 86, 87, 88, 89, 93, 94, 95, 96, 113], "numer": [1, 34, 67], "valu": [1, 5, 8, 29, 39, 44, 45, 57, 58, 59, 60, 62, 63, 64, 65, 66, 67, 70, 71, 72, 74, 75, 78, 79, 80, 90, 91, 92, 99, 101, 103, 113, 119], "note": [1, 17, 19, 67, 98, 113, 114, 116, 117, 119], "thi": [1, 17, 19, 34, 60, 63, 67, 69, 71, 74, 81, 82, 83, 84, 85, 86, 87, 88, 89, 93, 94, 95, 96, 98, 101, 104, 107, 109, 110, 113, 114, 115, 116, 117, 118, 119, 120], "function": [1, 17, 67, 90, 97, 98, 104, 108, 113, 118, 119], "doe": [1, 60, 63, 67, 74, 101, 113, 114, 116, 118], "rigor": 1, "input": [1, 67, 90], "valid": [1, 71, 81, 82, 83, 84, 85, 86, 87, 88, 89, 93, 94, 95, 96, 98, 101, 102], "It": [1, 67, 101, 113, 118, 119], "us": [1, 34, 67, 69, 71, 90, 101, 104, 106, 107, 109, 112, 113, 116, 117, 118, 120], "noth": 1, "mad": [1, 2, 5, 6, 8, 9, 34, 47, 48, 50, 52, 55, 60, 61, 63, 66, 67, 68, 69, 71, 74, 75, 77, 79, 90, 98, 99, 100, 101, 102, 104, 107, 109, 110, 111, 114, 115, 120], "x": [1, 2, 5, 6, 8, 9, 34, 47, 48, 50, 52, 55, 60, 61, 63, 66, 67, 68, 69, 71, 74, 75, 77, 79, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 93, 94, 95, 96, 98, 99, 100, 101, 102, 104, 107, 109, 110, 111, 114, 115, 120], "builtin": [1, 113], "rather": [1, 113], "incompet": 1, "error": [1, 50, 67, 116], "check": [1, 51, 52, 54, 56, 69, 98, 102, 113, 115, 119], "mean": [1, 81, 82, 83, 84, 85, 86, 87, 88, 89, 93, 94, 95, 96, 109, 113, 115, 116, 117, 118, 119], "invalid": [1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 30, 33, 35, 36, 51, 71, 120], "can": [1, 67, 71, 81, 82, 83, 84, 85, 86, 87, 88, 89, 93, 94, 95, 96, 107, 113, 116, 117, 118, 119, 120], "lead": [1, 71], "program": [1, 119], "crash": [1, 109], "If": [1, 60, 63, 71, 74, 81, 82, 83, 84, 85, 86, 87, 88, 89, 93, 94, 95, 96, 113, 115, 116, 117, 118, 119], "you": [1, 34, 67, 113, 116, 117, 118, 119], "re": [1, 116, 119], "look": [1, 116, 117, 119], "more": [1, 30, 67, 113, 116, 117, 118, 119], "secur": 1, "see": [1, 105, 107, 113, 114, 118, 120], "cpymad": [1, 67, 77, 98, 107, 108, 113, 115, 118], "util": [1, 108, 114], "check_express": 1, "cleanup": 2, "none": [2, 55, 58, 59, 60, 62, 63, 66, 67, 70, 71, 72, 74, 75, 79, 90], "get": [3, 7, 14, 15, 16, 21, 22, 23, 28, 29, 30, 31, 32, 33, 34, 35, 36, 44, 45, 46, 47, 48, 58, 59, 60, 62, 63, 66, 67, 69, 70, 71, 72, 74, 75, 106, 114, 119], "name": [3, 4, 6, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 26, 27, 28, 30, 32, 33, 34, 35, 36, 38, 41, 44, 45, 46, 51, 54, 56, 57, 60, 63, 64, 65, 66, 67, 69, 71, 90, 97, 99, 100, 102, 104, 105, 113, 119, 120], "activ": [3, 67, 69, 70, 116, 119], "sequenc": [3, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 30, 31, 32, 33, 51, 54, 57, 60, 64, 67, 70, 71, 100, 104, 110], "rais": [3, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 27, 30, 33, 34, 35, 36, 51, 57, 60, 63, 64, 65, 66, 71, 74, 78, 80, 91, 92, 98], "runtimeerror": [3, 30, 33, 34], "i": [3, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 27, 30, 33, 34, 35, 36, 51, 57, 60, 63, 64, 65, 66, 67, 69, 71, 74, 78, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 91, 92, 93, 94, 95, 96, 98, 99, 101, 102, 104, 107, 109, 110, 113, 114, 116, 117, 118, 119, 120], "list": [4, 6, 9, 14, 15, 16, 21, 22, 23, 26, 28, 32, 36, 38, 41, 42, 67, 69, 71, 100, 113, 118], "element": [4, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 57, 64, 65, 66, 67, 69, 71, 90, 104, 105, 110], "base": [4, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 74, 75, 76, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 100, 118], "beam_nam": 5, "beam": [5, 6, 7, 30, 67, 69, 71, 113], "dict": [5, 7, 8, 10, 17, 24, 29, 30, 39, 44, 67, 71, 113], "properti": [7, 30, 113], "current": [7, 17, 29, 31, 32, 49, 67, 97, 113, 117, 118], "default": [7, 58, 59, 60, 62, 63, 66, 67, 70, 71, 72, 74, 75, 81, 82, 83, 84, 85, 86, 87, 88, 89, 93, 94, 95, 96, 113, 116, 118], "command_nam": 8, "sequence_nam": [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 30, 33, 51, 54, 64, 65], "element_index": [10, 14, 17, 21, 24, 27], "request": [10, 17, 24, 34], "origin": [10, 11, 12, 13, 113], "int": [10, 11, 12, 13, 14, 17, 18, 19, 20, 21, 24, 25, 26, 27, 31, 35, 37, 40, 46, 53, 81, 82, 83, 84, 85, 86, 87, 88, 89, 93, 94, 95, 96], "index": [10, 12, 13, 14, 17, 19, 20, 21, 24, 26, 27, 41, 57, 64, 65, 66, 71, 78, 80, 91, 92, 114, 120], "specifi": [10, 12, 13, 14, 17, 19, 20, 21, 24, 26, 34, 60, 63, 64, 65, 66, 71, 74, 116, 117, 118, 120], "valueerror": [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 30, 33, 34, 35, 36, 51, 57, 64, 65, 66, 71, 78, 80, 91, 92, 98], "indexerror": [10, 14, 17, 21, 24, 27], "out": [10, 14, 17, 21, 24, 27, 116, 117, 118, 119], "rang": [10, 14, 17, 21, 24, 27, 67, 71, 111], "number": [11, 18, 25, 31, 35, 37, 40, 41, 48, 53, 57, 64, 65, 78, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 91, 92, 93, 94, 95, 96, 98, 119], "element_nam": [12, 19, 26, 69, 104, 105], "posit": [13, 16, 20, 23, 64, 65, 113], "": [13, 20, 58, 59, 60, 62, 63, 64, 65, 66, 70, 71, 72, 74, 75, 113, 115, 118, 119], "coordin": [13, 20], "1": [13, 19, 26, 46, 60, 63, 67, 78, 80, 84, 91, 92, 95, 104, 105, 113, 114, 116, 118, 119], "found": [13, 19, 26, 34, 60, 63, 64, 65, 66, 74, 116, 117], "all": [14, 15, 16, 21, 22, 23, 28, 31, 32, 34, 36, 38, 39, 41, 60, 63, 67, 70, 71, 72, 74, 109, 113, 116, 118, 119], "specif": [14, 15, 16, 21, 22, 23, 118, 119], "expand": [17, 18, 19, 20, 24, 51, 67, 69, 113], "mai": [17, 42, 70, 71, 109, 114, 116, 117, 118, 119, 120], "beyond": 17, "end": [17, 109], "do": [17, 107, 113, 116, 117, 119], "so": [17, 117, 119], "brute": 19, "forc": 19, "linear": 19, "time": [19, 113], "algorithm": 19, "therefor": [19, 101, 119, 120], "recommend": [19, 57, 116, 118, 119], "frequent": 19, "execut": [19, 50, 113, 116, 117, 118, 119], "global": [25, 26, 28, 45, 53, 66, 67, 74, 75, 109, 118], "visibl": [25, 67, 118], "variabl": [28, 45, 46, 53, 67, 74, 75, 108, 113, 116, 117, 118, 119], "option": [29, 57, 67, 100, 113, 116, 117, 118], "associ": [30, 69], "set": [30, 58, 59, 60, 62, 63, 66, 69, 70, 71, 72, 74, 75, 113, 116, 117, 118, 119, 120], "some": [30, 60, 63, 74, 113, 118, 119], "ha": [30, 34, 50, 51, 52, 60, 63, 67, 69, 74, 79, 113, 114, 116, 117, 118, 119], "memori": [31, 32, 37, 67, 70, 72, 113], "last": [33, 69, 71, 92, 119], "calcul": [33, 69], "given": [33, 60, 63, 67, 71, 74, 81, 82, 83, 84, 85, 86, 87, 88, 89, 93, 94, 95, 96, 98], "bool": [33, 35, 36, 50, 51, 52, 54, 56, 67, 102, 113], "column_nam": 34, "data": [34, 58, 60, 63, 67, 71, 104, 111, 113], "from": [34, 60, 61, 63, 67, 69, 71, 74, 81, 82, 83, 84, 85, 86, 87, 88, 89, 93, 94, 95, 96, 100, 101, 104, 105, 113, 114, 115, 116, 117, 118, 119, 120], "ndarrai": [34, 43, 71], "cannot": 34, "unknown": 34, "caution": [34, 109], "wrap": 34, "numpi": [34, 113], "arrai": [34, 67, 113], "copi": [34, 71, 119], "make": [34, 116, 117, 118], "sure": 34, "befor": [34, 71, 104, 116, 118], "invok": [34, 119], "ani": [34, 67, 104, 109, 119], "further": [34, 105, 109], "done": [34, 116, 118], "automat": 34, "libmadx": [34, 67, 71, 72, 108, 114, 115, 119], "remot": 34, "servic": 34, "pickl": [34, 67], "serial": 34, "effect": [34, 119], "fals": [35, 36, 61, 67, 113], "consid": [35, 36, 109], "onli": [35, 36, 71, 98, 113, 115, 116, 118, 119], "exist": [37, 54, 56, 101, 113], "row_index": 39, "tupl": [39, 60, 63, 74, 78, 80, 91, 92, 113], "total": 40, "indic": [41, 42, 71], "everi": [41, 113], "empti": [42, 60, 63, 71, 74], "boolean": 43, "mask": 43, "which": [43, 71, 79, 99, 113, 116, 117, 118, 119], "ar": [43, 81, 82, 83, 84, 85, 86, 87, 88, 89, 93, 94, 95, 96, 104, 113, 115, 116, 117, 118, 119], "summari": [44, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 74, 75, 78, 80, 90, 91, 92], "map": [44, 60, 63, 66, 67, 70, 72, 74, 75, 110], "rtype": [46, 104, 105], "0": [46, 60, 78, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 91, 92, 93, 94, 95, 96, 113, 114, 116, 117, 119], "constant": 46, "direct": [46, 113], "2": [46, 60, 63, 67, 74, 78, 81, 82, 83, 84, 85, 86, 87, 88, 89, 93, 94, 95, 96, 104, 105, 113, 114, 118], "defer": [46, 113], "3": [46, 67, 78, 88, 96, 100, 113, 114, 116, 117, 119], "string": [46, 81, 82, 83, 84, 85, 86, 87, 88, 89, 93, 94, 95, 96, 100, 103, 104, 113], "releas": [47, 76, 113, 114, 116, 117, 119], "date": [47, 76, 113], "load": [47, 48, 71, 109, 118], "interpret": [47, 48, 50, 67, 81, 82, 83, 84, 85, 86, 87, 88, 89, 93, 94, 95, 96, 109, 110, 113, 114], "yyyi": 47, "mm": 47, "dd": 47, "format": [47, 98, 99, 101, 113], "version": [48, 67, 101, 109, 110, 114, 115, 116, 117, 118, 119], "full": [48, 114], "work": [49, 97, 109, 113, 116, 117, 118, 119], "directori": [49, 67, 97, 113, 116, 117, 119], "cmd": [50, 99, 100, 119], "pass": [50, 98, 104, 113, 116, 117, 118, 119], "one": [50, 71, 113, 118], "success": [50, 67, 115, 118], "statu": [50, 118], "whether": [50, 51, 52, 67, 113], "complet": [50, 67, 113, 116, 117], "alreadi": [51, 69], "been": [51, 52, 114, 118], "state": [51, 67, 109, 113], "start": [52, 57, 67, 78, 80, 91, 92, 114, 115, 118, 119], "match": [52, 67], "finish": 52, "true": [54, 56, 67, 69, 71, 98, 100, 113], "class": [57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 74, 75, 76, 78, 79, 80, 90, 91, 92, 97, 104, 105, 108, 113], "sourc": [57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 79, 90, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 114, 115, 116, 117, 119], "method": [57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 74, 75, 78, 80, 90, 91, 92, 113, 119], "document": [57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 74, 75, 78, 80, 90, 91, 92, 114], "count": [57, 64, 65, 78, 80, 91, 92], "integ": [57, 64, 65, 81, 82, 83, 84, 85, 86, 87, 88, 89, 93, 94, 95, 96], "occurr": [57, 64, 65, 78, 80, 91, 92], "stop": [57, 67, 78, 80, 91, 92], "first": [57, 71, 78, 80, 91, 92, 116, 117, 119], "present": [57, 60, 63, 74, 78, 80, 91, 92, 119], "support": [57, 113, 114, 119], "argument": [57, 67, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 93, 94, 95, 96, 99, 100, 113, 119], "_map": [58, 62, 66, 70, 71, 72, 75, 110], "k": [58, 59, 60, 62, 63, 66, 70, 71, 72, 74, 75], "d": [58, 59, 60, 62, 63, 66, 70, 71, 72, 74, 75, 78, 104, 117], "els": [58, 59, 60, 62, 63, 66, 70, 71, 72, 74, 75], "item": [58, 59, 60, 62, 63, 66, 70, 71, 72, 74, 75, 113], "like": [58, 59, 60, 62, 63, 66, 70, 71, 72, 74, 75, 113, 118, 119], "object": [58, 59, 60, 61, 62, 63, 66, 67, 68, 69, 70, 71, 72, 74, 75, 76, 77, 79, 90, 97, 113, 116, 118], "provid": [58, 59, 60, 62, 63, 66, 70, 71, 72, 74, 75, 113], "view": [58, 59, 60, 62, 63, 66, 70, 71, 72, 74, 75, 113], "kei": [58, 59, 60, 62, 63, 66, 70, 71, 72, 74, 75, 99, 101], "updat": [58, 60, 63, 67, 74, 114, 116], "arg": [58, 100], "kwarg": [58, 60, 63, 67, 100], "madx": [59, 60, 62, 63, 64, 65, 66, 69, 70, 74, 75, 77, 98, 108, 109, 113, 114, 116, 117, 119], "commandmap": [59, 110], "_mutablemap": [60, 74, 110], "raw": [60, 113, 117], "python": [60, 67, 111, 113, 114, 115, 116, 117, 118, 119], "interfac": [60, 67, 113], "issu": [60, 67, 114, 118], "usag": [60, 67], "exampl": [60, 67, 100, 104, 105, 113, 116, 117, 118, 119], "lebt": [60, 113], "titl": 60, "A": [60, 99, 113, 118], "meaning": 60, "phrase": 60, "betx": [60, 67, 100, 113], "attribut": [60, 63, 67, 69, 71, 74, 78, 80, 90, 91, 92, 101, 113], "cmdpar": [60, 63, 74], "def": [60, 63, 74], "__call__": [60, 61, 63, 67, 70, 90], "singl": [60, 61, 63, 67, 99, 101, 113], "clear": [60, 63, 74], "remov": [60, 63, 74, 114, 116, 117, 118], "clone": [60, 63, 113, 116, 117, 119], "assign": [60, 63], "correspond": [60, 63, 74, 104, 113, 115, 118, 119], "colon": [60, 63, 113], "syntax": [60, 63, 104, 113, 119], "e": [60, 63, 71, 74, 109, 113, 116, 117, 118, 119, 120], "g": [60, 63, 71, 113, 116, 117, 119, 120], "quadrupol": [60, 63, 113], "qp": [60, 63, 113], "l": [60, 63, 113, 115, 117, 118, 119], "translat": [60, 63, 113], "pop": [60, 63, 74], "v": [60, 63, 74], "otherwis": [60, 63, 74], "keyerror": [60, 63, 74], "popitem": [60, 63, 74], "pair": [60, 63, 74], "setdefault": [60, 63, 74], "also": [60, 63, 71, 74, 101, 114, 116, 117, 118, 119], "f": [60, 63, 74, 113], "iter": [60, 63, 74, 110], "lack": [60, 63, 74], "In": [60, 63, 71, 74, 113, 115, 116, 117, 118, 119], "either": [60, 63, 74, 79, 115, 118], "case": [60, 63, 67, 71, 74, 113, 115, 116, 118, 119], "follow": [60, 63, 74, 100, 107, 113, 115, 116, 117, 118, 119], "file": [61, 67, 106, 113, 116, 117, 119], "prefix": [61, 116, 117, 118], "suffix": [61, 104], "n": [61, 116, 119], "own": [61, 113, 118], "log": [61, 114], "histori": [61, 67], "text": [61, 67, 118], "line": [61, 113, 114], "flush": 61, "immedi": 61, "close": 61, "classmethod": 61, "creat": [61, 90, 100, 113, 116, 117, 119], "overwrit": [61, 67], "base_typ": [63, 67], "parent": 63, "baseelementlist": [64, 66, 110], "po": [64, 65], "find": [64, 65, 66, 67, 118], "elementlist": [65, 110], "command_log": [67, 113], "stdout": [67, 113], "prompt": [67, 119], "popen_arg": 67, "process": [67, 71, 109, 113, 116, 117, 119], "For": [67, 81, 82, 83, 84, 85, 86, 87, 88, 89, 93, 94, 95, 96, 113, 119], "instruct": [67, 107, 118], "pleas": [67, 71, 115, 116, 117, 118], "refer": [67, 114, 115], "http": [67, 116, 117, 119], "hibtc": [67, 117, 119], "github": [67, 116, 117, 119], "io": 67, "commun": [67, 113], "background": [67, 113], "The": [67, 70, 81, 82, 83, 84, 85, 86, 87, 88, 89, 93, 94, 95, 96, 107, 109, 110, 113, 115, 116, 117, 118, 119, 120], "control": [67, 114], "feed": [67, 113], "textual": [67, 113], "access": [67, 104, 110, 114], "directli": [67, 109, 113, 116, 117, 119], "read": [67, 118], "c": [67, 109, 113, 115, 116, 117, 119, 120], "send": [67, 113], "back": 67, "over": [67, 113], "pipe": [67, 113], "run": [67, 113, 118, 119], "batch": [67, 119], "collect": [67, 110], "when": [67, 113, 118, 119], "leav": [67, 113, 118, 119], "context": [67, 97, 113], "improv": 67, "mani": [67, 116, 117, 119], "relat": [67, 118], "quick": [67, 119], "optic": 67, "chdir": [67, 97], "path": [67, 97, 113, 116, 117, 119], "temporarili": [67, 97, 113], "chang": [67, 97, 107, 109, 113, 116, 117, 118, 119], "dir": [67, 118], "new": [67, 97, 113, 117], "changedirectori": [67, 112], "manag": [67, 97, 113], "temporari": 67, "y": [67, 120], "z": 67, "eval": [67, 98, 113], "expr": [67, 90, 98], "exit": [67, 118], "shutdown": 67, "expr_var": 67, "includ": [67, 69, 100, 113, 118, 119], "nor": 67, "constraint": [67, 100, 111], "vari": 67, "weight": 67, "lmdif": 67, "knobfil": 67, "limit": [67, 101], "simpl": [67, 113, 119], "oper": [67, 109, 119], "advanc": 67, "should": [67, 90, 109, 113, 115, 118, 119, 120], "manual": [67, 71, 116, 117, 118, 119, 120], "pose": 67, "dure": [67, 113, 116, 117, 118], "knob": 67, "write": 67, "keyword": [67, 113], "final": [67, 119], "import": [67, 109, 113, 115, 116, 118, 119], "m": [67, 113], "twiss_init": 67, "beti": [67, 113], "alfx": [67, 113], "alfi": [67, 113], "4": [67, 78, 81, 82, 83, 84, 85, 86, 87, 88, 89, 93, 94, 95, 96, 116, 117], "mysequ": 67, "marker1": 67, "min": [67, 79], "max": [67, 79, 100], "qp1": [67, 113], "k1": [67, 113], "qp2": 67, "tw": 67, "quit": 67, "sectormap": [67, 71], "elem": [67, 104, 113], "comput": 67, "7d": 67, "transfer": 67, "7": [67, 78, 114, 118, 119], "th": 67, "account": 67, "kick": [67, 71], "nx7x7": 67, "sectort": 67, "sectortable2": 67, "2nd": [67, 71], "order": [67, 71, 113, 115, 116, 117, 119, 120], "t_ijk": 67, "nx6x6x6": 67, "survei": [67, 113], "verbos": [67, 113], "switch": [67, 113], "turn": 67, "output": [67, 114, 118, 120], "off": [67, 113, 116, 117, 118, 119], "licens": [68, 77], "info": [68, 77, 113], "etc": [68, 77, 116, 119], "get_copyright_notic": 68, "_check": [69, 71], "represent": [69, 104, 105], "dictionari": [69, 113], "expanded_el": [69, 113], "implicit": [69, 113], "drift": [69, 113], "has_beam": 69, "is_expand": 69, "length": 69, "declar": 69, "twiss_tabl": 69, "twiss_table_nam": 69, "element_posit": 69, "expanded_element_nam": 69, "expanded_element_posit": 69, "individu": [71, 113], "lazili": 71, "demand": 71, "col_nam": 71, "retriev": [71, 113], "frozen": 71, "desir": 71, "dframe": [71, 120], "panda": 71, "datafram": 71, "row_nam": 71, "warn": [71, 118], "unsaf": [71, 120], "after": [71, 118, 119, 120], "anoth": [71, 113, 118], "getmat": 71, "idx": 71, "dim": 71, "kvec": 71, "6": [71, 78, 113, 119], "reload": 71, "recach": 71, "rmat": 71, "recomput": 71, "segment": 71, "fault": 71, "incorrect": 71, "selected_column": 71, "were": 71, "user": [71, 104, 105, 107, 109, 110, 113, 115, 119], "selected_row": 71, "unless": [71, 120], "sigmat": 71, "matrix": 71, "tmat": 71, "except": [73, 113, 119], "inform": [76, 90, 101, 105], "struct": [76, 104], "dx": 78, "dy": 78, "dphi": 78, "dtheta": 78, "dpsi": 78, "mrex": 78, "mrei": 78, "mredx": 78, "mredi": 78, "arex": 78, "arei": 78, "mscalx": 78, "mscali": 78, "alia": [78, 80, 91, 92], "field": [78, 80, 91, 92], "10": [78, 81, 82, 83, 84, 85, 86, 87, 88, 89, 93, 94, 95, 96, 113, 116, 118], "11": [78, 85], "8": [78, 114, 116, 117], "9": 78, "12": [78, 83], "13": [78, 89, 100], "9223372036854775807": [78, 80, 91, 92], "val": 79, "repres": [79, 81, 82, 83, 84, 85, 86, 87, 88, 89, 93, 94, 95, 96, 98], "both": [79, 118, 119], "dkn": 80, "dk": 80, "convert": [81, 82, 83, 84, 85, 86, 87, 88, 89, 93, 94, 95, 96, 104, 105], "__int__": [81, 82, 83, 84, 85, 86, 87, 88, 89, 93, 94, 95, 96], "point": [81, 82, 83, 84, 85, 86, 87, 88, 89, 93, 94, 95, 96, 113, 119], "truncat": [81, 82, 83, 84, 85, 86, 87, 88, 89, 93, 94, 95, 96], "toward": [81, 82, 83, 84, 85, 86, 87, 88, 89, 93, 94, 95, 96], "zero": [81, 82, 83, 84, 85, 86, 87, 88, 89, 93, 94, 95, 96, 98], "must": [81, 82, 83, 84, 85, 86, 87, 88, 89, 93, 94, 95, 96, 104, 113], "byte": [81, 82, 83, 84, 85, 86, 87, 88, 89, 93, 94, 95, 96], "bytearrai": [81, 82, 83, 84, 85, 86, 87, 88, 89, 93, 94, 95, 96], "instanc": [81, 82, 83, 84, 85, 86, 87, 88, 89, 93, 94, 95, 96, 99, 113], "liter": [81, 82, 83, 84, 85, 86, 87, 88, 89, 93, 94, 95, 96], "preced": [81, 82, 83, 84, 85, 86, 87, 88, 89, 93, 94, 95, 96], "surround": [81, 82, 83, 84, 85, 86, 87, 88, 89, 93, 94, 95, 96], "whitespac": [81, 82, 83, 84, 85, 86, 87, 88, 89, 93, 94, 95, 96], "36": [81, 82, 83, 84, 85, 86, 87, 88, 89, 93, 94, 95, 96], "0b100": [81, 82, 83, 84, 85, 86, 87, 88, 89, 93, 94, 95, 96], "dtype": 90, "var_typ": 90, "definit": 90, "ident": 90, "self": 90, "dpn": 91, "dp": 91, "getcwd": 97, "_o": 97, "modul": [97, 109, 110, 114, 119], "safe": [98, 113], "ill": 98, "form": [98, 113, 119], "recogn": 98, "sane": 98, "subset": 98, "accept": [98, 113], "reject": 98, "strang": 98, "ones": [98, 116], "its": [100, 116, 119], "serv": 100, "templat": 100, "bareword": 100, "lhc": 100, "echo": [100, 113], "old": [101, 119], "less": 101, "reliabl": [101, 119, 120], "produc": 101, "statement": 101, "identifi": 102, "add": 103, "quot": 103, "intern": [104, 105], "api": [104, 105, 109, 114], "foo": [104, 105], "py": [104, 105, 116, 117, 118, 119], "store": 104, "node": 104, "transform": 104, "come": [104, 119], "name_to_extern": 105, "name_from_intern": 105, "within": [106, 116], "block": 106, "delet": [106, 116, 117, 119], "afterward": 106, "section": 107, "contain": [107, 110, 118, 119], "variou": [107, 118], "platform": [107, 115, 116, 118, 119], "intric": 107, "procedur": 107, "mostli": [107, 119], "packag": [107, 112, 119], "maintain": 107, "develop": [107, 119], "who": 107, "want": [107, 116, 119], "code": [107, 114, 116, 117, 119, 120], "ordinari": 107, "usual": [107, 109, 115, 116, 118], "don": [107, 119], "prebuilt": [107, 118], "wheel": [107, 115, 116, 117, 118, 119], "avail": [107, 113], "instal": [107, 114, 116, 117, 118, 119], "content": 107, "linux": [107, 114, 120], "window": [107, 114, 120], "maco": [107, 114, 115], "experiment": [107, 114, 115], "troubleshoot": [107, 114], "inherit": 108, "diagram": 108, "low": 109, "level": [109, 113], "cython": [109, 113, 114, 116, 117, 118, 119], "bind": [109, 113, 114], "instead": [109, 116, 117, 118, 119], "privat": 109, "between": 109, "notic": 109, "space": 109, "sometim": [109, 120], "fragil": 109, "share": [109, 116, 118, 119], "expos": 109, "veri": 109, "ish": 109, "conveni": [109, 110, 113], "defin": [110, 113], "layer": 110, "most": [110, 113, 116, 119], "interest": 110, "arrayattribut": 110, "abc": 110, "revers": 110, "size": 110, "attrdict": 110, "basetypemap": 110, "mutablemap": 110, "commandlog": [110, 113], "expandedelementlist": 110, "globalelementlist": 110, "metadata": [110, 119], "sequencemap": 110, "tablemap": 110, "varlist": 110, "varparamlist": 110, "twissfail": 110, "analogu": 111, "structur": 111, "alignerror": 111, "fielderror": 111, "phaseerror": 111, "other": [112, 116, 117, 119], "part": [112, 113, 119], "pymad": [112, 118], "wai": [113, 116, 117, 119], "spawn": 113, "open": [113, 119], "channel": 113, "separ": 113, "necessari": [113, 116], "multipl": [113, 118, 119], "independ": [113, 116], "reset": 113, "clean": 113, "simpli": [113, 119], "requir": [113, 115, 116, 117, 118, 119], "parallel": [113, 118], "becaus": [113, 118, 119], "thread": 113, "now": [113, 116, 117, 119], "where": [113, 116, 118], "conflict": 113, "input_fil": 113, "gener": [113, 119], "exactli": 113, "flag": [113, 116, 118, 119], "auto": 113, "introspect": 113, "few": [113, 119], "addit": [113, 116, 117, 118], "allow": [113, 116], "your": [113, 115, 116, 118, 119], "analysi": 113, "matplotlib": 113, "pyplot": 113, "plt": 113, "plot": 113, "show": [113, 118, 119], "similar": [113, 118], "even": [113, 116], "thei": 113, "explicitli": 113, "respons": 113, "forward": 113, "fodo": 113, "anyth": [113, 116, 117], "comment": 113, "while": [113, 119], "construct": 113, "macro": 113, "loop": 113, "favor": 113, "syntact": 113, "sugar": 113, "compos": 113, "regular": 113, "particl": 113, "proton": 113, "overrid": 113, "how": [113, 119], "mix": [113, 120], "trail": 113, "underscor": 113, "strip": 113, "global_": 113, "cassp": 113, "q1": 113, "26": 113, "58": 113, "AT": 113, "revert": 113, "upon": 113, "At": [113, 119], "abl": [113, 119], "arbitrari": 113, "via": 113, "just": [113, 116, 119], "among": 113, "main": [113, 118], "benefit": 113, "modif": 113, "transpar": 113, "session": 113, "reproduc": 113, "offici": [113, 114, 116, 117, 119], "client": [113, 114], "reduc": 113, "special": 113, "implement": 113, "alwai": 113, "go": 113, "through": [113, 118], "same": [113, 116, 118, 119], "mode": [113, 118], "contrast": 113, "rel": [113, 119], "fast": 113, "pars": 113, "disk": 113, "network": 113, "side": [113, 119], "potenti": 113, "modifi": 113, "apart": 113, "major": [113, 119], "advantag": 113, "implic": 113, "clutter": 113, "action": 113, "print": 113, "besid": 113, "place": [113, 119], "10th": 113, "By": 113, "restrict": 113, "previou": 113, "pi": 113, "sb": 113, "angl": 113, "180": 113, "proxi": 113, "ex": [113, 119], "ei": 113, "OR": 113, "purpos": 113, "debug": [113, 118], "sent": 113, "callabl": 113, "sy": 113, "stderr": 113, "constructor": 113, "disabl": [113, 118], "madx_output": 113, "w": 113, "filesystem": 113, "subprocess": 113, "_process": 113, "give": 114, "32bit": 114, "build": [114, 115], "manylinux1": 114, "have": [114, 116, 117, 118, 119], "reach": 114, "eol": 114, "futur": 114, "basic": [114, 116, 117], "redirect": 114, "known": 114, "tracker": 114, "latest": [114, 116, 117, 119], "against": [114, 116, 117, 118, 119], "custom": [114, 116, 117], "differ": 114, "cern": 114, "binari": [114, 115, 118, 119], "problem": [114, 115, 116, 118, 119, 120], "vice": 114, "versa": 114, "report": 114, "search": 114, "page": 114, "sep": 114, "20": 114, "2023": 114, "try": [115, 118], "pip": [115, 116, 117, 118, 119], "fail": [115, 118], "we": [115, 116, 117, 118, 119], "haven": [115, 118], "upload": [115, 118], "ping": [115, 118], "u": [115, 117, 118], "about": [115, 118], "ad": [115, 118], "banner": [115, 118, 119], "appear": [115, 118, 119, 120], "appl": 115, "acceler": 115, "framework": 115, "machin": [115, 118, 119], "let": 115, "know": [115, 119], "link": [116, 117, 118, 119], "librari": [116, 117, 118, 119], "compil": [116, 117, 119], "suffici": [116, 117, 119], "These": [116, 117, 119], "step": [116, 117, 118, 119], "describ": [116, 117, 119], "subsect": [116, 117, 119], "plan": [116, 117, 119], "insid": [116, 119], "conda": [116, 119], "environ": [116, 117, 118, 120], "avoid": [116, 120], "linker": [116, 118], "gcc": [116, 117, 118, 119], "gfortran": [116, 117], "continu": 116, "gxx": 116, "_linux": 116, "64": 116, "tool": [116, 117, 119], "cmake": [116, 117, 119], "fortran": [116, 117, 119, 120], "suit": [116, 117], "too": [116, 117, 119], "untest": [116, 117], "download": [116, 117, 119], "extract": [116, 117, 119], "wget": 116, "com": [116, 117, 119], "methodicalacceleratordesign": [116, 117, 119], "archiv": [116, 117, 119], "tar": [116, 117], "gz": [116, 117], "xzf": [116, 117], "checkout": [116, 117, 118, 119], "git": [116, 117, 119], "unstabl": [116, 117, 119], "subdirectori": [116, 117], "easili": [116, 117], "restart": [116, 117], "goe": [116, 117], "wrong": [116, 117, 120], "mkdir": [116, 117, 119], "cd": [116, 117, 119], "dmadx_onlin": [116, 117], "dmadx_install_doc": [116, 117], "dcmake_install_prefix": [116, 117, 119], "dist": [116, 117, 119], "dcmake_c_flag": [116, 118], "fvisibl": [116, 118], "hidden": [116, 118], "here": [116, 117, 118], "prevent": [116, 117], "system": [116, 117, 119], "would": [116, 117], "root": [116, 117], "privileg": [116, 117], "harder": [116, 117], "perman": [116, 117, 118], "locat": [116, 117, 119], "prefer": [116, 117, 119], "local": [116, 118, 119], "opt": 116, "keep": [116, 117, 118, 119], "mind": [116, 117], "uninstal": [116, 117], "than": [116, 117, 119], "being": 116, "what": 116, "dmadx_stat": [116, 117, 119], "ON": [116, 118, 119], "static": [116, 119], "depend": [116, 118, 119], "libc": 116, "libgfortran": 116, "libstdc": 116, "bla": [116, 117, 118], "lapack": [116, 117, 118], "attempt": [116, 118], "guarante": 116, "o": [116, 117, 118, 119], "distribut": [116, 117, 119], "archlinux": 116, "still": [116, 119], "dbuild_shared_lib": [116, 117, 118, 119], "dynam": [116, 118, 119], "theori": 116, "test": [116, 119], "protect": [116, 118], "awar": 116, "redistribut": [116, 119], "along": [116, 119], "runtim": 116, "ld_library_path": [116, 118], "appropri": [116, 118], "rpath": [116, 118], "setup": [116, 117], "script": [116, 117, 118, 119], "save": [116, 117, 119], "madxdir": [116, 117, 118, 119], "later": [116, 117, 119], "header": [116, 117, 119], "export": [116, 117, 118, 120], "pwd": [116, 117], "accord": [116, 119], "abov": [116, 118, 119], "IF": 116, "enter": [116, 117], "folder": [116, 117, 118, 119], "build_ext": [116, 117, 118, 119], "lm": [116, 118], "might": [116, 118, 119], "them": [116, 117], "lbla": [116, 117, 118], "llapack": [116, 117, 118], "howev": [116, 117, 119], "probabl": [116, 117, 118], "won": [116, 117, 119], "fit": [116, 117], "bdist_wheel": [116, 117, 119], "whl": [116, 117, 119], "curl": 117, "On": [117, 119, 120], "mac": 117, "patch": 117, "githubusercont": 117, "master": 117, "fix": [117, 118, 120], "mad_argc": 117, "p1": 117, "upgrad": 117, "dcmake_policy_default_cmp0077": 117, "dcmake_policy_default_cmp0042": 117, "dcmake_osx_architectur": 117, "x86_64": 117, "dcmake_c_compil": 117, "dcmake_cxx_compil": 117, "dcmake_fortran_compil": 117, "dcmake_build_typ": 117, "dmadx_force_32": 117, "dmadx_x11": 117, "target": [117, 119], "far": 117, "setuptool": [117, 119], "deloc": 117, "cc": 117, "occur": 118, "verifi": [118, 119], "extens": [118, 119], "96": 118, "cxx": 118, "usr": 118, "bin": 118, "ld": 118, "cmakefil": 118, "madxbin": 118, "mad_init": 118, "0x44": 118, "mad_run": 118, "0x73": 118, "madx_input": 118, "mad_fini": 118, "0x81": 118, "madx_finish": 118, "startup": [118, 119], "0xc": 118, "0x11": 118, "0x16": 118, "geterrorflag_": 118, "entir": 118, "With": [118, 119], "toolchain": [118, 119], "manylinux2014": 118, "observ": 118, "mnt": 118, "src": [118, 119], "gxx11p": 118, "f90": 118, "termin": [118, 119], "101": 118, "wait": 118, "unfinish": 118, "job": [118, 119], "makefile2": 118, "1356": 118, "makefil": [118, 119], "166": 118, "j": 118, "messag": 118, "could": 118, "satisfi": 118, "642": 118, "couldn": 118, "compat": [118, 119], "tri": [118, 120], "guid": [118, 119], "resolv": 118, "solut": 118, "again": 118, "There": [118, 119], "sever": 118, "possibl": [118, 119], "simplest": 118, "rebuild": 118, "libmvec": 118, "vector": 118, "optim": 118, "fno": 118, "tree": 118, "cmake_cxx_flag": 118, "cmake_fortran_flag": 118, "manylinux": 118, "79": 118, "built": [118, 119], "mechan": 118, "detect": 118, "assum": 118, "standard": 118, "latter": 118, "Or": 118, "caus": 118, "often": 118, "reason": [118, 119], "move": 118, "subfold": [118, 119], "lib": [118, 119], "dyld_library_path": 118, "osx": 118, "home": 118, "up": 119, "effort": 119, "pitfal": 119, "right": 119, "dll": 119, "proven": 119, "miniconda": 119, "anaconda": 119, "wouldn": 119, "ship": 119, "unnecessari": 119, "compon": 119, "consist": 119, "usabl": 119, "well": [119, 120], "powershel": 119, "bash": 119, "msys2": 119, "workflow": 119, "adapt": 119, "accordingli": 119, "buildenv": 119, "m2w64": 119, "altern": 119, "two": 119, "below": 119, "carri": 119, "around": 119, "easier": 119, "cost": 119, "choic": 119, "msvc": 119, "went": 119, "reus": 119, "each": 119, "forget": 119, "pyx": 119, "build_pi": 119, "tricki": 119, "doesn": 119, "properli": 119, "our": [119, 120], "py_ver": 119, "37": 119, "file_tag": 119, "cp37": 119, "win_amd64": 119, "dir_tag": 119, "win": 119, "amd64": 119, "cpython": 119, "earlier": 119, "past": 119, "tempdir": 119, "temp": 119, "libdir": 119, "mdll": 119, "wall": 119, "dms_win64": 119, "pythondir": 119, "obj": 119, "std": 119, "gnu99": 119, "lmadx": 119, "ldistlib": 119, "lptc": 119, "lgc": 119, "lstdc": 119, "lgfortran": 119, "lquadmath": 119, "lmsvcr100": 119, "pyd": 119, "second": 119, "succe": 119, "behind": 119, "walker": 119, "pythonxi": 119, "proce": 119, "zip": 119, "readi": 119, "test_madx": 119, "test_util": 119, "congratul": 119, "free": 119, "good": 119, "correct": 119, "microsoft": 119, "older": 119, "anymor": 119, "vcvarsal": 119, "bat": 119, "x86": 119, "14": 119, "vc": 119, "onc": 119, "ve": 119, "accomplish": 119, "actual": 119, "simpler": 119, "py37": 119, "delai": 120, "gfortran_unbuffered_preconnect": 120, "knowledg": 120, "93": 120}, "objects": {"cpymad": [[109, 0, 0, "-", "libmadx"], [110, 0, 0, "-", "madx"], [111, 0, 0, "-", "types"], [112, 0, 0, "-", "util"]], "cpymad.libmadx": [[0, 1, 1, "", "apply_table_selections"], [1, 1, 1, "", "eval"], [2, 1, 1, "", "finish"], [3, 1, 1, "", "get_active_sequence_name"], [4, 1, 1, "", "get_base_type_names"], [5, 1, 1, "", "get_beam"], [6, 1, 1, "", "get_beam_names"], [7, 1, 1, "", "get_current_beam"], [8, 1, 1, "", "get_defined_command"], [9, 1, 1, "", "get_defined_command_names"], [10, 1, 1, "", "get_element"], [11, 1, 1, "", "get_element_count"], [12, 1, 1, "", "get_element_index"], [13, 1, 1, "", "get_element_index_by_position"], [14, 1, 1, "", "get_element_name"], [15, 1, 1, "", "get_element_names"], [16, 1, 1, "", "get_element_positions"], [17, 1, 1, "", "get_expanded_element"], [18, 1, 1, "", "get_expanded_element_count"], [19, 1, 1, "", "get_expanded_element_index"], [20, 1, 1, "", "get_expanded_element_index_by_position"], [21, 1, 1, "", "get_expanded_element_name"], [22, 1, 1, "", "get_expanded_element_names"], [23, 1, 1, "", "get_expanded_element_positions"], [24, 1, 1, "", "get_global_element"], [25, 1, 1, "", "get_global_element_count"], [26, 1, 1, "", "get_global_element_index"], [27, 1, 1, "", "get_global_element_name"], [28, 1, 1, "", "get_globals"], [29, 1, 1, "", "get_options"], [30, 1, 1, "", "get_sequence_beam"], [31, 1, 1, "", "get_sequence_count"], [32, 1, 1, "", "get_sequence_names"], [33, 1, 1, "", "get_sequence_twiss_table_name"], [34, 1, 1, "", "get_table_column"], [35, 1, 1, "", "get_table_column_count"], [36, 1, 1, "", "get_table_column_names"], [37, 1, 1, "", "get_table_count"], [38, 1, 1, "", "get_table_names"], [39, 1, 1, "", "get_table_row"], [40, 1, 1, "", "get_table_row_count"], [41, 1, 1, "", "get_table_row_names"], [42, 1, 1, "", "get_table_selected_rows"], [43, 1, 1, "", "get_table_selected_rows_mask"], [44, 1, 1, "", "get_table_summary"], [45, 1, 1, "", "get_var"], [46, 1, 1, "", "get_var_type"], [47, 1, 1, "", "get_version_date"], [48, 1, 1, "", "get_version_number"], [49, 1, 1, "", "getcwd"], [50, 1, 1, "", "input"], [51, 1, 1, "", "is_sequence_expanded"], [52, 1, 1, "", "is_started"], [53, 1, 1, "", "num_globals"], [54, 1, 1, "", "sequence_exists"], [55, 1, 1, "", "start"], [56, 1, 1, "", "table_exists"]], "cpymad.madx": [[57, 2, 1, "", "ArrayAttribute"], [58, 2, 1, "", "AttrDict"], [59, 2, 1, "", "BaseTypeMap"], [60, 2, 1, "", "Command"], [61, 2, 1, "", "CommandLog"], [62, 2, 1, "", "CommandMap"], [63, 2, 1, "", "Element"], [64, 2, 1, "", "ElementList"], [65, 2, 1, "", "ExpandedElementList"], [66, 2, 1, "", "GlobalElementList"], [67, 2, 1, "", "Madx"], [68, 2, 1, "", "Metadata"], [69, 2, 1, "", "Sequence"], [70, 2, 1, "", "SequenceMap"], [71, 2, 1, "", "Table"], [72, 2, 1, "", "TableMap"], [73, 5, 1, "", "TwissFailed"], [74, 2, 1, "", "VarList"], [75, 2, 1, "", "VarParamList"], [76, 2, 1, "", "Version"], [77, 6, 1, "", "metadata"]], "cpymad.madx.ArrayAttribute": [[57, 3, 1, "", "count"], [57, 3, 1, "", "index"]], "cpymad.madx.AttrDict": [[58, 3, 1, "", "get"], [58, 3, 1, "", "items"], [58, 3, 1, "", "keys"], [58, 3, 1, "", "update"], [58, 3, 1, "", "values"]], "cpymad.madx.BaseTypeMap": [[59, 3, 1, "", "get"], [59, 3, 1, "", "items"], [59, 3, 1, "", "keys"], [59, 3, 1, "", "values"]], "cpymad.madx.Command": [[60, 3, 1, "", "__call__"], [60, 3, 1, "", "clear"], [60, 3, 1, "", "clone"], [60, 4, 1, "", "cmdpar"], [60, 4, 1, "", "defs"], [60, 3, 1, "", "get"], [60, 3, 1, "", "items"], [60, 3, 1, "", "keys"], [60, 3, 1, "", "pop"], [60, 3, 1, "", "popitem"], [60, 3, 1, "", "setdefault"], [60, 3, 1, "", "update"], [60, 3, 1, "", "values"]], "cpymad.madx.CommandLog": [[61, 3, 1, "", "__call__"], [61, 3, 1, "", "close"], [61, 3, 1, "", "create"]], "cpymad.madx.CommandMap": [[62, 3, 1, "", "get"], [62, 3, 1, "", "items"], [62, 3, 1, "", "keys"], [62, 3, 1, "", "values"]], "cpymad.madx.Element": [[63, 3, 1, "", "__call__"], [63, 4, 1, "", "base_type"], [63, 3, 1, "", "clear"], [63, 3, 1, "", "clone"], [63, 4, 1, "", "cmdpar"], [63, 4, 1, "", "defs"], [63, 3, 1, "", "get"], [63, 3, 1, "", "items"], [63, 3, 1, "", "keys"], [63, 4, 1, "", "parent"], [63, 3, 1, "", "pop"], [63, 3, 1, "", "popitem"], [63, 3, 1, "", "setdefault"], [63, 3, 1, "", "update"], [63, 3, 1, "", "values"]], "cpymad.madx.ElementList": [[64, 3, 1, "", "at"], [64, 3, 1, "", "count"], [64, 3, 1, "", "index"]], "cpymad.madx.ExpandedElementList": [[65, 3, 1, "", "at"], [65, 3, 1, "", "count"], [65, 3, 1, "", "index"]], "cpymad.madx.GlobalElementList": [[66, 3, 1, "", "get"], [66, 3, 1, "", "index"], [66, 3, 1, "", "items"], [66, 3, 1, "", "keys"], [66, 3, 1, "", "values"]], "cpymad.madx.Madx": [[67, 3, 1, "", "__call__"], [67, 3, 1, "", "batch"], [67, 4, 1, "", "beam"], [67, 3, 1, "", "call"], [67, 3, 1, "", "chdir"], [67, 3, 1, "", "eval"], [67, 3, 1, "", "exit"], [67, 3, 1, "", "expr_vars"], [67, 3, 1, "", "input"], [67, 3, 1, "", "match"], [67, 4, 1, "", "options"], [67, 3, 1, "", "quit"], [67, 3, 1, "", "sectormap"], [67, 3, 1, "", "sectortable"], [67, 3, 1, "", "sectortable2"], [67, 3, 1, "", "survey"], [67, 3, 1, "", "twiss"], [67, 3, 1, "", "use"], [67, 3, 1, "", "verbose"], [67, 4, 1, "", "version"]], "cpymad.madx.Metadata": [[68, 3, 1, "", "get_copyright_notice"]], "cpymad.madx.Sequence": [[69, 4, 1, "", "beam"], [69, 3, 1, "", "element_names"], [69, 3, 1, "", "element_positions"], [69, 4, 1, "", "elements"], [69, 3, 1, "", "expand"], [69, 3, 1, "", "expanded_element_names"], [69, 3, 1, "", "expanded_element_positions"], [69, 4, 1, "", "expanded_elements"], [69, 4, 1, "", "has_beam"], [69, 4, 1, "", "is_expanded"], [69, 4, 1, "", "length"], [69, 4, 1, "", "name"], [69, 4, 1, "", "twiss_table"], [69, 4, 1, "", "twiss_table_name"], [69, 3, 1, "", "use"]], "cpymad.madx.SequenceMap": [[70, 3, 1, "", "__call__"], [70, 3, 1, "", "get"], [70, 3, 1, "", "items"], [70, 3, 1, "", "keys"], [70, 3, 1, "", "values"]], "cpymad.madx.Table": [[71, 3, 1, "", "col_names"], [71, 3, 1, "", "column"], [71, 3, 1, "", "copy"], [71, 3, 1, "", "dframe"], [71, 3, 1, "", "get"], [71, 3, 1, "", "getmat"], [71, 3, 1, "", "items"], [71, 3, 1, "", "keys"], [71, 3, 1, "", "kvec"], [71, 4, 1, "", "range"], [71, 3, 1, "", "reload"], [71, 3, 1, "", "rmat"], [71, 3, 1, "", "row"], [71, 3, 1, "", "row_names"], [71, 3, 1, "", "selected_columns"], [71, 3, 1, "", "selected_rows"], [71, 3, 1, "", "selection"], [71, 3, 1, "", "sigmat"], [71, 4, 1, "", "summary"], [71, 3, 1, "", "tmat"], [71, 3, 1, "", "values"]], "cpymad.madx.TableMap": [[72, 3, 1, "", "get"], [72, 3, 1, "", "items"], [72, 3, 1, "", "keys"], [72, 3, 1, "", "values"]], "cpymad.madx.VarList": [[74, 3, 1, "", "clear"], [74, 4, 1, "", "cmdpar"], [74, 4, 1, "", "defs"], [74, 3, 1, "", "get"], [74, 3, 1, "", "items"], [74, 3, 1, "", "keys"], [74, 3, 1, "", "pop"], [74, 3, 1, "", "popitem"], [74, 3, 1, "", "setdefault"], [74, 3, 1, "", "update"], [74, 3, 1, "", "values"]], "cpymad.madx.VarParamList": [[75, 3, 1, "", "get"], [75, 3, 1, "", "items"], [75, 3, 1, "", "keys"], [75, 3, 1, "", "values"]], "cpymad.types": [[78, 2, 1, "", "AlignError"], [79, 2, 1, "", "Constraint"], [80, 2, 1, "", "FieldError"], [81, 6, 1, "", "PARAM_TYPE_CONSTRAINT"], [82, 6, 1, "", "PARAM_TYPE_DOUBLE"], [83, 6, 1, "", "PARAM_TYPE_DOUBLE_ARRAY"], [84, 6, 1, "", "PARAM_TYPE_INTEGER"], [85, 6, 1, "", "PARAM_TYPE_INTEGER_ARRAY"], [86, 6, 1, "", "PARAM_TYPE_LOGICAL"], [87, 6, 1, "", "PARAM_TYPE_LOGICAL_ARRAY"], [88, 6, 1, "", "PARAM_TYPE_STRING"], [89, 6, 1, "", "PARAM_TYPE_STRING_ARRAY"], [90, 2, 1, "", "Parameter"], [91, 2, 1, "", "PhaseError"], [92, 2, 1, "", "Range"], [93, 6, 1, "", "VAR_TYPE_CONST"], [94, 6, 1, "", "VAR_TYPE_DEFERRED"], [95, 6, 1, "", "VAR_TYPE_DIRECT"], [96, 6, 1, "", "VAR_TYPE_STRING"]], "cpymad.types.AlignError": [[78, 4, 1, "", "arex"], [78, 4, 1, "", "arey"], [78, 3, 1, "", "count"], [78, 4, 1, "", "dphi"], [78, 4, 1, "", "dpsi"], [78, 4, 1, "", "ds"], [78, 4, 1, "", "dtheta"], [78, 4, 1, "", "dx"], [78, 4, 1, "", "dy"], [78, 3, 1, "", "index"], [78, 4, 1, "", "mredx"], [78, 4, 1, "", "mredy"], [78, 4, 1, "", "mrex"], [78, 4, 1, "", "mrey"], [78, 4, 1, "", "mscalx"], [78, 4, 1, "", "mscaly"]], "cpymad.types.FieldError": [[80, 3, 1, "", "count"], [80, 4, 1, "", "dkn"], [80, 4, 1, "", "dks"], [80, 3, 1, "", "index"]], "cpymad.types.Parameter": [[90, 3, 1, "", "__call__"], [90, 4, 1, "", "definition"], [90, 4, 1, "", "dtype"], [90, 4, 1, "", "expr"], [90, 4, 1, "", "inform"], [90, 4, 1, "", "name"], [90, 4, 1, "", "value"], [90, 4, 1, "", "var_type"]], "cpymad.types.PhaseError": [[91, 3, 1, "", "count"], [91, 4, 1, "", "dpn"], [91, 4, 1, "", "dps"], [91, 3, 1, "", "index"]], "cpymad.types.Range": [[92, 3, 1, "", "count"], [92, 4, 1, "", "first"], [92, 3, 1, "", "index"], [92, 4, 1, "", "last"]], "cpymad.util": [[97, 2, 1, "", "ChangeDirectory"], [98, 1, 1, "", "check_expression"], [99, 1, 1, "", "format_cmdpar"], [100, 1, 1, "", "format_command"], [101, 1, 1, "", "format_param"], [102, 1, 1, "", "is_identifier"], [103, 1, 1, "", "mad_quote"], [104, 1, 1, "", "name_from_internal"], [105, 1, 1, "", "name_to_internal"], [106, 1, 1, "", "temp_filename"]]}, "objtypes": {"0": "py:module", "1": "py:function", "2": "py:class", "3": "py:method", "4": "py:attribute", "5": "py:exception", "6": "py:data"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "function", "Python function"], "2": ["py", "class", "Python class"], "3": ["py", "method", "Python method"], "4": ["py", "attribute", "Python attribute"], "5": ["py", "exception", "Python exception"], "6": ["py", "data", "Python data"]}, "titleterms": {"apply_table_select": 0, "eval": 1, "finish": 2, "get_active_sequence_nam": 3, "get_base_type_nam": 4, "get_beam": 5, "get_beam_nam": 6, "get_current_beam": 7, "get_defined_command": 8, "get_defined_command_nam": 9, "get_el": 10, "get_element_count": 11, "get_element_index": 12, "get_element_index_by_posit": 13, "get_element_nam": [14, 15], "get_element_posit": 16, "get_expanded_el": 17, "get_expanded_element_count": 18, "get_expanded_element_index": 19, "get_expanded_element_index_by_posit": 20, "get_expanded_element_nam": [21, 22], "get_expanded_element_posit": 23, "get_global_el": 24, "get_global_element_count": 25, "get_global_element_index": 26, "get_global_element_nam": 27, "get_glob": 28, "get_opt": 29, "get_sequence_beam": 30, "get_sequence_count": 31, "get_sequence_nam": 32, "get_sequence_twiss_table_nam": 33, "get_table_column": 34, "get_table_column_count": 35, "get_table_column_nam": 36, "get_table_count": 37, "get_table_nam": 38, "get_table_row": 39, "get_table_row_count": 40, "get_table_row_nam": 41, "get_table_selected_row": 42, "get_table_selected_rows_mask": 43, "get_table_summari": 44, "get_var": 45, "get_var_typ": 46, "get_version_d": 47, "get_version_numb": 48, "getcwd": 49, "input": [50, 113], "is_sequence_expand": 51, "is_start": 52, "num_glob": 53, "sequence_exist": 54, "start": [55, 113], "table_exist": 56, "arrayattribut": 57, "attrdict": 58, "basetypemap": 59, "command": [60, 113], "commandlog": 61, "commandmap": 62, "element": [63, 113], "elementlist": 64, "expandedelementlist": 65, "globalelementlist": 66, "madx": [67, 110, 118], "metadata": [68, 77], "sequenc": [69, 113], "sequencemap": 70, "tabl": [71, 113, 114], "tablemap": 72, "twissfail": 73, "varlist": 74, "varparamlist": 75, "version": [76, 113], "alignerror": 78, "constraint": 79, "fielderror": 80, "param_type_constraint": 81, "param_type_doubl": 82, "param_type_double_arrai": 83, "param_type_integ": 84, "param_type_integer_arrai": 85, "param_type_log": 86, "param_type_logical_arrai": 87, "param_type_str": 88, "param_type_string_arrai": 89, "paramet": 90, "phaseerror": 91, "rang": 92, "var_type_const": 93, "var_type_def": 94, "var_type_direct": 95, "var_type_str": 96, "changedirectori": 97, "check_express": 98, "format_cmdpar": 99, "format_command": 100, "format_param": 101, "is_identifi": 102, "mad_quot": 103, "name_from_intern": 104, "name_to_intern": 105, "temp_filenam": 106, "build": [107, 116, 117, 118, 119], "from": 107, "sourc": [107, 118], "api": 108, "refer": [108, 118], "cpymad": [109, 110, 111, 112, 114, 116, 117, 119], "libmadx": [109, 118], "function": [109, 112], "class": [110, 111, 112], "variabl": [110, 111], "inherit": [110, 111, 112], "diagram": [110, 111, 112], "type": 111, "util": 112, "get": 113, "basic": 113, "mad": [113, 116, 117, 118, 119], "x": [113, 116, 117, 118, 119], "control": 113, "chdir": 113, "other": 113, "access": 113, "global": 113, "log": 113, "redirect": 113, "output": 113, "content": 114, "link": 114, "indic": 114, "instal": 115, "linux": 116, "maco": 117, "experiment": 117, "troubleshoot": 118, "error": 118, "mad_main": 118, "c": 118, "undefin": 118, "madx_start": 118, "fatal": 118, "cannot": 118, "open": 118, "modul": 118, "file": 118, "gxx11_common": 118, "mod": 118, "setup": [118, 119], "compil": 118, "time": 118, "No": 118, "match": 118, "distribut": 118, "found": 118, "mad_types_f": 118, "h": 118, "directori": 118, "oserror": 118, "miss": 118, "runtim": 118, "importerror": 118, "symbol": 118, "_zgvbn2vv_pow": 118, "dgelsd_": 118, "so": 118, "window": 119, "environ": 119, "us": 119, "mingw": 119, "visual": 119, "studio": 119, "known": 120, "issu": 120}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx.ext.viewcode": 1, "sphinx": 60}, "alltitles": {"apply_table_selections": [[0, "apply-table-selections"]], "eval": [[1, "eval"]], "finish": [[2, "finish"]], "get_active_sequence_name": [[3, "get-active-sequence-name"]], "get_base_type_names": [[4, "get-base-type-names"]], "get_beam": [[5, "get-beam"]], "get_beam_names": [[6, "get-beam-names"]], "get_current_beam": [[7, "get-current-beam"]], "get_defined_command": [[8, "get-defined-command"]], "get_defined_command_names": [[9, "get-defined-command-names"]], "get_element": [[10, "get-element"]], "get_element_count": [[11, "get-element-count"]], "get_element_index": [[12, "get-element-index"]], "get_element_index_by_position": [[13, "get-element-index-by-position"]], "get_element_name": [[14, "get-element-name"]], "get_element_names": [[15, "get-element-names"]], "get_element_positions": [[16, "get-element-positions"]], "get_expanded_element": [[17, "get-expanded-element"]], "get_expanded_element_count": [[18, "get-expanded-element-count"]], "get_expanded_element_index": [[19, "get-expanded-element-index"]], "get_expanded_element_index_by_position": [[20, "get-expanded-element-index-by-position"]], "get_expanded_element_name": [[21, "get-expanded-element-name"]], "get_expanded_element_names": [[22, "get-expanded-element-names"]], "get_expanded_element_positions": [[23, "get-expanded-element-positions"]], "get_global_element": [[24, "get-global-element"]], "get_global_element_count": [[25, "get-global-element-count"]], "get_global_element_index": [[26, "get-global-element-index"]], "get_global_element_name": [[27, "get-global-element-name"]], "get_globals": [[28, "get-globals"]], "get_options": [[29, "get-options"]], "get_sequence_beam": [[30, "get-sequence-beam"]], "get_sequence_count": [[31, "get-sequence-count"]], "get_sequence_names": [[32, "get-sequence-names"]], "get_sequence_twiss_table_name": [[33, "get-sequence-twiss-table-name"]], "get_table_column": [[34, "get-table-column"]], "get_table_column_count": [[35, "get-table-column-count"]], "get_table_column_names": [[36, "get-table-column-names"]], "get_table_count": [[37, "get-table-count"]], "get_table_names": [[38, "get-table-names"]], "get_table_row": [[39, "get-table-row"]], "get_table_row_count": [[40, "get-table-row-count"]], "get_table_row_names": [[41, "get-table-row-names"]], "get_table_selected_rows": [[42, "get-table-selected-rows"]], "get_table_selected_rows_mask": [[43, "get-table-selected-rows-mask"]], "get_table_summary": [[44, "get-table-summary"]], "get_var": [[45, "get-var"]], "get_var_type": [[46, "get-var-type"]], "get_version_date": [[47, "get-version-date"]], "get_version_number": [[48, "get-version-number"]], "getcwd": [[49, "getcwd"]], "input": [[50, "input"]], "is_sequence_expanded": [[51, "is-sequence-expanded"]], "is_started": [[52, "is-started"]], "num_globals": [[53, "num-globals"]], "sequence_exists": [[54, "sequence-exists"]], "start": [[55, "start"]], "table_exists": [[56, "table-exists"]], "ArrayAttribute": [[57, "arrayattribute"]], "AttrDict": [[58, "attrdict"]], "BaseTypeMap": [[59, "basetypemap"]], "Command": [[60, "command"]], "CommandLog": [[61, "commandlog"]], "CommandMap": [[62, "commandmap"]], "Element": [[63, "element"]], "ElementList": [[64, "elementlist"]], "ExpandedElementList": [[65, "expandedelementlist"]], "GlobalElementList": [[66, "globalelementlist"]], "Madx": [[67, "madx"]], "Metadata": [[68, "metadata"]], "Sequence": [[69, "sequence"]], "SequenceMap": [[70, "sequencemap"]], "Table": [[71, "table"]], "TableMap": [[72, "tablemap"]], "TwissFailed": [[73, "twissfailed"]], "VarList": [[74, "varlist"]], "VarParamList": [[75, "varparamlist"]], "Version": [[76, "version"]], "metadata": [[77, "metadata"]], "AlignError": [[78, "alignerror"]], "Constraint": [[79, "constraint"]], "FieldError": [[80, "fielderror"]], "PARAM_TYPE_CONSTRAINT": [[81, "param-type-constraint"]], "PARAM_TYPE_DOUBLE": [[82, "param-type-double"]], "PARAM_TYPE_DOUBLE_ARRAY": [[83, "param-type-double-array"]], "PARAM_TYPE_INTEGER": [[84, "param-type-integer"]], "PARAM_TYPE_INTEGER_ARRAY": [[85, "param-type-integer-array"]], "PARAM_TYPE_LOGICAL": [[86, "param-type-logical"]], "PARAM_TYPE_LOGICAL_ARRAY": [[87, "param-type-logical-array"]], "PARAM_TYPE_STRING": [[88, "param-type-string"]], "PARAM_TYPE_STRING_ARRAY": [[89, "param-type-string-array"]], "Parameter": [[90, "parameter"]], "PhaseError": [[91, "phaseerror"]], "Range": [[92, "range"]], "VAR_TYPE_CONST": [[93, "var-type-const"]], "VAR_TYPE_DEFERRED": [[94, "var-type-deferred"]], "VAR_TYPE_DIRECT": [[95, "var-type-direct"]], "VAR_TYPE_STRING": [[96, "var-type-string"]], "ChangeDirectory": [[97, "changedirectory"]], "check_expression": [[98, "check-expression"]], "format_cmdpar": [[99, "format-cmdpar"]], "format_command": [[100, "format-command"]], "format_param": [[101, "format-param"]], "is_identifier": [[102, "is-identifier"]], "mad_quote": [[103, "mad-quote"]], "name_from_internal": [[104, "name-from-internal"]], "name_to_internal": [[105, "name-to-internal"]], "temp_filename": [[106, "temp-filename"]], "Building from source": [[107, "building-from-source"]], "API Reference": [[108, "api-reference"]], "cpymad.libmadx": [[109, "module-cpymad.libmadx"]], "Functions": [[109, "functions"], [112, "functions"]], "cpymad.madx": [[110, "module-cpymad.madx"]], "Classes": [[110, "classes"], [111, "classes"], [112, "classes"]], "Variables": [[110, "variables"], [111, "variables"]], "Class Inheritance Diagram": [[110, "class-inheritance-diagram"], [111, "class-inheritance-diagram"], [112, "class-inheritance-diagram"]], "cpymad.types": [[111, "module-cpymad.types"]], "cpymad.util": [[112, "module-cpymad.util"]], "Getting Started": [[113, "getting-started"]], "Basic MAD-X commands": [[113, "basic-mad-x-commands"]], "Controlling MAD-X": [[113, "controlling-mad-x"]], "input()": [[113, "input"]], "command()": [[113, "command"]], "chdir()": [[113, "chdir"]], "Others": [[113, "others"]], "Accessing MAD-X": [[113, "accessing-mad-x"]], "version": [[113, "version"]], "elements": [[113, "elements"]], "table": [[113, "table"]], "globals": [[113, "globals"]], "sequence": [[113, "sequence"]], "Logging commands": [[113, "logging-commands"]], "Redirecting output": [[113, "redirecting-output"]], "cpymad": [[114, "cpymad"]], "Contents": [[114, "contents"]], "Links": [[114, "links"]], "Indices and tables": [[114, "indices-and-tables"]], "Installation": [[115, "installation"]], "Linux": [[116, "linux"]], "Build MAD-X": [[116, "build-mad-x"], [117, "build-mad-x"], [119, "build-mad-x"]], "Building cpymad": [[116, "building-cpymad"], [117, "building-cpymad"]], "MacOS (experimental)": [[117, "macos-experimental"]], "Troubleshooting": [[118, "troubleshooting"]], "MAD-X build errors": [[118, "mad-x-build-errors"]], "mad_main.c: undefined reference to \u2018madx_start\u2019": [[118, "mad-main-c-undefined-reference-to-madx-start"]], "Fatal Error: Cannot open module file \u2018gxx11_common.mod\u2019": [[118, "fatal-error-cannot-open-module-file-gxx11-common-mod"]], "Setup or compile time errors": [[118, "setup-or-compile-time-errors"]], "ERROR: No matching distribution found": [[118, "error-no-matching-distribution-found"]], "fatal error: madX/mad_types_f.h: No such file or directory": [[118, "fatal-error-madx-mad-types-f-h-no-such-file-or-directory"]], "OSError: Missing source file": [[118, "oserror-missing-source-file"]], "Runtime errors": [[118, "runtime-errors"]], "ImportError: undefined symbol: _ZGVbN2vv_pow": [[118, "importerror-undefined-symbol-zgvbn2vv-pow"]], "ImportError: undefined symbol: dgelsd_": [[118, "importerror-undefined-symbol-dgelsd"]], "ImportError: libmadx.so": [[118, "importerror-libmadx-so"]], "Windows": [[119, "windows"]], "Setup environment": [[119, "setup-environment"]], "Build cpymad": [[119, "build-cpymad"]], "Using MinGW": [[119, "using-mingw"]], "Using Visual Studio": [[119, "using-visual-studio"]], "Known issues": [[120, "known-issues"]]}, "indexentries": {"apply_table_selections() (in module cpymad.libmadx)": [[0, "cpymad.libmadx.apply_table_selections"]], "eval() (in module cpymad.libmadx)": [[1, "cpymad.libmadx.eval"]], "finish() (in module cpymad.libmadx)": [[2, "cpymad.libmadx.finish"]], "get_active_sequence_name() (in module cpymad.libmadx)": [[3, "cpymad.libmadx.get_active_sequence_name"]], "get_base_type_names() (in module cpymad.libmadx)": [[4, "cpymad.libmadx.get_base_type_names"]], "get_beam() (in module cpymad.libmadx)": [[5, "cpymad.libmadx.get_beam"]], "get_beam_names() (in module cpymad.libmadx)": [[6, "cpymad.libmadx.get_beam_names"]], "get_current_beam() (in module cpymad.libmadx)": [[7, "cpymad.libmadx.get_current_beam"]], "get_defined_command() (in module cpymad.libmadx)": [[8, "cpymad.libmadx.get_defined_command"]], "get_defined_command_names() (in module cpymad.libmadx)": [[9, "cpymad.libmadx.get_defined_command_names"]], "get_element() (in module cpymad.libmadx)": [[10, "cpymad.libmadx.get_element"]], "get_element_count() (in module cpymad.libmadx)": [[11, "cpymad.libmadx.get_element_count"]], "get_element_index() (in module cpymad.libmadx)": [[12, "cpymad.libmadx.get_element_index"]], "get_element_index_by_position() (in module cpymad.libmadx)": [[13, "cpymad.libmadx.get_element_index_by_position"]], "get_element_name() (in module cpymad.libmadx)": [[14, "cpymad.libmadx.get_element_name"]], "get_element_names() (in module cpymad.libmadx)": [[15, "cpymad.libmadx.get_element_names"]], "get_element_positions() (in module cpymad.libmadx)": [[16, "cpymad.libmadx.get_element_positions"]], "get_expanded_element() (in module cpymad.libmadx)": [[17, "cpymad.libmadx.get_expanded_element"]], "get_expanded_element_count() (in module cpymad.libmadx)": [[18, "cpymad.libmadx.get_expanded_element_count"]], "get_expanded_element_index() (in module cpymad.libmadx)": [[19, "cpymad.libmadx.get_expanded_element_index"]], "get_expanded_element_index_by_position() (in module cpymad.libmadx)": [[20, "cpymad.libmadx.get_expanded_element_index_by_position"]], "get_expanded_element_name() (in module cpymad.libmadx)": [[21, "cpymad.libmadx.get_expanded_element_name"]], "get_expanded_element_names() (in module cpymad.libmadx)": [[22, "cpymad.libmadx.get_expanded_element_names"]], "get_expanded_element_positions() (in module cpymad.libmadx)": [[23, "cpymad.libmadx.get_expanded_element_positions"]], "get_global_element() (in module cpymad.libmadx)": [[24, "cpymad.libmadx.get_global_element"]], "get_global_element_count() (in module cpymad.libmadx)": [[25, "cpymad.libmadx.get_global_element_count"]], "get_global_element_index() (in module cpymad.libmadx)": [[26, "cpymad.libmadx.get_global_element_index"]], "get_global_element_name() (in module cpymad.libmadx)": [[27, "cpymad.libmadx.get_global_element_name"]], "get_globals() (in module cpymad.libmadx)": [[28, "cpymad.libmadx.get_globals"]], "get_options() (in module cpymad.libmadx)": [[29, "cpymad.libmadx.get_options"]], "get_sequence_beam() (in module cpymad.libmadx)": [[30, "cpymad.libmadx.get_sequence_beam"]], "get_sequence_count() (in module cpymad.libmadx)": [[31, "cpymad.libmadx.get_sequence_count"]], "get_sequence_names() (in module cpymad.libmadx)": [[32, "cpymad.libmadx.get_sequence_names"]], "get_sequence_twiss_table_name() (in module cpymad.libmadx)": [[33, "cpymad.libmadx.get_sequence_twiss_table_name"]], "get_table_column() (in module cpymad.libmadx)": [[34, "cpymad.libmadx.get_table_column"]], "get_table_column_count() (in module cpymad.libmadx)": [[35, "cpymad.libmadx.get_table_column_count"]], "get_table_column_names() (in module cpymad.libmadx)": [[36, "cpymad.libmadx.get_table_column_names"]], "get_table_count() (in module cpymad.libmadx)": [[37, "cpymad.libmadx.get_table_count"]], "get_table_names() (in module cpymad.libmadx)": [[38, "cpymad.libmadx.get_table_names"]], "get_table_row() (in module cpymad.libmadx)": [[39, "cpymad.libmadx.get_table_row"]], "get_table_row_count() (in module cpymad.libmadx)": [[40, "cpymad.libmadx.get_table_row_count"]], "get_table_row_names() (in module cpymad.libmadx)": [[41, "cpymad.libmadx.get_table_row_names"]], "get_table_selected_rows() (in module cpymad.libmadx)": [[42, "cpymad.libmadx.get_table_selected_rows"]], "get_table_selected_rows_mask() (in module cpymad.libmadx)": [[43, "cpymad.libmadx.get_table_selected_rows_mask"]], "get_table_summary() (in module cpymad.libmadx)": [[44, "cpymad.libmadx.get_table_summary"]], "get_var() (in module cpymad.libmadx)": [[45, "cpymad.libmadx.get_var"]], "get_var_type() (in module cpymad.libmadx)": [[46, "cpymad.libmadx.get_var_type"]], "get_version_date() (in module cpymad.libmadx)": [[47, "cpymad.libmadx.get_version_date"]], "get_version_number() (in module cpymad.libmadx)": [[48, "cpymad.libmadx.get_version_number"]], "getcwd() (in module cpymad.libmadx)": [[49, "cpymad.libmadx.getcwd"]], "input() (in module cpymad.libmadx)": [[50, "cpymad.libmadx.input"]], "is_sequence_expanded() (in module cpymad.libmadx)": [[51, "cpymad.libmadx.is_sequence_expanded"]], "is_started() (in module cpymad.libmadx)": [[52, "cpymad.libmadx.is_started"]], "num_globals() (in module cpymad.libmadx)": [[53, "cpymad.libmadx.num_globals"]], "sequence_exists() (in module cpymad.libmadx)": [[54, "cpymad.libmadx.sequence_exists"]], "start() (in module cpymad.libmadx)": [[55, "cpymad.libmadx.start"]], "table_exists() (in module cpymad.libmadx)": [[56, "cpymad.libmadx.table_exists"]], "arrayattribute (class in cpymad.madx)": [[57, "cpymad.madx.ArrayAttribute"]], "count() (arrayattribute method)": [[57, "cpymad.madx.ArrayAttribute.count"]], "index() (arrayattribute method)": [[57, "cpymad.madx.ArrayAttribute.index"]], "attrdict (class in cpymad.madx)": [[58, "cpymad.madx.AttrDict"]], "get() (attrdict method)": [[58, "cpymad.madx.AttrDict.get"]], "items() (attrdict method)": [[58, "cpymad.madx.AttrDict.items"]], "keys() (attrdict method)": [[58, "cpymad.madx.AttrDict.keys"]], "update() (attrdict method)": [[58, "cpymad.madx.AttrDict.update"]], "values() (attrdict method)": [[58, "cpymad.madx.AttrDict.values"]], "basetypemap (class in cpymad.madx)": [[59, "cpymad.madx.BaseTypeMap"]], "get() (basetypemap method)": [[59, "cpymad.madx.BaseTypeMap.get"]], "items() (basetypemap method)": [[59, "cpymad.madx.BaseTypeMap.items"]], "keys() (basetypemap method)": [[59, "cpymad.madx.BaseTypeMap.keys"]], "values() (basetypemap method)": [[59, "cpymad.madx.BaseTypeMap.values"]], "command (class in cpymad.madx)": [[60, "cpymad.madx.Command"]], "__call__() (command method)": [[60, "cpymad.madx.Command.__call__"]], "clear() (command method)": [[60, "cpymad.madx.Command.clear"]], "clone() (command method)": [[60, "cpymad.madx.Command.clone"]], "cmdpar (command attribute)": [[60, "cpymad.madx.Command.cmdpar"]], "defs (command attribute)": [[60, "cpymad.madx.Command.defs"]], "get() (command method)": [[60, "cpymad.madx.Command.get"]], "items() (command method)": [[60, "cpymad.madx.Command.items"]], "keys() (command method)": [[60, "cpymad.madx.Command.keys"]], "pop() (command method)": [[60, "cpymad.madx.Command.pop"]], "popitem() (command method)": [[60, "cpymad.madx.Command.popitem"]], "setdefault() (command method)": [[60, "cpymad.madx.Command.setdefault"]], "update() (command method)": [[60, "cpymad.madx.Command.update"]], "values() (command method)": [[60, "cpymad.madx.Command.values"]], "commandlog (class in cpymad.madx)": [[61, "cpymad.madx.CommandLog"]], "__call__() (commandlog method)": [[61, "cpymad.madx.CommandLog.__call__"]], "close() (commandlog method)": [[61, "cpymad.madx.CommandLog.close"]], "create() (commandlog class method)": [[61, "cpymad.madx.CommandLog.create"]], "commandmap (class in cpymad.madx)": [[62, "cpymad.madx.CommandMap"]], "get() (commandmap method)": [[62, "cpymad.madx.CommandMap.get"]], "items() (commandmap method)": [[62, "cpymad.madx.CommandMap.items"]], "keys() (commandmap method)": [[62, "cpymad.madx.CommandMap.keys"]], "values() (commandmap method)": [[62, "cpymad.madx.CommandMap.values"]], "element (class in cpymad.madx)": [[63, "cpymad.madx.Element"]], "__call__() (element method)": [[63, "cpymad.madx.Element.__call__"]], "base_type (element attribute)": [[63, "cpymad.madx.Element.base_type"]], "clear() (element method)": [[63, "cpymad.madx.Element.clear"]], "clone() (element method)": [[63, "cpymad.madx.Element.clone"]], "cmdpar (element attribute)": [[63, "cpymad.madx.Element.cmdpar"]], "defs (element attribute)": [[63, "cpymad.madx.Element.defs"]], "get() (element method)": [[63, "cpymad.madx.Element.get"]], "items() (element method)": [[63, "cpymad.madx.Element.items"]], "keys() (element method)": [[63, "cpymad.madx.Element.keys"]], "parent (element attribute)": [[63, "cpymad.madx.Element.parent"]], "pop() (element method)": [[63, "cpymad.madx.Element.pop"]], "popitem() (element method)": [[63, "cpymad.madx.Element.popitem"]], "setdefault() (element method)": [[63, "cpymad.madx.Element.setdefault"]], "update() (element method)": [[63, "cpymad.madx.Element.update"]], "values() (element method)": [[63, "cpymad.madx.Element.values"]], "elementlist (class in cpymad.madx)": [[64, "cpymad.madx.ElementList"]], "at() (elementlist method)": [[64, "cpymad.madx.ElementList.at"]], "count() (elementlist method)": [[64, "cpymad.madx.ElementList.count"]], "index() (elementlist method)": [[64, "cpymad.madx.ElementList.index"]], "expandedelementlist (class in cpymad.madx)": [[65, "cpymad.madx.ExpandedElementList"]], "at() (expandedelementlist method)": [[65, "cpymad.madx.ExpandedElementList.at"]], "count() (expandedelementlist method)": [[65, "cpymad.madx.ExpandedElementList.count"]], "index() (expandedelementlist method)": [[65, "cpymad.madx.ExpandedElementList.index"]], "globalelementlist (class in cpymad.madx)": [[66, "cpymad.madx.GlobalElementList"]], "get() (globalelementlist method)": [[66, "cpymad.madx.GlobalElementList.get"]], "index() (globalelementlist method)": [[66, "cpymad.madx.GlobalElementList.index"]], "items() (globalelementlist method)": [[66, "cpymad.madx.GlobalElementList.items"]], "keys() (globalelementlist method)": [[66, "cpymad.madx.GlobalElementList.keys"]], "values() (globalelementlist method)": [[66, "cpymad.madx.GlobalElementList.values"]], "madx (class in cpymad.madx)": [[67, "cpymad.madx.Madx"]], "__call__() (madx method)": [[67, "cpymad.madx.Madx.__call__"]], "batch() (madx method)": [[67, "cpymad.madx.Madx.batch"]], "beam (madx attribute)": [[67, "cpymad.madx.Madx.beam"]], "call() (madx method)": [[67, "cpymad.madx.Madx.call"]], "chdir() (madx method)": [[67, "cpymad.madx.Madx.chdir"]], "eval() (madx method)": [[67, "cpymad.madx.Madx.eval"]], "exit() (madx method)": [[67, "cpymad.madx.Madx.exit"]], "expr_vars() (madx method)": [[67, "cpymad.madx.Madx.expr_vars"]], "input() (madx method)": [[67, "cpymad.madx.Madx.input"]], "match() (madx method)": [[67, "cpymad.madx.Madx.match"]], "options (madx attribute)": [[67, "cpymad.madx.Madx.options"]], "quit() (madx method)": [[67, "cpymad.madx.Madx.quit"]], "sectormap() (madx method)": [[67, "cpymad.madx.Madx.sectormap"]], "sectortable() (madx method)": [[67, "cpymad.madx.Madx.sectortable"]], "sectortable2() (madx method)": [[67, "cpymad.madx.Madx.sectortable2"]], "survey() (madx method)": [[67, "cpymad.madx.Madx.survey"]], "twiss() (madx method)": [[67, "cpymad.madx.Madx.twiss"]], "use() (madx method)": [[67, "cpymad.madx.Madx.use"]], "verbose() (madx method)": [[67, "cpymad.madx.Madx.verbose"]], "version (madx attribute)": [[67, "cpymad.madx.Madx.version"]], "metadata (class in cpymad.madx)": [[68, "cpymad.madx.Metadata"]], "get_copyright_notice() (metadata method)": [[68, "cpymad.madx.Metadata.get_copyright_notice"]], "sequence (class in cpymad.madx)": [[69, "cpymad.madx.Sequence"]], "beam (sequence attribute)": [[69, "cpymad.madx.Sequence.beam"]], "element_names() (sequence method)": [[69, "cpymad.madx.Sequence.element_names"]], "element_positions() (sequence method)": [[69, "cpymad.madx.Sequence.element_positions"]], "elements (sequence attribute)": [[69, "cpymad.madx.Sequence.elements"]], "expand() (sequence method)": [[69, "cpymad.madx.Sequence.expand"]], "expanded_element_names() (sequence method)": [[69, "cpymad.madx.Sequence.expanded_element_names"]], "expanded_element_positions() (sequence method)": [[69, "cpymad.madx.Sequence.expanded_element_positions"]], "expanded_elements (sequence attribute)": [[69, "cpymad.madx.Sequence.expanded_elements"]], "has_beam (sequence attribute)": [[69, "cpymad.madx.Sequence.has_beam"]], "is_expanded (sequence attribute)": [[69, "cpymad.madx.Sequence.is_expanded"]], "length (sequence attribute)": [[69, "cpymad.madx.Sequence.length"]], "name (sequence attribute)": [[69, "cpymad.madx.Sequence.name"]], "twiss_table (sequence attribute)": [[69, "cpymad.madx.Sequence.twiss_table"]], "twiss_table_name (sequence attribute)": [[69, "cpymad.madx.Sequence.twiss_table_name"]], "use() (sequence method)": [[69, "cpymad.madx.Sequence.use"]], "sequencemap (class in cpymad.madx)": [[70, "cpymad.madx.SequenceMap"]], "__call__() (sequencemap method)": [[70, "cpymad.madx.SequenceMap.__call__"]], "get() (sequencemap method)": [[70, "cpymad.madx.SequenceMap.get"]], "items() (sequencemap method)": [[70, "cpymad.madx.SequenceMap.items"]], "keys() (sequencemap method)": [[70, "cpymad.madx.SequenceMap.keys"]], "values() (sequencemap method)": [[70, "cpymad.madx.SequenceMap.values"]], "table (class in cpymad.madx)": [[71, "cpymad.madx.Table"]], "col_names() (table method)": [[71, "cpymad.madx.Table.col_names"]], "column() (table method)": [[71, "cpymad.madx.Table.column"]], "copy() (table method)": [[71, "cpymad.madx.Table.copy"]], "dframe() (table method)": [[71, "cpymad.madx.Table.dframe"]], "get() (table method)": [[71, "cpymad.madx.Table.get"]], "getmat() (table method)": [[71, "cpymad.madx.Table.getmat"]], "items() (table method)": [[71, "cpymad.madx.Table.items"]], "keys() (table method)": [[71, "cpymad.madx.Table.keys"]], "kvec() (table method)": [[71, "cpymad.madx.Table.kvec"]], "range (table attribute)": [[71, "cpymad.madx.Table.range"]], "reload() (table method)": [[71, "cpymad.madx.Table.reload"]], "rmat() (table method)": [[71, "cpymad.madx.Table.rmat"]], "row() (table method)": [[71, "cpymad.madx.Table.row"]], "row_names() (table method)": [[71, "cpymad.madx.Table.row_names"]], "selected_columns() (table method)": [[71, "cpymad.madx.Table.selected_columns"]], "selected_rows() (table method)": [[71, "cpymad.madx.Table.selected_rows"]], "selection() (table method)": [[71, "cpymad.madx.Table.selection"]], "sigmat() (table method)": [[71, "cpymad.madx.Table.sigmat"]], "summary (table attribute)": [[71, "cpymad.madx.Table.summary"]], "tmat() (table method)": [[71, "cpymad.madx.Table.tmat"]], "values() (table method)": [[71, "cpymad.madx.Table.values"]], "tablemap (class in cpymad.madx)": [[72, "cpymad.madx.TableMap"]], "get() (tablemap method)": [[72, "cpymad.madx.TableMap.get"]], "items() (tablemap method)": [[72, "cpymad.madx.TableMap.items"]], "keys() (tablemap method)": [[72, "cpymad.madx.TableMap.keys"]], "values() (tablemap method)": [[72, "cpymad.madx.TableMap.values"]], "twissfailed": [[73, "cpymad.madx.TwissFailed"]], "varlist (class in cpymad.madx)": [[74, "cpymad.madx.VarList"]], "clear() (varlist method)": [[74, "cpymad.madx.VarList.clear"]], "cmdpar (varlist attribute)": [[74, "cpymad.madx.VarList.cmdpar"]], "defs (varlist attribute)": [[74, "cpymad.madx.VarList.defs"]], "get() (varlist method)": [[74, "cpymad.madx.VarList.get"]], "items() (varlist method)": [[74, "cpymad.madx.VarList.items"]], "keys() (varlist method)": [[74, "cpymad.madx.VarList.keys"]], "pop() (varlist method)": [[74, "cpymad.madx.VarList.pop"]], "popitem() (varlist method)": [[74, "cpymad.madx.VarList.popitem"]], "setdefault() (varlist method)": [[74, "cpymad.madx.VarList.setdefault"]], "update() (varlist method)": [[74, "cpymad.madx.VarList.update"]], "values() (varlist method)": [[74, "cpymad.madx.VarList.values"]], "varparamlist (class in cpymad.madx)": [[75, "cpymad.madx.VarParamList"]], "get() (varparamlist method)": [[75, "cpymad.madx.VarParamList.get"]], "items() (varparamlist method)": [[75, "cpymad.madx.VarParamList.items"]], "keys() (varparamlist method)": [[75, "cpymad.madx.VarParamList.keys"]], "values() (varparamlist method)": [[75, "cpymad.madx.VarParamList.values"]], "version (class in cpymad.madx)": [[76, "cpymad.madx.Version"]], "metadata (in module cpymad.madx)": [[77, "cpymad.madx.metadata"]], "alignerror (class in cpymad.types)": [[78, "cpymad.types.AlignError"]], "arex (alignerror attribute)": [[78, "cpymad.types.AlignError.arex"]], "arey (alignerror attribute)": [[78, "cpymad.types.AlignError.arey"]], "count() (alignerror method)": [[78, "cpymad.types.AlignError.count"]], "dphi (alignerror attribute)": [[78, "cpymad.types.AlignError.dphi"]], "dpsi (alignerror attribute)": [[78, "cpymad.types.AlignError.dpsi"]], "ds (alignerror attribute)": [[78, "cpymad.types.AlignError.ds"]], "dtheta (alignerror attribute)": [[78, "cpymad.types.AlignError.dtheta"]], "dx (alignerror attribute)": [[78, "cpymad.types.AlignError.dx"]], "dy (alignerror attribute)": [[78, "cpymad.types.AlignError.dy"]], "index() (alignerror method)": [[78, "cpymad.types.AlignError.index"]], "mredx (alignerror attribute)": [[78, "cpymad.types.AlignError.mredx"]], "mredy (alignerror attribute)": [[78, "cpymad.types.AlignError.mredy"]], "mrex (alignerror attribute)": [[78, "cpymad.types.AlignError.mrex"]], "mrey (alignerror attribute)": [[78, "cpymad.types.AlignError.mrey"]], "mscalx (alignerror attribute)": [[78, "cpymad.types.AlignError.mscalx"]], "mscaly (alignerror attribute)": [[78, "cpymad.types.AlignError.mscaly"]], "constraint (class in cpymad.types)": [[79, "cpymad.types.Constraint"]], "fielderror (class in cpymad.types)": [[80, "cpymad.types.FieldError"]], "count() (fielderror method)": [[80, "cpymad.types.FieldError.count"]], "dkn (fielderror attribute)": [[80, "cpymad.types.FieldError.dkn"]], "dks (fielderror attribute)": [[80, "cpymad.types.FieldError.dks"]], "index() (fielderror method)": [[80, "cpymad.types.FieldError.index"]], "param_type_constraint (in module cpymad.types)": [[81, "cpymad.types.PARAM_TYPE_CONSTRAINT"]], "param_type_double (in module cpymad.types)": [[82, "cpymad.types.PARAM_TYPE_DOUBLE"]], "param_type_double_array (in module cpymad.types)": [[83, "cpymad.types.PARAM_TYPE_DOUBLE_ARRAY"]], "param_type_integer (in module cpymad.types)": [[84, "cpymad.types.PARAM_TYPE_INTEGER"]], "param_type_integer_array (in module cpymad.types)": [[85, "cpymad.types.PARAM_TYPE_INTEGER_ARRAY"]], "param_type_logical (in module cpymad.types)": [[86, "cpymad.types.PARAM_TYPE_LOGICAL"]], "param_type_logical_array (in module cpymad.types)": [[87, "cpymad.types.PARAM_TYPE_LOGICAL_ARRAY"]], "param_type_string (in module cpymad.types)": [[88, "cpymad.types.PARAM_TYPE_STRING"]], "param_type_string_array (in module cpymad.types)": [[89, "cpymad.types.PARAM_TYPE_STRING_ARRAY"]], "parameter (class in cpymad.types)": [[90, "cpymad.types.Parameter"]], "__call__() (parameter method)": [[90, "cpymad.types.Parameter.__call__"]], "definition (parameter attribute)": [[90, "cpymad.types.Parameter.definition"]], "dtype (parameter attribute)": [[90, "cpymad.types.Parameter.dtype"]], "expr (parameter attribute)": [[90, "cpymad.types.Parameter.expr"]], "inform (parameter attribute)": [[90, "cpymad.types.Parameter.inform"]], "name (parameter attribute)": [[90, "cpymad.types.Parameter.name"]], "value (parameter attribute)": [[90, "cpymad.types.Parameter.value"]], "var_type (parameter attribute)": [[90, "cpymad.types.Parameter.var_type"]], "phaseerror (class in cpymad.types)": [[91, "cpymad.types.PhaseError"]], "count() (phaseerror method)": [[91, "cpymad.types.PhaseError.count"]], "dpn (phaseerror attribute)": [[91, "cpymad.types.PhaseError.dpn"]], "dps (phaseerror attribute)": [[91, "cpymad.types.PhaseError.dps"]], "index() (phaseerror method)": [[91, "cpymad.types.PhaseError.index"]], "range (class in cpymad.types)": [[92, "cpymad.types.Range"]], "count() (range method)": [[92, "cpymad.types.Range.count"]], "first (range attribute)": [[92, "cpymad.types.Range.first"]], "index() (range method)": [[92, "cpymad.types.Range.index"]], "last (range attribute)": [[92, "cpymad.types.Range.last"]], "var_type_const (in module cpymad.types)": [[93, "cpymad.types.VAR_TYPE_CONST"]], "var_type_deferred (in module cpymad.types)": [[94, "cpymad.types.VAR_TYPE_DEFERRED"]], "var_type_direct (in module cpymad.types)": [[95, "cpymad.types.VAR_TYPE_DIRECT"]], "var_type_string (in module cpymad.types)": [[96, "cpymad.types.VAR_TYPE_STRING"]], "changedirectory (class in cpymad.util)": [[97, "cpymad.util.ChangeDirectory"]], "check_expression() (in module cpymad.util)": [[98, "cpymad.util.check_expression"]], "format_cmdpar() (in module cpymad.util)": [[99, "cpymad.util.format_cmdpar"]], "format_command() (in module cpymad.util)": [[100, "cpymad.util.format_command"]], "format_param() (in module cpymad.util)": [[101, "cpymad.util.format_param"]], "is_identifier() (in module cpymad.util)": [[102, "cpymad.util.is_identifier"]], "mad_quote() (in module cpymad.util)": [[103, "cpymad.util.mad_quote"]], "name_from_internal() (in module cpymad.util)": [[104, "cpymad.util.name_from_internal"]], "name_to_internal() (in module cpymad.util)": [[105, "cpymad.util.name_to_internal"]], "temp_filename() (in module cpymad.util)": [[106, "cpymad.util.temp_filename"]], "cpymad.libmadx": [[109, "module-cpymad.libmadx"]], "module": [[109, "module-cpymad.libmadx"], [110, "module-cpymad.madx"], [111, "module-cpymad.types"], [112, "module-cpymad.util"]], "cpymad.madx": [[110, "module-cpymad.madx"]], "cpymad.types": [[111, "module-cpymad.types"]], "cpymad.util": [[112, "module-cpymad.util"]]}}) \ No newline at end of file