#                                            _ _ _       
#                      _ __  _   _ ___  __ _| (_) |_ ___ 
#                     | '_ \| | | / __|/ _` | | | __/ _ \
#                     | |_) | |_| \__ \ (_| | | | ||  __/
#                     | .__/ \__, |___/\__, |_|_|\__\___|
#                     |_|    |___/        |_|            
#
#               A DB API v2.0 compatible interface to SQLite
#                       Embedded Relational Database.
#                          Copyright (c) 2001-2002
#                   Michael Owens <mike@mikesclutter.com>
#
# This module was inspired by MySQLdb Python interface to MySQL. Much of the
# source code related to Python extension writing in this module was done with
# the help of MySQLdb. Many thanks to Andy Dustman for his execellent work with
# MySQLdb.
#
# Permission to use, copy, modify, and distribute this software and its
# documentation for any purpose and without fee is hereby granted, provided that
# the above copyright notice appear in all copies and that both that copyright
# notice and this permission notice appear in supporting documentation.
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE.
