old_contents: # mysql/json.py
  # Copyright (C) 2005-2020 the SQLAlchemy authors and contributors
  # <see AUTHORS file>
  #
  # This module is part of SQLAlchemy and is released under
  # the MIT License: http://www.opensource.org/licenses/mit-license.php
  
  from __future__ import absolute_import
  
  from ... import types as sqltypes
  
  
  class JSON(sqltypes.JSON):
      """MySQL JSON type.
  
      MySQL supports JSON as of version 5.7.  Note that MariaDB does **not**
      support JSON at the time of this writing.
  
      The :class:`.mysql.JSON` type supports persistence of JSON values
      as well as the core index operations provided by :class:`_types.JSON`
      datatype, by adapting the operations to render the ``JSON_EXTRACT``
      function at the database level.
  
      .. versionadded:: 1.1
  
      """
  
      pass
  
  
  class _FormatTypeMixin(object):
      def _format_value(self, value):
          raise NotImplementedError()
  
      def bind_processor(self, dialect):
          super_proc = self.string_bind_processor(dialect)
  
          def process(value):
              value = self._format_value(value)
              if super_proc:
                  value = super_proc(value)
              return value
  
          return process
  
      def literal_processor(self, dialect):
          super_proc = self.string_literal_processor(dialect)
  
          def process(value):
              value = self._format_value(value)
              if super_proc:
                  value = super_proc(value)
              return value
  
          return process
  
  
  class JSONIndexType(_FormatTypeMixin, sqltypes.JSON.JSONIndexType):
      def _format_value(self, value):
          if isinstance(value, int):
              value = "$[%s]" % value
          else:
              value = '$."%s"' % value
          return value
  
  
  class JSONPathType(_FormatTypeMixin, sqltypes.JSON.JSONPathType):
      def _format_value(self, value):
          return "$%s" % (
              "".join(
                  [
                      "[%s]" % elem if isinstance(elem, int) else '."%s"' % elem
                      for elem in value
                  ]
              )
          )
  
new_contents: # mysql/json.py
  # Copyright (C) 2005-2020 the SQLAlchemy authors and contributors
  # <see AUTHORS file>
  #
  # This module is part of SQLAlchemy and is released under
  # the MIT License: http://www.opensource.org/licenses/mit-license.php
  
  from __future__ import absolute_import
  
  from ... import types as sqltypes
  
  
  class JSON(sqltypes.JSON):
      """MySQL JSON type.
  
      MySQL supports JSON as of version 5.7.
      MariaDB supports JSON (as an alias for LONGTEXT) as of version 10.2.
  
      The :class:`.mysql.JSON` type supports persistence of JSON values
      as well as the core index operations provided by :class:`_types.JSON`
      datatype, by adapting the operations to render the ``JSON_EXTRACT``
      function at the database level.
  
      .. versionadded:: 1.1
  
      """
  
      pass
  
  
  class _FormatTypeMixin(object):
      def _format_value(self, value):
          raise NotImplementedError()
  
      def bind_processor(self, dialect):
          super_proc = self.string_bind_processor(dialect)
  
          def process(value):
              value = self._format_value(value)
              if super_proc:
                  value = super_proc(value)
              return value
  
          return process
  
      def literal_processor(self, dialect):
          super_proc = self.string_literal_processor(dialect)
  
          def process(value):
              value = self._format_value(value)
              if super_proc:
                  value = super_proc(value)
              return value
  
          return process
  
  
  class JSONIndexType(_FormatTypeMixin, sqltypes.JSON.JSONIndexType):
      def _format_value(self, value):
          if isinstance(value, int):
              value = "$[%s]" % value
          else:
              value = '$."%s"' % value
          return value
  
  
  class JSONPathType(_FormatTypeMixin, sqltypes.JSON.JSONPathType):
      def _format_value(self, value):
          return "$%s" % (
              "".join(
                  [
                      "[%s]" % elem if isinstance(elem, int) else '."%s"' % elem
                      for elem in value
                  ]
              )
          )
  
subject: Update docs with actual MariaDB JSON support