# `TangoAttributeNameValidator`

digraph inheritance3b2496729a { bgcolor=transparent; rankdir=UD; ratio=compress; size="8.0, 12.0"; "TangoAttributeNameValidator" [URL="#taurus.core.tango.tangovalidator.TangoAttributeNameValidator",color=dodgerblue1,fillcolor=white,fontcolor=black,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.5,shape=box,style=rounded,target="_top",tooltip="Validator for Tango attribute names. Apart from the standard named"]; "TaurusAttributeNameValidator" -> "TangoAttributeNameValidator" [arrowsize=0.5,style="setlinewidth(0.5)"]; "TaurusAttributeNameValidator" [URL="taurus.core.taurusvalidator-TaurusAttributeNameValidator.html#taurus.core.taurusvalidator.TaurusAttributeNameValidator",color=dodgerblue1,fillcolor=white,fontcolor=black,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.5,shape=box,style=rounded,target="_top",tooltip="Base class for Attribute name validators."]; }

class TangoAttributeNameValidator(*p, **k)

  Validator for Tango attribute names. Apart from the standard named groups (scheme, authority, path, query and fragment), the following named groups are created:

  > - attrname: attribute name including device name

  > - _shortattrname: attribute name excluding device name

  > - devname: as in `TangoDeviceNameValidator`

  > - [_devalias]: as in `TangoDeviceNameValidator`

  > - [_devslashname]: as in `TangoDeviceNameValidator`

  > - [host] as in `TangoAuthorityNameValidator`

  > - [port] as in `TangoAuthorityNameValidator`

  > - [cfgkey] same as fragment (for bck-compat use only)

  Note: brackets on the group name indicate that this group will only contain a string if the URI contains it.

  Import from `taurus.core.tango.tangovalidator` as:

      from taurus.core.tango.tangovalidator import TangoAttributeNameValidator

  authority = '//((?P<host>([\\w\\-_]+\\.)*[\\w\\-_]+):(?P<port>\\d{1,5})|([\\w\\-_]+\\.)*[\\w\\-_]+:\\d{1,5}(,([\\w\\-_]+\\.)*[\\w\\-_]+:\\d{1,5})+)'
  default_scheme = 'tango'
  fragment = '((?P<_fragmentdb>dbase=(yes|no)$)|(?P<cfgkey>[^# ]*))'
  getNames(fullname, factory=None, queryAuth=True, fragment=False)

    Returns the complete and short names

  getUriGroups(name, strict=None)

    Reimplementation of getUriGroups to fix the host and authority name using fully qualified domain name for the host.

  property nonStrictNamePattern

    In non-strict mode, allow double-slash even if there is no Authority. Also allow old-style “?configuration[=cfgkey]” instead of fragment. If cfgkey is present, it is also stored in the “fragment” named group. For example, “tango://a/b/c/d?configuration=label” passes this non-strict form, and the named group “fragment” will contain “label”

  path = '(?P<attrname>/?(?P<devname>((?P<_devalias>[^/?#:]+)|(?P<_devslashname>[^/?#:]+/[^/?#:]+/[^/?#:]+)))/(?P<_shortattrname>[^/?:#]+))'
  query = '(?!)'
  scheme = '(tango|tango-nodb)'