BDNS
index
/home/pfeiffer/project-shared/publicize/bii_scripts-top/bii_scripts/lib/python/bii_scripts3/BDNS.py

BDNS Name parser

 
Modules
       
re
sys

 
Functions
       
cmpNames(a, b)
compare two names by the internal global order.
 
The internal global order is set by setOrder().
 
parameters:
    a      - first devicename to compare
    b      - second devicename to compare
returns:
    -1 if a<b, 0 if a==b and 1 if a>b
cmpNamesBy(a, b, order)
compare two names by a given order.
 
parameters:
    a      - first devicename to compare
    b      - second devicename to compare
    order  - a list of integers, created by mkOrder()
returns:
    -1 if a<b, 0 if a==b and 1 if a>b
keyOfNameByOrder(a, order)
return an order key for a.
 
parameters:
    a      - devicename
    order  - a list of integers, created by mkOrder()
returns:
    a tuple than can be used for sorting
mkOrder(order)
create an order list from an order specification.
 
The created list can be used with sortNamesBy().
 
parameters:
    order - either "DEFAULT" or a list of fields or a comma separated list
            of fields. A field in this case is either a fieldname, a string
            like "DOMAIN" or an integer like 10.  It corresponds to a field
            name or field index as they are returned by parse() or
            parse_named().
returns:
    a list of integers, each representing a field. This returned list is
    usually given as parameter to sortNamesBy().
parse(devname)
parse a BESSY or MLS device name, return a tuple.
 
parameters:
    devname: the device name to parse (a string)
returns:
    a tuple consisting of :
    member,allindex,index,subindex,family,counter,allsubdomain,subdomain,
    subdompre,subdomnumber,domain,facility
parse_named(devname)
parse a BESSY or MLS device name, return a dictionary.
 
parameters:
    devname: the device name to parse (a string)
returns:
    a dictionary consisting of key-value pairs, these are the known keys:
    member,allindex,index,subindex,family,counter,allsubdomain,subdomain,
    subdompre,subdomnumber,domain,facility
setOrder(order)
set the internal global order list from an order specification.
 
The internal global order list is used by sortNames().
 
parameters:
    order - either "DEFAULT" or a list of fields or a comma separated list
            of fields. A field in this case is either a fieldname, a string
            like "DOMAIN" or an integer like 10.  It corresponds to a field
            name or field index as they are returned by parse() or
            parse_named().
returns:
    a list of integers, each representing a field. This returned list is
    usually given as parameter to sortNamesBy().
sortNames(devicenames)
sort devicenames by the global set order.
 
The global order is set by the function setOrder().
returns:
    a sorted list of devicenames
sortNamesBy(devicenames, order)
sort devicenames by a given order.
 
parameters:
    order  - a list of integers, created by mkOrder()
returns:
    a sorted list of devicenames

 
Data
        MAXLENGTH = 22
_default_order = [11, 10, 8, 9, 0, 2, 3, 4, 5]
_fields = ('member', 'allindex', 'index', 'subindex', 'family', 'counter', 'allsubdomain', 'subdomain', 'subdompre', 'subdomnumber', 'domain', 'facility')
_fields_dict = {'allindex': 1, 'allsubdomain': 6, 'counter': 5, 'domain': 10, 'facility': 11, 'family': 4, 'index': 2, 'member': 0, 'subdomain': 7, 'subdomnumber': 9, ...}
_gbl_order = [11, 10, 8, 9, 0, 2, 3, 4, 5]
_p = {'pcnt': '[0-9]*', 'pdom_B': 'CEGLVXBIMRST', 'pdom_F': 'CEGLVXAEHKST', 'pdom_P': 'CEGLVXMRT', 'pdom_global': 'CEGLVX', 'pfac': 'FP', 'pfam_B': 'BCEFGHIKLMNOPQRVWYZ', 'pfam_F': 'BCEFGHIKLMNOPQRVWYZST', 'pfam_P': 'BCEFGHIKLMNOPQRVWYZ', 'pfam_global': 'BCEFGHIKLMNOPQRVWYZ', ...}
_re_devname = '^((([A-Z]+?)(([0-9]+)(-([0-9]+))?)?([BCEFGHIKLMN...RVWYZ])([0-9]*)([XBUKLS][0-9]*)?([CEGLVXMRT])P))$'
_rx_capletter = re.compile('([A-Z])(.*)')
_rx_devname = re.compile('^((([A-Z]+?)(([0-9]+)(-([0-9]+))?)?(...RVWYZST])([0-9]*)([XABCDEGKLMSVZ][0-9]*)([CEGLVX)
_rx_name_part = re.compile('([\\w\\d-]*)$')