Metadata-Version: 2.1
Name: cs.app.flag
Version: 20181109
Summary: Persistent filesystem based flags for state and control.
Home-page: https://bitbucket.org/cameron_simpson/css/commits/all
Author: Cameron Simpson
Author-email: cs@cskk.id.au
License: UNKNOWN
Description: Persistent filesystem based flags for state and control.
        
        Filesystem visible boolean flags
        for control and status,
        allowing easy monitoring of services or other status,
        and control by flag management
        for programmes which also monitor the flags.
        
        The flags are expressed as individual files with uppercase names
        in a common directory ($HOME/var/flags by default);
        an empty or missing file is "false"
        and a nonempty file is "true".
        
        The Flags class provides easy Pythonic access to this directory.
        It presents as a modifiable mapping whose keys are the flag names:
        
              flags = Flags()
              flags['UNTOPPOST'] = True
        
        There is also a FlaggedMixin class providing convenient methods and attributes
        for maintaining a collection of flags associated with some object
        with flag names prefixed by the object's .name attribute
        uppercased and with an underscore appended:
        
              class SvcD(...,FlaggedMixin):
                def __init__(self, name, ...)
                  self.name = name
                  FlaggedMixin.__init__(self)
                  ...
                def disable(self):
                  self.flag_disable = True
                def restart(self):
                  self.flag_restart = True
                def _restart(self):
                  self.flag_restart = False
                  ... restart the SvcD ...
        
        so that an object set up as:
        
              svcd = SvcD("portfwd")
              print(svcd.flag_disable)
        
        accesses the flag named "PORTFWD_DISABLE".
        
        ## Class `FlaggedMixin`
        
        A mixin class adding flag_* and flagname_* attributes.
        
        ## Class `Flags`
        
        MRO: `collections.abc.MutableMapping`, `collections.abc.Mapping`, `collections.abc.Collection`, `collections.abc.Sized`, `collections.abc.Iterable`, `collections.abc.Container`, `FlaggedMixin`  
        A mapping which directly inspects the flags directory.
        
        ## Function `lowername(s)`
        
        Lowercase letters, transmute '_' to '-'. Note: NOT the reverse of uppername.
        
        ## Function `main(argv=None)`
        
        Main program: inspect or modify flags.
        
        ## Function `main_flagset(argv=None, stdin=None)`
        
        Main program for "flagset" command.
        
        ## Class `PolledFlags`
        
        MRO: `builtins.dict`  
        A mapping which maintains a dict of the current state of the flags directory
        and updates it regularly.
        
        This allows an application to consult the flags very frequently
        without hammering the filesystem.
        
        ## Function `truthy(value)`
        
        Decide whether a value is considered true.
        
        Strings are converted to:
        * `'0'`: False
        * `'1'`: True
        * `'true'`: True (case insensitive)
        * `'false'`: False (case insensitive)
        * Other values are unchanged.
        
        Other types are converted with bool().
        
        ## Function `uppername(s)`
        
        Uppercase letters, transmute some characters to '_' or '__'.
Keywords: python2,python3
Platform: UNKNOWN
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 3
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Description-Content-Type: text/markdown
