old_contents: # coding: utf-8
  # 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.
  
  from __future__ import unicode_literals
  
  import re
  
  first_cap_re = re.compile('(.)([A-Z][a-z]+)')
  all_cap_re = re.compile('([a-z0-9])([A-Z])')
  
  
  def un_camel_case(name):
      s1 = first_cap_re.sub(r'\1_\2', name)
      return all_cap_re.sub(r'\1_\2', s1).lower()
  
new_contents: # coding: utf-8
  # 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.
  
  from __future__ import unicode_literals
  
  import re
  
  first_cap_re = re.compile('(.)([A-Z][a-z]+)')
  all_cap_re = re.compile('([a-z0-9])([A-Z])')
  
  
  def un_camel_case(name):
      s1 = first_cap_re.sub(r'\1_\2', name)
      return all_cap_re.sub(r'\1_\2', s1).lower()
  
  
  class cached_property(object):
      """A cached property computed only once per instance
  
      A property that is only computed once per instance and then replaces itself
      with an ordinary attribute. Deleting the attribute resets the property.
      Source: https://github.com/bottlepy/bottle/commit/fa7733e075da0d790d809aa3d2f53071897e6f76
      """  # noqa
  
      def __init__(self, func):
          self.__doc__ = getattr(func, '__doc__')
          self.func = func
  
      def __get__(self, obj, cls):
          if obj is None:
              return self
          value = obj.__dict__[self.func.__name__] = self.func(obj)
          return value
  
subject: Introduce a cached_property decorator