# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details
# http://www.gnu.org/licenses/gpl-3.0.txt


class Constant():
    def __repr__(self):
        return '<Constant: {}>'.format(str(self).upper())

class _Disconnected(Constant):
    def __str__(self): return 'disconnected'
DISCONNECTED = _Disconnected()

class _Unlimited(Constant, float):
    def __str__(self): return 'unlimited'
UNLIMITED = _Unlimited('inf')  # float accepts 'inf'

class _Disabled(Constant):
    def __str__(self): return 'disabled'
    def __bool__(self): return False
DISABLED = _Disabled()

class _Enabled(Constant):
    def __str__(self): return 'enabled'
    def __bool__(self): return True
ENABLED = _Enabled()
