Make psycopg2 requirement optional

This commit is contained in:
Konsta Vesterinen
2015-05-28 17:52:36 +03:00
parent 238f2cee36
commit 6875073d45
2 changed files with 22 additions and 3 deletions

View File

@@ -4,6 +4,12 @@ Changelog
Here you can see the full list of changes between each SQLAlchemy-Utils release.
0.30.6 (2015-05-28)
^^^^^^^^^^^^^^^^^^^
- Make psycopg2 requirement optional (#145, #146)
0.30.5 (2015-05-27)
^^^^^^^^^^^^^^^^^^^

View File

@@ -95,10 +95,18 @@ http://schinckel.net/2014/09/24/using-postgres-composite-types-in-django/
"""
from collections import namedtuple
import psycopg2
psycopg2 = None
CompositeCaster = None
adapt = None
AsIs = None
register_adapter = None
try:
import psycopg2
from psycopg2.extras import CompositeCaster
from psycopg2.extensions import adapt, AsIs, register_adapter
except ImportError:
pass
import sqlalchemy as sa
from psycopg2.extras import CompositeCaster
from psycopg2.extensions import adapt, AsIs, register_adapter
from sqlalchemy.dialects.postgresql import ARRAY
from sqlalchemy.dialects.postgresql.psycopg2 import PGDialect_psycopg2
from sqlalchemy.ext.compiler import compiles
@@ -110,6 +118,7 @@ from sqlalchemy.types import (
TypeDecorator,
UserDefinedType
)
from sqlalchemy_utils import ImproperlyConfigured
class CompositeElement(FunctionElement):
@@ -166,6 +175,10 @@ class CompositeType(UserDefinedType, SchemaType):
return CompositeElement(self.expr, key, type_)
def __init__(self, name, columns):
if psycopg2 is None:
raise ImproperlyConfigured(
"'psycopg2' package is required in order to use CompositeType."
)
SchemaType.__init__(self)
self.name = name
self.columns = columns