# Path: detectron/utils/collections.py
# class AttrDict(dict):
# 
#     IMMUTABLE = '__immutable__'
# 
#     def __init__(self, *args, **kwargs):
#         super(AttrDict, self).__init__(*args, **kwargs)
#         self.__dict__[AttrDict.IMMUTABLE] = False
# 
#     def __getattr__(self, name):
#         if name in self.__dict__:
#             return self.__dict__[name]
#         elif name in self:
#             return self[name]
#         else:
#             raise AttributeError(name)
# 
#     def __setattr__(self, name, value):
#         if not self.__dict__[AttrDict.IMMUTABLE]:
#             if name in self.__dict__:
#                 self.__dict__[name] = value
#             else:
#                 self[name] = value
#         else:
#             raise AttributeError(
#                 'Attempted to set "{}" to "{}", but AttrDict is immutable'.
#                 format(name, value)
#             )
# 
#     def immutable(self, is_immutable):
#         """Set immutability to is_immutable and recursively apply the setting
#         to all nested AttrDicts.
#         """
#         self.__dict__[AttrDict.IMMUTABLE] = is_immutable
#         # Recursively set immutable state
#         for v in self.__dict__.values():
#             if isinstance(v, AttrDict):
#                 v.immutable(is_immutable)
#         for v in self.values():
#             if isinstance(v, AttrDict):
#                 v.immutable(is_immutable)
# 
#     def is_immutable(self):
#         return self.__dict__[AttrDict.IMMUTABLE]


from detectron.utils.collections import AttrDict
# Copyright (c) 2017-present, Facebook, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
##############################################################################
"""Provide stub objects that can act as stand-in "dummy" datasets for simple use
cases, like getting all classes in a dataset. This exists so that demos can be
run without requiring users to download/install datasets first.
"""

from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
from __future__ import unicode_literals



def get_coco_dataset():
    """A dummy COCO dataset that includes only the 'classes' field."""

# Path: detectron/utils/collections.py
# class AttrDict(dict):
# 
#     IMMUTABLE = '__immutable__'
# 
#     def __init__(self, *args, **kwargs):
#         super(AttrDict, self).__init__(*args, **kwargs)
#         self.__dict__[AttrDict.IMMUTABLE] = False
# 
#     def __getattr__(self, name):
#         if name in self.__dict__:
#             return self.__dict__[name]
#         elif name in self:
#             return self[name]
#         else:
#             raise AttributeError(name)
# 
#     def __setattr__(self, name, value):
#         if not self.__dict__[AttrDict.IMMUTABLE]:
#             if name in self.__dict__:
#                 self.__dict__[name] = value
#             else:
#                 self[name] = value
#         else:
#             raise AttributeError(
#                 'Attempted to set "{}" to "{}", but AttrDict is immutable'.
#                 format(name, value)
#             )
# 
#     def immutable(self, is_immutable):
#         """Set immutability to is_immutable and recursively apply the setting
#         to all nested AttrDicts.
#         """
#         self.__dict__[AttrDict.IMMUTABLE] = is_immutable
#         # Recursively set immutable state
#         for v in self.__dict__.values():
#             if isinstance(v, AttrDict):
#                 v.immutable(is_immutable)
#         for v in self.values():
#             if isinstance(v, AttrDict):
#                 v.immutable(is_immutable)
# 
#     def is_immutable(self):
#         return self.__dict__[AttrDict.IMMUTABLE]


# Path: detectron/datasets/dummy_datasets.py
from detectron.utils.collections import AttrDict

# Copyright (c) 2017-present, Facebook, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
##############################################################################
"""Provide stub objects that can act as stand-in "dummy" datasets for simple use
cases, like getting all classes in a dataset. This exists so that demos can be
run without requiring users to download/install datasets first.
"""

from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
from __future__ import unicode_literals



def get_coco_dataset():
    """A dummy COCO dataset that includes only the 'classes' field."""

    ds = AttrDict()