import warnings
warnings.filterwarnings(
    'ignore', 'Unicode type received non-unicode bind param value.')

from dataset.persistence.database import Database
from dataset.persistence.table import Table
from dataset.freeze.app import freeze

__all__ = ['Database', 'Table', 'freeze', 'connect']


def connect(url, reflectMetadata=True):
    """
    Opens a new connection to a database. *url* can be any valid `SQLAlchemy engine URL`_. Returns
    an instance of :py:class:`Database <dataset.Database>`. Set *reflectMetadata* to False if you
    don't want the entire database schema to be pre-loaded. This significantly speeds up
    connecting to large databases with lots of tables.
    ::

        db = dataset.connect('sqlite:///factbook.db')

    .. _SQLAlchemy Engine URL: http://docs.sqlalchemy.org/en/latest/core/engines.html#sqlalchemy.create_engine
    """
    return Database(url, reflectMetadata)

import os
# shut up useless SA warning:
import warnings
warnings.filterwarnings(
    'ignore', 'Unicode type received non-unicode bind param value.')

from dataset.persistence.database import Database
from dataset.persistence.table import Table
from dataset.freeze.app import freeze

__all__ = ['Database', 'Table', 'freeze', 'connect']


def connect(url=None, reflectMetadata=True):
    """
    Opens a new connection to a database. *url* can be any valid `SQLAlchemy engine URL`_.
    If *url* is not defined it will try to use *DATABASE_URL* from environment variable.
    Returns an instance of :py:class:`Database <dataset.Database>`. Set *reflectMetadata* to False if you
    don't want the entire database schema to be pre-loaded. This significantly speeds up
    connecting to large databases with lots of tables.
    ::

        db = dataset.connect('sqlite:///factbook.db')

    .. _SQLAlchemy Engine URL: http://docs.sqlalchemy.org/en/latest/core/engines.html#sqlalchemy.create_engine
    """
    url = os.environ.get('DATABASE_URL', url)
    return Database(url, reflectMetadata)

Allow to use `url` defined as env variable.
Allow to use `url` defined as env variable.

+ import os
+ # shut up useless SA warning:
  import warnings
  warnings.filterwarnings(
      'ignore', 'Unicode type received non-unicode bind param value.')
  
  from dataset.persistence.database import Database
  from dataset.persistence.table import Table
  from dataset.freeze.app import freeze
  
  __all__ = ['Database', 'Table', 'freeze', 'connect']
  
  
- def connect(url, reflectMetadata=True):
+ def connect(url=None, reflectMetadata=True):
      """
-     Opens a new connection to a database. *url* can be any valid `SQLAlchemy engine URL`_. Returns
+     Opens a new connection to a database. *url* can be any valid `SQLAlchemy engine URL`_.
+     If *url* is not defined it will try to use *DATABASE_URL* from environment variable.
-     an instance of :py:class:`Database <dataset.Database>`. Set *reflectMetadata* to False if you
+     Returns an instance of :py:class:`Database <dataset.Database>`. Set *reflectMetadata* to False if you
      don't want the entire database schema to be pre-loaded. This significantly speeds up
      connecting to large databases with lots of tables.
      ::
  
          db = dataset.connect('sqlite:///factbook.db')
  
      .. _SQLAlchemy Engine URL: http://docs.sqlalchemy.org/en/latest/core/engines.html#sqlalchemy.create_engine
      """
+     url = os.environ.get('DATABASE_URL', url)
      return Database(url, reflectMetadata)
  
Allow to use `url` defined as env variable.
## Code Before:
import warnings
warnings.filterwarnings(
    'ignore', 'Unicode type received non-unicode bind param value.')

from dataset.persistence.database import Database
from dataset.persistence.table import Table
from dataset.freeze.app import freeze

__all__ = ['Database', 'Table', 'freeze', 'connect']


def connect(url, reflectMetadata=True):
    """
    Opens a new connection to a database. *url* can be any valid `SQLAlchemy engine URL`_. Returns
    an instance of :py:class:`Database <dataset.Database>`. Set *reflectMetadata* to False if you
    don't want the entire database schema to be pre-loaded. This significantly speeds up
    connecting to large databases with lots of tables.
    ::

        db = dataset.connect('sqlite:///factbook.db')

    .. _SQLAlchemy Engine URL: http://docs.sqlalchemy.org/en/latest/core/engines.html#sqlalchemy.create_engine
    """
    return Database(url, reflectMetadata)

## Instruction:
Allow to use `url` defined as env variable.
## Code After:
import os
# shut up useless SA warning:
import warnings
warnings.filterwarnings(
    'ignore', 'Unicode type received non-unicode bind param value.')

from dataset.persistence.database import Database
from dataset.persistence.table import Table
from dataset.freeze.app import freeze

__all__ = ['Database', 'Table', 'freeze', 'connect']


def connect(url=None, reflectMetadata=True):
    """
    Opens a new connection to a database. *url* can be any valid `SQLAlchemy engine URL`_.
    If *url* is not defined it will try to use *DATABASE_URL* from environment variable.
    Returns an instance of :py:class:`Database <dataset.Database>`. Set *reflectMetadata* to False if you
    don't want the entire database schema to be pre-loaded. This significantly speeds up
    connecting to large databases with lots of tables.
    ::

        db = dataset.connect('sqlite:///factbook.db')

    .. _SQLAlchemy Engine URL: http://docs.sqlalchemy.org/en/latest/core/engines.html#sqlalchemy.create_engine
    """
    url = os.environ.get('DATABASE_URL', url)
    return Database(url, reflectMetadata)
