Source code for atsim.potentials.config._common

import collections
import sys

try:
  from inspect import signature, Parameter
except ImportError:
  from funcsigs import signature, Parameter

[docs]SpeciesTuple = collections.namedtuple("SpeciesTuple", ["species_a", "species_b"])
[docs]EAMFSDensitySpeciesTuple = collections.namedtuple("EAMFSDensitySpeciesTuple", ["from_species", "to_species"])
_tuple_args = ["species", 'potential_form_instance']
[docs]EAMEmbedTuple = collections.namedtuple("EAMEmbedTuple", _tuple_args)
[docs]EAMDensityTuple = collections.namedtuple("EAMDensityTuple", _tuple_args)
[docs]PairPotentialTuple = collections.namedtuple("PairPotentialTuple", _tuple_args)
[docs]PotentialFormInstanceTuple = collections.namedtuple('PotentialFormInstanceTuple', ['potential_form', 'parameters', 'start', 'next'])
[docs]PotentialFormSignatureTuple = collections.namedtuple("PotentialFormSignatureTuple", ["label", "parameter_names", "is_varargs"])
[docs]PotentialFormTuple = collections.namedtuple("PotentialFormTuple", ["signature", "expression"])
[docs]MultiRangeDefinitionTuple = collections.namedtuple("MultiRangeDefinition", ["range_type", "start"])
[docs]PotentialModifierTuple = collections.namedtuple("PotentialModifierTuple", ['modifier', 'potential_forms', 'start', 'next'])
[docs]TableFormTuple = collections.namedtuple("TableFormTuple", ['name', 'interpolation', 'x', 'y'])
[docs]class ConfigurationException(Exception): pass
[docs]class ConfigParserException(ConfigurationException): pass
[docs]class ConfigParserMissingSectionException(ConfigParserException): pass
[docs]class ConfigParserDuplicateEntryException(ConfigParserException): pass
[docs]class Potential_Form_Registry_Exception(ConfigurationException): pass
[docs]class Potential_Form_Exception(ConfigurationException): pass
[docs]class Table_Form_Exception(ConfigurationException): pass
[docs]class Modifier_Exception(ConfigurationException): pass
[docs]class Unknown_Modifier_Exception(Modifier_Exception): pass
def _is_vararg_signature(sig): for p in sig.parameters.values(): if not p.kind == Parameter.VAR_POSITIONAL: return False return True
[docs]def make_potential_form_tuple_from_function(name, pyfunc): sig = signature(pyfunc) # Is this a varargs function? varargs = _is_vararg_signature(sig) args = [] if not varargs: for param in sig.parameters.values(): args.append(param.name) d = PotentialFormTuple(signature = PotentialFormSignatureTuple(name, args, varargs), expression = "") return d