# Path: marathon/models/base.py
# class MarathonObject:
#     """Base Marathon object."""
# 
#     def __repr__(self):
#         return "{clazz}::{obj}".format(clazz=self.__class__.__name__, obj=self.to_json(minimal=False))
# 
#     def __eq__(self, other):
#         try:
#             return self.__dict__ == other.__dict__
#         except Exception:
#             return False
# 
#     def __hash__(self):
#         # Technically this class shouldn't be hashable because it often
#         # contains mutable fields, but in practice this class is used more
#         # like a record or namedtuple.
#         return hash(self.to_json())
# 
#     def json_repr(self, minimal=False):
#         """Construct a JSON-friendly representation of the object.
# 
#         :param bool minimal: Construct a minimal representation of the object (ignore nulls and empty collections)
# 
#         :rtype: dict
#         """
#         if minimal:
#             return {to_camel_case(k): v for k, v in vars(self).items() if (v or v is False or v == 0)}
#         else:
#             return {to_camel_case(k): v for k, v in vars(self).items()}
# 
#     @classmethod
#     def from_json(cls, attributes):
#         """Construct an object from a parsed response.
# 
#         :param dict attributes: object attributes from parsed response
#         """
#         return cls(**{to_snake_case(k): v for k, v in attributes.items()})
# 
#     def to_json(self, minimal=True):
#         """Encode an object as a JSON string.
# 
#         :param bool minimal: Construct a minimal representation of the object (ignore nulls and empty collections)
# 
#         :rtype: str
#         """
#         if minimal:
#             return json.dumps(self.json_repr(minimal=True), cls=MarathonMinimalJsonEncoder, sort_keys=True)
#         else:
#             return json.dumps(self.json_repr(), cls=MarathonJsonEncoder, sort_keys=True)
# 
# class MarathonResource(MarathonObject):
# 
#     """Base Marathon resource."""
# 
#     def __repr__(self):
#         if 'id' in list(vars(self).keys()):
#             return f"{self.__class__.__name__}::{self.id}"
#         else:
#             return "{clazz}::{obj}".format(clazz=self.__class__.__name__, obj=self.to_json())
# 
#     def __eq__(self, other):
#         try:
#             return self.__dict__ == other.__dict__
#         except Exception:
#             return False
# 
#     def __hash__(self):
#         # Technically this class shouldn't be hashable because it often
#         # contains mutable fields, but in practice this class is used more
#         # like a record or namedtuple.
#         return hash(self.to_json())
# 
#     def __str__(self):
#         return f"{self.__class__.__name__}::" + str(self.__dict__)


from .base import MarathonObject, MarathonResource
        self.new_group_enforce_role = new_group_enforce_role
        self.webui_url = webui_url
        self.reconciliation_initial_delay = reconciliation_initial_delay
        self.reconciliation_interval = reconciliation_interval
        self.task_launch_timeout = task_launch_timeout
        self.task_reservation_timeout = task_reservation_timeout
        self.marathon_store_timeout = marathon_store_timeout
        self.access_control_allow_origin = access_control_allow_origin
        self.decline_offer_duration = decline_offer_duration
        self.default_network_name = default_network_name
        self.env_vars_prefix = env_vars_prefix
        self.launch_token = launch_token
        self.launch_token_refresh_interval = launch_token_refresh_interval
        self.max_instances_per_offer = max_instances_per_offer
        self.mesos_bridge_name = mesos_bridge_name
        self.mesos_heartbeat_failure_threshold = mesos_heartbeat_failure_threshold
        self.mesos_heartbeat_interval = mesos_heartbeat_interval
        self.min_revive_offers_interval = min_revive_offers_interval
        self.offer_matching_timeout = offer_matching_timeout
        self.on_elected_prepare_timeout = on_elected_prepare_timeout
        self.revive_offers_for_new_apps = revive_offers_for_new_apps
        self.revive_offers_repetitions = revive_offers_repetitions
        self.scale_apps_initial_delay = scale_apps_initial_delay
        self.scale_apps_interval = scale_apps_interval
        self.store_cache = store_cache
        self.task_launch_confirm_timeout = task_launch_confirm_timeout
        self.task_lost_expunge_initial_delay = task_lost_expunge_initial_delay
        self.task_lost_expunge_interval = task_lost_expunge_interval



# Path: marathon/models/base.py
# class MarathonObject:
#     """Base Marathon object."""
# 
#     def __repr__(self):
#         return "{clazz}::{obj}".format(clazz=self.__class__.__name__, obj=self.to_json(minimal=False))
# 
#     def __eq__(self, other):
#         try:
#             return self.__dict__ == other.__dict__
#         except Exception:
#             return False
# 
#     def __hash__(self):
#         # Technically this class shouldn't be hashable because it often
#         # contains mutable fields, but in practice this class is used more
#         # like a record or namedtuple.
#         return hash(self.to_json())
# 
#     def json_repr(self, minimal=False):
#         """Construct a JSON-friendly representation of the object.
# 
#         :param bool minimal: Construct a minimal representation of the object (ignore nulls and empty collections)
# 
#         :rtype: dict
#         """
#         if minimal:
#             return {to_camel_case(k): v for k, v in vars(self).items() if (v or v is False or v == 0)}
#         else:
#             return {to_camel_case(k): v for k, v in vars(self).items()}
# 
#     @classmethod
#     def from_json(cls, attributes):
#         """Construct an object from a parsed response.
# 
#         :param dict attributes: object attributes from parsed response
#         """
#         return cls(**{to_snake_case(k): v for k, v in attributes.items()})
# 
#     def to_json(self, minimal=True):
#         """Encode an object as a JSON string.
# 
#         :param bool minimal: Construct a minimal representation of the object (ignore nulls and empty collections)
# 
#         :rtype: str
#         """
#         if minimal:
#             return json.dumps(self.json_repr(minimal=True), cls=MarathonMinimalJsonEncoder, sort_keys=True)
#         else:
#             return json.dumps(self.json_repr(), cls=MarathonJsonEncoder, sort_keys=True)
# 
# class MarathonResource(MarathonObject):
# 
#     """Base Marathon resource."""
# 
#     def __repr__(self):
#         if 'id' in list(vars(self).keys()):
#             return f"{self.__class__.__name__}::{self.id}"
#         else:
#             return "{clazz}::{obj}".format(clazz=self.__class__.__name__, obj=self.to_json())
# 
#     def __eq__(self, other):
#         try:
#             return self.__dict__ == other.__dict__
#         except Exception:
#             return False
# 
#     def __hash__(self):
#         # Technically this class shouldn't be hashable because it often
#         # contains mutable fields, but in practice this class is used more
#         # like a record or namedtuple.
#         return hash(self.to_json())
# 
#     def __str__(self):
#         return f"{self.__class__.__name__}::" + str(self.__dict__)


# Path: marathon/models/info.py
from .base import MarathonObject, MarathonResource

        self.new_group_enforce_role = new_group_enforce_role
        self.webui_url = webui_url
        self.reconciliation_initial_delay = reconciliation_initial_delay
        self.reconciliation_interval = reconciliation_interval
        self.task_launch_timeout = task_launch_timeout
        self.task_reservation_timeout = task_reservation_timeout
        self.marathon_store_timeout = marathon_store_timeout
        self.access_control_allow_origin = access_control_allow_origin
        self.decline_offer_duration = decline_offer_duration
        self.default_network_name = default_network_name
        self.env_vars_prefix = env_vars_prefix
        self.launch_token = launch_token
        self.launch_token_refresh_interval = launch_token_refresh_interval
        self.max_instances_per_offer = max_instances_per_offer
        self.mesos_bridge_name = mesos_bridge_name
        self.mesos_heartbeat_failure_threshold = mesos_heartbeat_failure_threshold
        self.mesos_heartbeat_interval = mesos_heartbeat_interval
        self.min_revive_offers_interval = min_revive_offers_interval
        self.offer_matching_timeout = offer_matching_timeout
        self.on_elected_prepare_timeout = on_elected_prepare_timeout
        self.revive_offers_for_new_apps = revive_offers_for_new_apps
        self.revive_offers_repetitions = revive_offers_repetitions
        self.scale_apps_initial_delay = scale_apps_initial_delay
        self.scale_apps_interval = scale_apps_interval
        self.store_cache = store_cache
        self.task_launch_confirm_timeout = task_launch_confirm_timeout
        self.task_lost_expunge_initial_delay = task_lost_expunge_initial_delay
        self.task_lost_expunge_interval = task_lost_expunge_interval



class MarathonZooKeeperConfig(MarathonObject):