# Path: pygchem/utils/exceptions.py
# class PyGChemError(Exception):
# class NotYetImplementedError(PyGChemError):
# class NotPermittedError(PyGChemError):
# class SelectionMismatchError(PyGChemError):
# def warnings_stdout(message, category, filename, lineno, file=None):


import sys
import os
import collections
import cgi
from textwrap import dedent
from keyword import iskeyword
from collections import OrderedDict
from collections import Counter
    from UserList import UserList
    from collections import UserList
from pygchem.utils import exceptions
        if name[0].isdigit():
            raise ValueError("Class name and field names cannot start with a "
                             "number: {0}".format(name))
        if name.startswith('_'):
            raise ValueError("Class name and field names cannot start with an "
                             "underscore: {0}".format(name))
    for name, count in Counter(field_names).items():
        if count > 1:
            raise ValueError("Encountered duplicate field name: {0}"
                             .format(name))

    # Create and fill-in the class template
    def indent(text, n=1):
        return os.linesep.join((n * "    ") + i for i in text.splitlines())

    parameter_template = indent(dedent("""
        {name} : {type}
            {description}
    """))
    property_template = indent(dedent("""
        @property
        def {name}(self):
            '''
            {description}.
            '''
            return self._{name}

    """))
    property_setter_template = indent(dedent("""
        @{name}.setter

# Path: pygchem/utils/exceptions.py
# class PyGChemError(Exception):
# class NotYetImplementedError(PyGChemError):
# class NotPermittedError(PyGChemError):
# class SelectionMismatchError(PyGChemError):
# def warnings_stdout(message, category, filename, lineno, file=None):


# Path: pygchem/utils/data_structures.py
import sys
import os
import collections
import cgi
from textwrap import dedent
from keyword import iskeyword
from collections import OrderedDict
from collections import Counter
    from UserList import UserList
    from collections import UserList
from pygchem.utils import exceptions

        if name[0].isdigit():
            raise ValueError("Class name and field names cannot start with a "
                             "number: {0}".format(name))
        if name.startswith('_'):
            raise ValueError("Class name and field names cannot start with an "
                             "underscore: {0}".format(name))
    for name, count in Counter(field_names).items():
        if count > 1:
            raise ValueError("Encountered duplicate field name: {0}"
                             .format(name))

    # Create and fill-in the class template
    def indent(text, n=1):
        return os.linesep.join((n * "    ") + i for i in text.splitlines())

    parameter_template = indent(dedent("""
        {name} : {type}
            {description}
    """))
    property_template = indent(dedent("""
        @property
        def {name}(self):
            '''
            {description}.
            '''
            return self._{name}

    """))
    property_setter_template = indent(dedent("""
        @{name}.setter

        def {name}(self, value):