ó
H`¾Tc           @   sF   d  Z  d d l m Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ d S(   só   Global database feature support policy.

Provides decorators to mark tests requiring specific feature support from the
target database.

External dialect test suites should subclass SuiteRequirements
to provide specific inclusion/exclusions.

i   (   t
   exclusionst   Requirementsc           B   s   e  Z RS(    (   t   __name__t
   __module__(    (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyR      s   t   SuiteRequirementsc           B   së  e  Z e d  „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z	 e d „  ƒ Z
 e d „  ƒ Z e d	 „  ƒ Z e d
 „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z  e d „  ƒ Z! e d „  ƒ Z" e d  „  ƒ Z# e d! „  ƒ Z$ e d" „  ƒ Z% e d# „  ƒ Z& e d$ „  ƒ Z' e d% „  ƒ Z( e d& „  ƒ Z) e d' „  ƒ Z* e d( „  ƒ Z+ e d) „  ƒ Z, e d* „  ƒ Z- e d+ „  ƒ Z. e d, „  ƒ Z/ e d- „  ƒ Z0 e d. „  ƒ Z1 e d/ „  ƒ Z2 e d0 „  ƒ Z3 e d1 „  ƒ Z4 e d2 „  ƒ Z5 e d3 „  ƒ Z6 e d4 „  ƒ Z7 e d5 „  ƒ Z8 e d6 „  ƒ Z9 e d7 „  ƒ Z: e d8 „  ƒ Z; e d9 „  ƒ Z< e d: „  ƒ Z= e d; „  ƒ Z> e d< „  ƒ Z? e d= „  ƒ Z@ e d> „  ƒ ZA e d? „  ƒ ZB e d@ „  ƒ ZC e dA „  ƒ ZD e dB „  ƒ ZE e dC „  ƒ ZF e dD „  ƒ ZG e dE „  ƒ ZH e dF „  ƒ ZI e dG „  ƒ ZJ e dH „  ƒ ZK e dI „  ƒ ZL e dJ „  ƒ ZM e dK „  ƒ ZN e dL „  ƒ ZO e dM „  ƒ ZP e dN „  ƒ ZQ dO „  ZR dP „  ZS e dQ „  ƒ ZT e dR „  ƒ ZU dS „  ZV dT „  ZW RS(U   c         C   s
   t  j ƒ  S(   s/   target platform can emit basic CreateTable DDL.(   R    t   open(   t   self(    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   create_table   s    c         C   s
   t  j ƒ  S(   s-   target platform can emit basic DropTable DDL.(   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt
   drop_table!   s    c         C   s
   t  j ƒ  S(   s*   Target database must support foreign keys.(   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   foreign_keys'   s    c         C   s
   t  j ƒ  S(   sR   "target database must support ON UPDATE..CASCADE behavior in
        foreign keys.(   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   on_update_cascade-   s    c         C   s
   t  j ƒ  S(   sW   target database must *not* support ON UPDATE..CASCADE behavior in
        foreign keys.(   R    t   closed(   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   non_updating_cascade4   s    c         C   s
   t  j ƒ  S(   N(   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   deferrable_fks:   s    c            s   t  j ‡  f d †  ƒ S(   Nc              s   ˆ  j  j p ˆ  j j S(   N(   R
   t   enabledR   (    (   R   (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   <lambda>D   s   (   R    t   only_if(   R   (    (   R   se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   on_update_or_deferrable_fks>   s    c         C   s
   t  j ƒ  S(   s;   Target database must support self-referential foreign keys.(   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   self_referential_foreign_keysH   s    c         C   s
   t  j ƒ  S(   s=   Target database must support the DDL phrases for FOREIGN KEY.(   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   foreign_key_ddlN   s    c         C   s
   t  j ƒ  S(   s3   target database must support names for constraints.(   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   named_constraintsT   s    c         C   s
   t  j ƒ  S(   s(   Target database must support subqueries.(   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt
   subqueriesZ   s    c         C   s
   t  j ƒ  S(   sR   target database can render OFFSET, or an equivalent, in a
        SELECT.
        (   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   offset`   s    c         C   s
   t  j ƒ  S(   s;   Target database must support boolean expressions as columns(   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   boolean_col_expressionsh   s    c         C   s
   t  j ƒ  S(   s,   Target backends that support nulls ordering.(   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   nullsorderingn   s    c         C   s
   t  j ƒ  S(   sˆ   target database/driver supports bound parameters as column expressions
        without being in the context of a typed column.

        (   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   standalone_bindst   s    c         C   s
   t  j ƒ  S(   s5   Target database must support INTERSECT or equivalent.(   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt	   intersect|   s    c         C   s
   t  j ƒ  S(   s?   Target database must support EXCEPT or equivalent (i.e. MINUS).(   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   except_   s    c         C   s
   t  j ƒ  S(   s.   Target database must support window functions.(   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   window_functions†   s    c         C   s
   t  j ƒ  S(   s~   target platform generates new surrogate integer primary key values
        when insert() is executed, excluding the pk column.(   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   autoincrement_insert‹   s    c         C   s
   t  j ƒ  S(   s#  target platform will allow cursor.fetchone() to proceed after a
        COMMIT.

        Typically this refers to an INSERT statement with RETURNING which
        is invoked within "autocommit".   If the row can be returned
        after the autocommit, then this rule can be open.

        (   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   fetch_rows_post_commit’   s    c         C   s   t  j d „  d ƒ S(   sa   target platform supports INSERT with no values, i.e.
        INSERT DEFAULT VALUES or equivalent.c         S   s   |  j  j j p |  j  j j S(   N(   t   dbt   dialectt   supports_empty_insertt   supports_default_values(   t   config(    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyR   ¥   s   s   empty inserts not supported(   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   empty_insertsŸ   s    c         C   s
   t  j ƒ  S(   s.   target platform supports INSERT from a SELECT.(   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   insert_from_selectª   s    c         C   s   t  j d „  d ƒ S(   s#   target platform supports RETURNING.c         S   s   |  j  j j S(   N(   R   R    t   implicit_returning(   R#   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyR   µ   s    s)   %(database)s %(does_support)s 'returning'(   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt	   returning°   s    c         C   s
   t  j ƒ  S(   sw   target platform supports a SELECT statement that has
        the same name repeated more than once in the columns list.(   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt%   duplicate_names_in_cursor_description¹   s    c         C   s   t  j d „  d ƒ S(   s[   Target database must have 'denormalized', i.e.
        UPPERCASE as case insensitive names.c         S   s   |  j  j j S(   N(   R   R    t   requires_name_normalize(   R#   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyR   Æ   s    s,   Backend does not require denormalized names.(   R    t   skip_if(   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   denormalized_namesÀ   s    c         C   s   t  j d „  d ƒ S(   sT   target database must support multiple VALUES clauses in an
        INSERT statement.c         S   s   |  j  j j S(   N(   R   R    t   supports_multivalues_insert(   R#   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyR   Ð   s    s*   Backend does not support multirow inserts.(   R    R*   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   multivalues_insertsÊ   s    c         C   s
   t  j ƒ  S(   sw   "target dialect implements the executioncontext.get_lastrowid()
        method without reliance on RETURNING.

        (   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   implements_get_lastrowidÔ   s    c         C   s
   t  j ƒ  S(   s=  "target dialect retrieves cursor.lastrowid, or fetches
        from a database-side function after an insert() construct executes,
        within the get_lastrowid() method.

        Only dialects that "pre-execute", or need RETURNING to get last
        inserted id, would return closed/fail/skip for this.

        (   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   emulated_lastrowidÜ   s    
c         C   s
   t  j ƒ  S(   s^   "target platform includes a 'lastrowid' accessor on the DBAPI
        cursor object.

        (   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   dbapi_lastrowidè   s    c         C   s
   t  j ƒ  S(   s#   Target database must support VIEWs.(   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   viewsð   s    c         C   s
   t  j ƒ  S(   sX   Target database must support external schemas, and have one
        named 'test_schema'.(   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   schemasö   s    c         C   s   t  j d „  g d ƒ S(   s'   Target database must support SEQUENCEs.c         S   s   |  j  j j S(   N(   R   R    t   supports_sequences(   R#   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyR     s    s   no sequence support(   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt	   sequencesý   s    	c         C   s   t  j d „  g d ƒ S(   sg   Target database supports sequences, but also optionally
        as a means of generating new PK values.c         S   s   |  j  j j o |  j  j j S(   N(   R   R    R3   t   sequences_optional(   R#   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyR     s   s.   no sequence support, or sequences not optional(   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyR5     s    	c         C   s
   t  j ƒ  S(   N(   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   reflects_pk_names  s    c         C   s
   t  j ƒ  S(   N(   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   table_reflection  s    c         C   s   |  j  S(   s¹   target database must support retrieval of the columns in a view,
        similarly to how a table is inspected.

        This does not include the full CREATE VIEW definition.

        (   R1   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   view_column_reflection  s    c         C   s   |  j  S(   sT   target database must support inspection of the full CREATE VIEW definition.
        (   R1   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   view_reflection!  s    c         C   s   |  j  S(   N(   R2   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   schema_reflection'  s    c         C   s
   t  j ƒ  S(   N(   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt!   primary_key_constraint_reflection+  s    c         C   s
   t  j ƒ  S(   N(   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt!   foreign_key_constraint_reflection/  s    c         C   s
   t  j ƒ  S(   N(   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   index_reflection3  s    c         C   s
   t  j ƒ  S(   s8   target dialect supports reflection of unique constraints(   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   unique_constraint_reflection7  s    c         C   s
   t  j ƒ  S(   s3   Target database must support VARCHAR with no length(   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   unbounded_varchar<  s    c         C   s
   t  j ƒ  S(   sµ   Target database/dialect must support Python unicode objects with
        non-ASCII characters represented, delivered as bound parameters
        as well as in result rows.

        (   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   unicode_dataB  s    c         C   s
   t  j ƒ  S(   sR   Target driver must support some degree of non-ascii symbol
        names.
        (   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   unicode_ddlK  s    c         C   s
   t  j ƒ  S(   s™   target dialect supports rendering of a date, time, or datetime as a
        literal string, e.g. via the TypeEngine.literal_processor() method.

        (   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   datetime_literalsR  s    c         C   s
   t  j ƒ  S(   sU   target dialect supports representation of Python
        datetime.datetime() objects.(   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   datetime[  s    c         C   s
   t  j ƒ  S(   sf   target dialect supports representation of Python
        datetime.datetime() with microsecond objects.(   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   datetime_microsecondsb  s    c         C   s
   t  j ƒ  S(   su   target dialect supports representation of Python
        datetime.datetime() objects with historic (pre 1970) values.(   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   datetime_historici  s    c         C   s
   t  j ƒ  S(   sQ   target dialect supports representation of Python
        datetime.date() objects.(   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   datep  s    c         C   s
   t  j ƒ  S(   sP   target dialect accepts a datetime object as the target
        of a date column.(   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   date_coerces_from_datetimew  s    c         C   s
   t  j ƒ  S(   su   target dialect supports representation of Python
        datetime.datetime() objects with historic (pre 1970) values.(   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   date_historic~  s    c         C   s
   t  j ƒ  S(   sQ   target dialect supports representation of Python
        datetime.time() objects.(   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   time…  s    c         C   s
   t  j ƒ  S(   sb   target dialect supports representation of Python
        datetime.time() with microsecond objects.(   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   time_microsecondsŒ  s    c         C   s
   t  j ƒ  S(   st   target database/driver can allow BLOB/BINARY fields to be compared
        against a bound parameter value.
        (   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   binary_comparisons“  s    c         C   s
   t  j ƒ  S(   s!  target backend supports simple binary literals, e.g. an
        expression like::

            SELECT CAST('foo' AS BINARY)

        Where ``BINARY`` is the type emitted from :class:`.LargeBinary`,
        e.g. it could be ``BLOB`` or similar.

        Basically fails on Oracle.

        (   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   binary_literals›  s    c         C   s
   t  j ƒ  S(   sR   target backend has general support for moderately high-precision
        numerics.(   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   precision_numerics_general«  s    c         C   s
   t  j ƒ  S(   sb   target backend supports Decimal() objects using E notation
        to represent very small values.(   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt"   precision_numerics_enotation_small±  s    c         C   s
   t  j ƒ  S(   sb   target backend supports Decimal() objects using E notation
        to represent very large values.(   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt"   precision_numerics_enotation_large·  s    c         C   s
   t  j ƒ  S(   s†   target backend supports values with many digits on both sides,
        such as 319438950232418390.273596, 87673.594069654243

        (   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt*   precision_numerics_many_significant_digits½  s    c         C   s
   t  j ƒ  S(   s£   A precision numeric type will return empty significant digits,
        i.e. a value such as 10.000 will come back in Decimal form with
        the .000 maintained.(   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt-   precision_numerics_retains_significant_digitsÅ  s    c         C   s
   t  j ƒ  S(   s   target backend will return native floating point numbers with at
        least seven decimal places when using the generic Float type.

        (   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   precision_generic_float_typeÍ  s    c         C   s
   t  j ƒ  S(   sÀ   target backend can return a floating-point number with four
        significant digits (such as 15.7563) accurately
        (i.e. without FP inaccuracies, such as 15.75629997253418).

        (   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   floats_to_four_decimalsÕ  s    c         C   s
   t  j ƒ  S(   s™   target backend doesn't crash when you try to select a NUMERIC
        value that has a value of NULL.

        Added to support Pyodbc bug #351.
        (   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   fetch_null_from_numericÞ  s    c         C   s
   t  j ƒ  S(   sU   Target database must support an unbounded Text() "
        "type such as TEXT or CLOB(   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt	   text_typeè  s    c         C   s
   t  j ƒ  S(   sT   target database can persist/return an empty string with a
        varchar.

        (   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   empty_strings_varcharï  s    c         C   s
   t  j ƒ  S(   sR   target database can persist/return an empty string with an
        unbounded text.(   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   empty_strings_text÷  s    c         C   s
   t  j ƒ  S(   s;   target driver must support the literal statement 'select 1'(   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt	   selectoneþ  s    c         C   s
   t  j ƒ  S(   s(   Target database must support savepoints.(   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt
   savepoints  s    c         C   s
   t  j ƒ  S(   s4   Target database must support two-phase transactions.(   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   two_phase_transactions	  s    c         C   s
   t  j ƒ  S(   s'   Target must support UPDATE..FROM syntax(   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   update_from  s    c         C   s
   t  j ƒ  S(   s„  Target must support UPDATE where the same table is present in a
        subquery in the WHERE clause.

        This is an ANSI-standard syntax that apparently MySQL can't handle,
        such as:

        UPDATE documents SET flag=1 WHERE documents.title IN
            (SELECT max(documents.title) AS title
                FROM documents GROUP BY documents.user_id
            )
        (   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   update_where_target_in_subquery  s    c         C   s
   t  j ƒ  S(   sO   target database must use a plain percent '%' as the 'modulus'
        operator.(   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   mod_operator_as_percent_sign#  s    c         C   s
   t  j ƒ  S(   s  target backend supports weird identifiers with percent signs
        in them, e.g. 'some % column'.

        this is a very weird use case but often has problems because of
        DBAPIs that use python formatting.  It's not a critical use
        case either.

        (   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   percent_schema_names)  s    
c         C   s
   t  j ƒ  S(   s  target backend supports ORDER BY a column label within an
        expression.

        Basically this::

            select data as foo from test order by foo || 'bar'

        Lots of databases including Postgresql don't support this,
        so this is off by default.

        (   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   order_by_label_with_expression5  s    c         C   s
   t  j ƒ  S(   sU   Target driver must support non-ASCII characters being passed at
        all.
        (   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   unicode_connectionsD  s    c         C   s
   t  j ƒ  S(   sµ   Target driver must raise a DBAPI-level exception, such as
        InterfaceError, when the underlying connection has been closed
        and the execute() method is called.
        (   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   graceful_disconnectsK  s    c         C   s
   t  j ƒ  S(   s9   Catchall for a large variety of MySQL on Windows failures(   R    R   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   skip_mysql_on_windowsS  s    c         C   s   t  j d „  ƒ S(   s   Test environment must allow ad-hoc engine/connection creation.

        DBs that scale poorly for many connections, even when closed, i.e.
        Oracle, may use the "--low-connections" option which flags this
        requirement as not present.

        c         S   s
   |  j  j S(   N(   t   optionst   low_connections(   R#   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyR   b  s    (   R    R*   (   R   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   ad_hoc_enginesX  s    	c         C   s   t  S(   N(   t   False(   R   R#   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   _has_mysql_on_windowsd  s    c         C   s   t  S(   N(   Rf   (   R   R#   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   _has_mysql_fully_case_sensitiveg  s    c            s   t  j ‡  f d †  ƒ S(   Nc              s   ˆ  j  ƒ  S(   N(   t   _has_sqlite(    (   R   (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyR   l  s    (   R    R*   (   R   (    (   R   se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   sqlitej  s    c            s   t  j ‡  f d †  d ƒ S(   Nc              s   ˆ  j  ƒ  S(   N(   t   _has_cextensions(    (   R   (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyR   q  s    s   C extensions not installed(   R    R*   (   R   (    (   R   se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   cextensionsn  s    c         C   s;   d d l  m } y | d ƒ t SWn t k
 r6 t SXd  S(   Niÿÿÿÿ(   t   create_engines	   sqlite://(   t
   sqlalchemyRm   t   Truet   ImportErrorRf   (   R   Rm   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyRi   t  s    
c         C   s7   y d d l  m } m } t SWn t k
 r2 t SXd  S(   Niÿÿÿÿ(   t   cresultproxyt   cprocessors(   Rn   Rq   Rr   Ro   Rp   Rf   (   R   Rq   Rr   (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyRk   |  s
    (X   R   R   t   propertyR   R   R	   R
   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R$   R%   R'   R(   R+   R-   R.   R/   R0   R1   R2   R4   R5   R6   R7   R8   R9   R:   R;   R<   R=   R>   R?   R@   RA   RB   RC   RD   RE   RF   RG   RH   RI   RJ   RK   RL   RM   RN   RO   RP   RQ   RR   RS   RT   RU   RV   RW   RX   RY   RZ   R[   R\   R]   R^   R_   R`   Ra   Rb   Re   Rg   Rh   Rj   Rl   Ri   Rk   (    (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyR      sª   
	



			
			N(   t   __doc__t    R    t   objectR   R   (    (    (    se   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/requirements.pyt   <module>   s   