gavo.rscdef.column module

Description of columns (and I/O fields).

class gavo.rscdef.column.Column(parent, **kwargs)[source]

Bases: ColumnBase

A database column.

Columns contain almost all metadata to describe a column in a database table or a VOTable (the exceptions are for column properties that may span several columns, most notably indices).

Note that the type system adopted by the DC software is a subset of postgres’ type system. Thus when defining types, you have to specify basically SQL types. Types for other type systems (like VOTable, XSD, or the software-internal representation in python values) are inferred from them.

Columns can have delimited identifiers as names. Don’t do this, it’s no end of trouble. For this reason, however, you should not use name but rather key to programmatially obtain field’s values from rows.

Properties evaluated:

  • std – set to 1 to tell the tap schema importer to have the column’s std column in TAP_SCHEMA 1 (it’s 0 otherwise).

  • statisticsTarget – an integer to be set as this column’s statistics-gathering target. Set this to something between 100 and 10000 on postgres if you have large tables and columns with strongly non-uniform distributions. Set to -1 to revert to the system default. gavo imp -m will apply changes here; you’ll manually have to run

    analyze <tablename> after that.

  • statistics – set this to “no” to keep DaCHS from using this column in dachs limits. Set this to “enumerate” to make DaCHS collect the discrete values allowed (currently only supported for strings).

  • targetType – for a column containing a URL, the media type of the resource pointed at. This is for producing extra annotation for Aladin and friends as per http://mail.ivoa.net/pipermail/dal/2018-May/008017.html

  • targetTitle – if you give targetType, use this to set the link

    title (defaults to “Link”).

attrSeq = [<gavo.base.meta.MetaAttribute object>, <gavo.rscdef.column.ColumnNameAttribute object>, <gavo.rscdef.column.TypeNameAttribute object>, <gavo.base.attrdef.UnicodeAttribute object>, <gavo.base.attrdef.UnicodeAttribute object>, <gavo.base.attrdef.NWUnicodeAttribute object>, <gavo.rscdef.column.TableManagedAttribute object>, <gavo.rscdef.column.TableManagedAttribute object>, <gavo.base.parsecontext.OriginalAttribute object>, <gavo.base.attrdef.BooleanAttribute object>, <gavo.base.complexattrs.PropertyAttribute object>, <gavo.base.attrdef.UnicodeAttribute object>, <gavo.base.attrdef.UnicodeAttribute object>, <gavo.base.attrdef.BooleanAttribute object>, <gavo.base.complexattrs.StructAttribute object>, <gavo.base.attrdef.UnicodeAttribute object>, <gavo.rscdef.column.DisplayHintAttribute object>, <gavo.base.structure.DataContent object>, <gavo.rscdef.column.DMRolesAttribute object>, <gavo.base.parsecontext.IdAttribute object>, <gavo.base.attrdef.IntAttribute object>, <gavo.base.attrdef.UnicodeAttribute object>, <gavo.base.attrdef.UnicodeAttribute object>]
clearProperty(name)
completedCallbacks = []
getAnnotation(roleName, container, instance)[source]
getProperty(name, default=<Undefined>)
getStatistics()[source]

returns a dictionary with COLSTATS (or later VS.column) keys containing any statistic information in this column’s values.

Values are blindly stringified right now; we may have to switch to using VOTable tabledata serialisation as we allow column statistics on items that have non-trivial serialisations.

hasProperty(name)
managedAttrs = {'content_': <gavo.base.structure.DataContent object>, 'description': <gavo.base.attrdef.NWUnicodeAttribute object>, 'displayHint': <gavo.rscdef.column.DisplayHintAttribute object>, 'dmRoles': <gavo.rscdef.column.DMRolesAttribute object>, 'fixup': <gavo.base.attrdef.UnicodeAttribute object>, 'hidden': <gavo.base.attrdef.BooleanAttribute object>, 'id': <gavo.base.parsecontext.IdAttribute object>, 'meta': <gavo.base.meta.MetaAttribute object>, 'meta_': <gavo.base.meta.MetaAttribute object>, 'name': <gavo.rscdef.column.ColumnNameAttribute object>, 'note': <gavo.base.attrdef.UnicodeAttribute object>, 'original': <gavo.base.parsecontext.OriginalAttribute object>, 'properties': <gavo.base.complexattrs.PropertyAttribute object>, 'property': <gavo.base.complexattrs.PropertyAttribute object>, 'required': <gavo.base.attrdef.BooleanAttribute object>, 'stc': <gavo.rscdef.column.TableManagedAttribute object>, 'stcUtype': <gavo.rscdef.column.TableManagedAttribute object>, 'tablehead': <gavo.base.attrdef.UnicodeAttribute object>, 'type': <gavo.rscdef.column.TypeNameAttribute object>, 'ucd': <gavo.base.attrdef.UnicodeAttribute object>, 'unit': <gavo.base.attrdef.UnicodeAttribute object>, 'utype': <gavo.base.attrdef.UnicodeAttribute object>, 'values': <gavo.base.complexattrs.StructAttribute object>, 'verbLevel': <gavo.base.attrdef.IntAttribute object>, 'xtype': <gavo.base.attrdef.UnicodeAttribute object>}
name_ = 'column'
setProperty(name, value)
updateFromContext(tableId, columnName, ctx)[source]

pulls the injected column metadata from the context into our values.

This is being called from table’s completeElement – only then is everything we depend on reasonably complete, and table knows better if we should even bother.

validate()[source]
class gavo.rscdef.column.ColumnBase(parent, **kwargs)[source]

Bases: Structure, MetaMixin

A base class for columns, parameters, output fields, etc.

Actually, right now there’s far too much cruft in here that should go into Column proper or still somewhere else. Hence: XXX TODO: Refactor.

See also Column for a docstring that still applies to all we’ve in here.

asInfoDict()[source]

returns a dictionary of certain, “user-interesting” properties of the data field, in a dict of strings.

attrSeq = [<gavo.base.meta.MetaAttribute object>, <gavo.rscdef.column.ParamNameAttribute object>, <gavo.rscdef.column.TypeNameAttribute object>, <gavo.base.attrdef.UnicodeAttribute object>, <gavo.base.attrdef.UnicodeAttribute object>, <gavo.base.attrdef.NWUnicodeAttribute object>, <gavo.rscdef.column.TableManagedAttribute object>, <gavo.rscdef.column.TableManagedAttribute object>, <gavo.base.parsecontext.OriginalAttribute object>, <gavo.base.attrdef.BooleanAttribute object>, <gavo.base.complexattrs.PropertyAttribute object>, <gavo.base.attrdef.UnicodeAttribute object>, <gavo.base.attrdef.UnicodeAttribute object>, <gavo.base.attrdef.UnicodeAttribute object>, <gavo.base.complexattrs.StructAttribute object>, <gavo.rscdef.column.DisplayHintAttribute object>, <gavo.base.parsecontext.IdAttribute object>, <gavo.rscdef.column.DMRolesAttribute object>, <gavo.base.attrdef.IntAttribute object>, <gavo.base.attrdef.UnicodeAttribute object>, <gavo.base.attrdef.UnicodeAttribute object>]
clearProperty(name)
completeElement(ctx)[source]
completedCallbacks = []
getDDL()[source]

returns an SQL fragment describing this column ready for inclusion in a DDL statement.

getDisplayHintAsString()[source]
getLabel()[source]

returns a short label for this column.

The label is either the tablehead or, missing it, the capitalized column name.

getProperty(name, default=<Undefined>)
hasProperty(name)
isEnumerated()[source]
isIndexed()[source]

returns a set of index kinds if this column is indexed, False if it isn’t or None if we don’t know because we don’t have a proper parent.

In other words: it’s a true value if the thing is indexed, a false one if it is. All further refinements are probably only there for more informed ADQL query morphing.

isPrimary()[source]

returns a guess as to whether this column is a primary key of the embedding table.

This may return True, False, or None (unknown).

isScalar()[source]

returns true if we consider the array’s values as scalar.

A single string is scalar for us.

managedAttrs = {'description': <gavo.base.attrdef.NWUnicodeAttribute object>, 'displayHint': <gavo.rscdef.column.DisplayHintAttribute object>, 'dmRoles': <gavo.rscdef.column.DMRolesAttribute object>, 'fixup': <gavo.base.attrdef.UnicodeAttribute object>, 'id': <gavo.base.parsecontext.IdAttribute object>, 'meta': <gavo.base.meta.MetaAttribute object>, 'meta_': <gavo.base.meta.MetaAttribute object>, 'name': <gavo.rscdef.column.ParamNameAttribute object>, 'note': <gavo.base.attrdef.UnicodeAttribute object>, 'original': <gavo.base.parsecontext.OriginalAttribute object>, 'properties': <gavo.base.complexattrs.PropertyAttribute object>, 'property': <gavo.base.complexattrs.PropertyAttribute object>, 'required': <gavo.base.attrdef.BooleanAttribute object>, 'stc': <gavo.rscdef.column.TableManagedAttribute object>, 'stcUtype': <gavo.rscdef.column.TableManagedAttribute object>, 'tablehead': <gavo.base.attrdef.UnicodeAttribute object>, 'type': <gavo.rscdef.column.TypeNameAttribute object>, 'ucd': <gavo.base.attrdef.UnicodeAttribute object>, 'unit': <gavo.base.attrdef.UnicodeAttribute object>, 'utype': <gavo.base.attrdef.UnicodeAttribute object>, 'values': <gavo.base.complexattrs.StructAttribute object>, 'verbLevel': <gavo.base.attrdef.IntAttribute object>, 'xtype': <gavo.base.attrdef.UnicodeAttribute object>}
onParentComplete()[source]
restrictedMode = False
setMetaParent(parent)[source]
setParent(parent)[source]

sets the parent of a Structure.

This is a method mainly to let individual elements override the behaviour.

setProperty(name, value)
validate()[source]
validateValue(value)[source]

raises a ValidationError if value does not match the constraints given here.

class gavo.rscdef.column.ColumnNameAttribute(name, **kwargs)[source]

Bases: ParamNameAttribute

An attribute containing a name suitable for SQL table names.

Column names are special in that you can prefix them with “quoted/” and then get a delimited identifier. This is something you probably shouldn’t use.

Using ADQL/SQL reserved words (without quoting) here yields a warning.

parse(value)[source]

returns a typed python value for the string representation value.

value can be expected to be a unicode string.

property typeDesc_

str(object=’’) -> str str(bytes_or_buffer[, encoding[, errors]]) -> str

Create a new string object from the given object. If encoding or errors is specified, then the object must expose a data buffer that will be decoded using the given encoding and error handler. Otherwise, returns the result of object.__str__() (if defined) or repr(object). encoding defaults to sys.getdefaultencoding(). errors defaults to ‘strict’.

unparse(value)[source]

returns a typed python value for the string representation value.

value can be expected to be a unicode string.

class gavo.rscdef.column.DMRolesAttribute(name, description='Undocumented')[source]

Bases: AttributeDef

An attribute managing DM roles.

It is not set directly from XML but filled when a table parses DM annotation. When copying around columns between tables, this is used to build the new annotation; the value is an oldAnnotations instance rather than a list as usual until the new parent table has started constructing its own DM annotations.

property default_
feedObject(instance, value)[source]
getCopy(instance, newParent, ctx)[source]
iterEvents(instance)[source]
typeDesc_ = 'read-only list of roles played by this column in DMs'
class gavo.rscdef.column.DisplayHintAttribute(name, description, **kwargs)[source]

Bases: AtomicAttribute

is a display hint.

Display hint literals are comma-separated key=value sequences. Keys are up to the application and evaluated by htmltable, votable, etc.

The parsed values are simply dictionaries mapping strings to strings, i.e., value validation cannot be performed here (yet – do we want this? A central repository of display hints would be kinda useful…)

parse(value)[source]

returns a typed python value for the string representation value.

value can be expected to be a unicode string.

typeDesc_ = 'Display hint'
unparse(value)[source]

returns a typed python value for the string representation value.

value can be expected to be a unicode string.

class gavo.rscdef.column.OldRoles(oldRoles)[source]

Bases: object

A sentinel class for Table to signal non-adapted DM roles on a column or param.

class gavo.rscdef.column.Option(parent, **kwargs)[source]

Bases: Structure

A value for enumerated columns.

For presentation purposes, an option can have a title, defaulting to the option’s value.

attrSeq = [<gavo.base.parsecontext.IdAttribute object>, <gavo.base.attrdef.UnicodeAttribute object>, <gavo.base.structure.DataContent object>]
completeElement(ctx)[source]
completedCallbacks = []
managedAttrs = {'content_': <gavo.base.structure.DataContent object>, 'id': <gavo.base.parsecontext.IdAttribute object>, 'title': <gavo.base.attrdef.UnicodeAttribute object>}
name_ = 'option'
class gavo.rscdef.column.Param(parent, **kwargs)[source]

Bases: ParamBase

A table parameter.

This is like a column, except that it conceptually applies to all rows in the table. In VOTables, params will be rendered as PARAMs.

While we validate the values passed using the DaCHS default parsers, at least the VOTable params will be literal copies of the string passed in.

You can obtain a parsed value from the value attribute.

Null value handling is a bit tricky with params. An empty param (like <param name="x"/>) is always NULL (None in python). In order to allow setting NULL even where syntactially something has to stand, we also turn any __NULL__ to None.

For floats, NaN will also yield NULLs. For integers, you can also use

<param name=”x” type=”integer”><values nullLiteral=”-1”/>-1</params>

For arrays, floats, and strings, the interpretation of values is undefined. Following VOTable practice, we do not tell empty strings and NULLs apart; for internal usage, there is a little hack: __EMPTY__ as literal does set an empty string. This is to allow defaulting of empty strings – in VOTables, these cannot be distinguished from “true” NULLs.

attrSeq = [<gavo.base.meta.MetaAttribute object>, <gavo.rscdef.column.ParamNameAttribute object>, <gavo.rscdef.column.TypeNameAttribute object>, <gavo.base.attrdef.UnicodeAttribute object>, <gavo.base.attrdef.UnicodeAttribute object>, <gavo.base.attrdef.NWUnicodeAttribute object>, <gavo.rscdef.column.TableManagedAttribute object>, <gavo.rscdef.column.TableManagedAttribute object>, <gavo.base.parsecontext.OriginalAttribute object>, <gavo.base.attrdef.BooleanAttribute object>, <gavo.base.attrdef.IntAttribute object>, <gavo.base.complexattrs.PropertyAttribute object>, <gavo.base.attrdef.UnicodeAttribute object>, <gavo.base.attrdef.UnicodeAttribute object>, <gavo.base.attrdef.UnicodeAttribute object>, <gavo.base.complexattrs.StructAttribute object>, <gavo.rscdef.column.DisplayHintAttribute object>, <gavo.rscdef.column.DMRolesAttribute object>, <gavo.base.parsecontext.IdAttribute object>, <gavo.base.attrdef.BooleanAttribute object>, <gavo.base.structure.DataContent object>, <gavo.base.attrdef.UnicodeAttribute object>, <gavo.base.attrdef.UnicodeAttribute object>]
clearProperty(name)
completedCallbacks = []
copy(parent, ctx=None)[source]

returns a deep copy of self, reparented to parent.

This is a shallow wrapper around change, present for backward compatibility.

getAnnotation(roleName, container, instance)[source]

returns a dm annotation for this param (i.e., a paramRef).

getProperty(name, default=<Undefined>)
hasProperty(name)
managedAttrs = {'content_': <gavo.base.structure.DataContent object>, 'description': <gavo.base.attrdef.NWUnicodeAttribute object>, 'displayHint': <gavo.rscdef.column.DisplayHintAttribute object>, 'dmRoles': <gavo.rscdef.column.DMRolesAttribute object>, 'fixup': <gavo.base.attrdef.UnicodeAttribute object>, 'hidden': <gavo.base.attrdef.BooleanAttribute object>, 'id': <gavo.base.parsecontext.IdAttribute object>, 'meta': <gavo.base.meta.MetaAttribute object>, 'meta_': <gavo.base.meta.MetaAttribute object>, 'name': <gavo.rscdef.column.ParamNameAttribute object>, 'note': <gavo.base.attrdef.UnicodeAttribute object>, 'original': <gavo.base.parsecontext.OriginalAttribute object>, 'properties': <gavo.base.complexattrs.PropertyAttribute object>, 'property': <gavo.base.complexattrs.PropertyAttribute object>, 'required': <gavo.base.attrdef.BooleanAttribute object>, 'stc': <gavo.rscdef.column.TableManagedAttribute object>, 'stcUtype': <gavo.rscdef.column.TableManagedAttribute object>, 'tablehead': <gavo.base.attrdef.UnicodeAttribute object>, 'type': <gavo.rscdef.column.TypeNameAttribute object>, 'ucd': <gavo.base.attrdef.UnicodeAttribute object>, 'unit': <gavo.base.attrdef.UnicodeAttribute object>, 'utype': <gavo.base.attrdef.UnicodeAttribute object>, 'values': <gavo.base.complexattrs.StructAttribute object>, 'verbLevel': <gavo.base.attrdef.IntAttribute object>, 'xtype': <gavo.base.attrdef.UnicodeAttribute object>}
name_ = 'param'
set(val)[source]

sets the value of the parameter.

Macros will be expanded if the parent object supports macro expansion.

setProperty(name, value)
validate()[source]
class gavo.rscdef.column.ParamBase(parent, **kwargs)[source]

Bases: ColumnBase

A basic parameter.

This is the base for both Param and InputKey.

attrSeq = [<gavo.base.meta.MetaAttribute object>, <gavo.rscdef.column.ParamNameAttribute object>, <gavo.rscdef.column.TypeNameAttribute object>, <gavo.base.attrdef.UnicodeAttribute object>, <gavo.base.attrdef.UnicodeAttribute object>, <gavo.base.attrdef.NWUnicodeAttribute object>, <gavo.rscdef.column.TableManagedAttribute object>, <gavo.rscdef.column.TableManagedAttribute object>, <gavo.base.parsecontext.OriginalAttribute object>, <gavo.base.attrdef.BooleanAttribute object>, <gavo.base.attrdef.IntAttribute object>, <gavo.base.complexattrs.PropertyAttribute object>, <gavo.base.attrdef.UnicodeAttribute object>, <gavo.base.attrdef.UnicodeAttribute object>, <gavo.base.attrdef.UnicodeAttribute object>, <gavo.base.complexattrs.StructAttribute object>, <gavo.rscdef.column.DisplayHintAttribute object>, <gavo.base.parsecontext.IdAttribute object>, <gavo.rscdef.column.DMRolesAttribute object>, <gavo.base.structure.DataContent object>, <gavo.base.attrdef.UnicodeAttribute object>, <gavo.base.attrdef.UnicodeAttribute object>]
clearProperty(name)
completeElement(ctx)[source]
completedCallbacks = []
property content_
expand(value)[source]

hands up macro expansion requests to a parent, if there is one and it can handle expansions.

getProperty(name, default=<Undefined>)
getStringValue()[source]

returns a string serialisation of the value.

This is what would reproduce the value if embedded in an XML serialisation of the param.

hasProperty(name)
managedAttrs = {'content_': <gavo.base.structure.DataContent object>, 'description': <gavo.base.attrdef.NWUnicodeAttribute object>, 'displayHint': <gavo.rscdef.column.DisplayHintAttribute object>, 'dmRoles': <gavo.rscdef.column.DMRolesAttribute object>, 'fixup': <gavo.base.attrdef.UnicodeAttribute object>, 'id': <gavo.base.parsecontext.IdAttribute object>, 'meta': <gavo.base.meta.MetaAttribute object>, 'meta_': <gavo.base.meta.MetaAttribute object>, 'name': <gavo.rscdef.column.ParamNameAttribute object>, 'note': <gavo.base.attrdef.UnicodeAttribute object>, 'original': <gavo.base.parsecontext.OriginalAttribute object>, 'properties': <gavo.base.complexattrs.PropertyAttribute object>, 'property': <gavo.base.complexattrs.PropertyAttribute object>, 'required': <gavo.base.attrdef.BooleanAttribute object>, 'stc': <gavo.rscdef.column.TableManagedAttribute object>, 'stcUtype': <gavo.rscdef.column.TableManagedAttribute object>, 'tablehead': <gavo.base.attrdef.UnicodeAttribute object>, 'type': <gavo.rscdef.column.TypeNameAttribute object>, 'ucd': <gavo.base.attrdef.UnicodeAttribute object>, 'unit': <gavo.base.attrdef.UnicodeAttribute object>, 'utype': <gavo.base.attrdef.UnicodeAttribute object>, 'values': <gavo.base.complexattrs.StructAttribute object>, 'verbLevel': <gavo.base.attrdef.IntAttribute object>, 'xtype': <gavo.base.attrdef.UnicodeAttribute object>}
nullLiteral = ''
onElementComplete()[source]
set(val)[source]

sets this parameter’s value.

val can be a python value, or string literal. In the second case, this string literal will be preserved in string serializations of this param.

If val is an invalid value for this item, a ValidationError is raised and the item’s value will be Undefined.

setProperty(name, value)
unprocessedTypes = {'file', 'raw'}
property value

returns a typed value for the parameter.

Unset items give None here.

class gavo.rscdef.column.ParamNameAttribute(name, **kwargs)[source]

Bases: UnicodeAttribute

An attribute containing a param or column name.

These, in DaCHS, have to match identifierPat (essentially, like python identifiers). For compatibility with columns, they do allow the quoted/ prefix, but the only place this is really supported is in query generation.

parse(value)[source]

returns a typed python value for the string representation value.

value can be expected to be a unicode string.

property typeDesc_

str(object=’’) -> str str(bytes_or_buffer[, encoding[, errors]]) -> str

Create a new string object from the given object. If encoding or errors is specified, then the object must expose a data buffer that will be decoded using the given encoding and error handler. Otherwise, returns the result of object.__str__() (if defined) or repr(object). encoding defaults to sys.getdefaultencoding(). errors defaults to ‘strict’.

class gavo.rscdef.column.RoEmptyDict[source]

Bases: dict

is a read-only standin for a dict.

It’s hashable, though, since it’s always empty… This is used here for a default for displayHint.

class gavo.rscdef.column.TableManagedAttribute(name, default=None, description='Undocumented', copyable=False, aliases=None, callbacks=None, before=None)[source]

Bases: AttributeDef

An attribute not settable from XML for holding information managed by the parent table.

That’s stc and stcUtype here, currently.

Do not use this in new code. This should to when the stc element can safely be replaced by gavo-dm-based stuff (here: DmRoles).

feed(ctx, instance, value)[source]
feedObject(instance, value)[source]
getCopy(instance, newParent, ctx)[source]
iterEvents(instance)[source]
typeDesc_ = 'non-settable internally used value'
class gavo.rscdef.column.TypeNameAttribute(name, default=None, description='Undocumented', copyable=False, aliases=None, callbacks=None, before=None)[source]

Bases: AtomicAttribute

An attribute with values constrained to types we understand.

parse(value)[source]

returns a typed python value for the string representation value.

value can be expected to be a unicode string.

property typeDesc_

str(object=’’) -> str str(bytes_or_buffer[, encoding[, errors]]) -> str

Create a new string object from the given object. If encoding or errors is specified, then the object must expose a data buffer that will be decoded using the given encoding and error handler. Otherwise, returns the result of object.__str__() (if defined) or repr(object). encoding defaults to sys.getdefaultencoding(). errors defaults to ‘strict’.

unparse(value)[source]

returns a typed python value for the string representation value.

value can be expected to be a unicode string.

class gavo.rscdef.column.Values(parent, **kwargs)[source]

Bases: Structure

Information on a column’s values, in particular its domain.

This is quite like the values element in a VOTable. In particular, to accommodate VOTable usage, we require nullLiteral to be a valid literal for the parent’s type.

Note that DaCHS does not validate for constraints from values on table import. This is mainly because before dachs limits has run, values may not represent the new dataset in semiautomatic values.

With HTTP parameters, values validation does take place (but again, that’s mostly not too helpful because there are query languages sitting in between most of the time).

Hence, the main utility of values is metadata declaration, both in the form renderer (where they become placeholders) and in datalink (where they are communicated as VOTable values).

attrSeq = [<gavo.base.attrdef.BooleanAttribute object>, <gavo.base.attrdef.UnicodeAttribute object>, <gavo.base.attrdef.UnicodeAttribute object>, <gavo.base.attrdef.ActionAttribute object>, <gavo.base.parsecontext.IdAttribute object>, <gavo.base.attrdef.UnicodeAttribute object>, <gavo.base.attrdef.UnicodeAttribute object>, <gavo.base.attrdef.UnicodeAttribute object>, <gavo.base.attrdef.BooleanAttribute object>, <gavo.base.attrdef.UnicodeAttribute object>, <gavo.base.complexattrs.StructListAttribute object>, <gavo.base.parsecontext.OriginalAttribute object>, <gavo.base.attrdef.UnicodeAttribute object>, <gavo.base.attrdef.UnicodeAttribute object>]
completedCallbacks = []
classmethod fromOptions(labels)[source]

returns Values with the elements of labels as valid options.

makePythonVal(literal, sqltype)[source]
managedAttrs = {'caseless': <gavo.base.attrdef.BooleanAttribute object>, 'default': <gavo.base.attrdef.UnicodeAttribute object>, 'fillFactor': <gavo.base.attrdef.UnicodeAttribute object>, 'fromdb': <gavo.base.attrdef.ActionAttribute object>, 'id': <gavo.base.parsecontext.IdAttribute object>, 'max': <gavo.base.attrdef.UnicodeAttribute object>, 'median': <gavo.base.attrdef.UnicodeAttribute object>, 'min': <gavo.base.attrdef.UnicodeAttribute object>, 'multiOk': <gavo.base.attrdef.BooleanAttribute object>, 'nullLiteral': <gavo.base.attrdef.UnicodeAttribute object>, 'option': <gavo.base.complexattrs.StructListAttribute object>, 'options': <gavo.base.complexattrs.StructListAttribute object>, 'original': <gavo.base.parsecontext.OriginalAttribute object>, 'percentile03': <gavo.base.attrdef.UnicodeAttribute object>, 'percentile97': <gavo.base.attrdef.UnicodeAttribute object>}
property max_typed
property min_typed
name_ = 'values'
onParentComplete()[source]

converts options, the nullLiteral, and the default from string literals to python values.

setFromStatRow(statRow, ctx)[source]

fills statistics data from one of our statistics rows.

This will not overwrite values already given to let people manually give statistics.

setOptionsFromDict(dist, ctx)[source]

sets Options from the keys of the dict dist.

This is primarily for injection of values from the DB into the RD. It will hence not change anything if there are already options defined (which are presumably manually set).

validValues = None
validateOptions(value)[source]

returns false if value isn’t either in options or doesn’t consist of items in options.

Various null values always validate here; non-null checking is done by the column on its required attribute.

gavo.rscdef.column.makeOptions(*args)[source]

returns a list of Option instances with values given in args.