Пример #1
0
    hacksrc(
        func,
        1
        * [
            (
                "):\n",
                """):
        tabbing = len(self.stack)*4*" "
""",
                1,
            )
        ]
        + 0
        * [
            (
                "self.stack.append(stack_entry)",
                """self.stack.append(stack_entry)
        tabbing = len(self.stack)*4*" "
""",
                1,
            )
        ]
        + [("\\n" + word, word) for word in "SELECT FROM WHERE ORDER GROUP HAVING".split()]  # kill pre-newlines
        + [(" " + word, word) for word in "SELECT FROM WHERE ORDER GROUP HAVING".split()]  # kill pre-spaces
        + [('"' + word, '"\\n"+tabbing+"' + word) for word in "FROM WHERE ORDER GROUP HAVING".split()]
        + [('"' + word, 'tabbing+"' + word) for word in "SELECT".split()]
        + [
            ('"("', '"(\\n"', 5),  # w/o it nested select appears on the same row
            ('")"', '"\\n"+tabbing[:-4]+")"', 5),
            ('cs.keyword + " "', '"\\n"+tabbing + cs.keyword + "\\n"'),  # visit_compound_select
        ]
        + 0
        * [  # newline at end ?
            ("self.for_update_clause(select)", 'self.for_update_clause(select) +"\\n"'),  # visit_select
            ("self.visit_select_postclauses(cs)", 'self.visit_select_postclauses(cs) +"\\n"'),  # visit_compound_select
        ],
        None,
        allow_not_found=1,
        # debug=1,
    )
Пример #2
0
    hacksrc(
        func,
        1 * [('):\n', '''):
        tabbing = len(self.stack)*4*" "
''', 1)] + 0 *
        [('self.stack.append(stack_entry)', '''self.stack.append(stack_entry)
        tabbing = len(self.stack)*4*" "
''', 1)] + [
            ('\\n' + word, word) for word in
            'SELECT FROM WHERE ORDER GROUP HAVING'.split()  #kill pre-newlines
        ] + [
            (' ' + word, word) for word in
            'SELECT FROM WHERE ORDER GROUP HAVING'.split()  #kill pre-spaces
        ] + [('"' + word, '"\\n"+tabbing+"' + word)
             for word in 'FROM WHERE ORDER GROUP HAVING'.split()] +
        [('"' + word, 'tabbing+"' + word) for word in 'SELECT'.split()] + [
            ('"("', '"(\\n"',
             5),  # w/o it nested select appears on the same row
            ('")"', '"\\n"+tabbing[:-4]+")"', 5),
            ('cs.keyword + " "',
             '"\\n"+tabbing + cs.keyword + "\\n"'),  #visit_compound_select
        ] + 0 * [  #newline at end ?
            ('self.for_update_clause(select)',
             'self.for_update_clause(select) +"\\n"'),  #visit_select
            ('self.visit_select_postclauses(cs)',
             'self.visit_select_postclauses(cs) +"\\n"'
             ),  #visit_compound_select
        ],
        None,
        allow_not_found=1,
        #debug=1,
    )
Пример #3
0
def hack4repeat():
    import sqlalchemy
    _v03 = hasattr(sqlalchemy, 'mapper')
    if not _v03:
        print 'v04 - cant hack4repeat'
        return
    # HACKALL
    import sqlalchemy.util
    sqlalchemy.util.Set = sqlalchemy.util.OrderedSet
    DICT = sqlalchemy.util.OrderedDict
    SET = sqlalchemy.util.OrderedSet

    import sqlalchemy.topological

    def init2old(x, newfunc):  #, name ='__init__', oldname = 'oldinit'):
        x.oldinit = x.__init__
        x.__init__ = newfunc

    if 0:

        class SortedList(list):
            def __iter__(me):
                try:
                    sorted = me._sorted
                except AttributeError:
                    sorted = me._sorted = me._do_sort()
                assert len(me) == len(sorted)
                return iter(sorted)

            def _do_sort(me):
                #if not me: me = r
                r = me[:]  #copy
                r.sort(key=lambda t: t.item.name)
                #                print 'sorted-', ','.join( t.item.name for t in r)
                return r

        def init(me, *a, **k):
            me.oldinit(*a, **k)
            me.children = SortedList()
            #print 'hacked', type(me)

        init2old(sqlalchemy.topological._Node, init)

    #see also:
    # unitofwork.UnitOfWork.identity_map ??
    # unitofwork.UOWTask.objects
    # sql_util.Aliasizer.tables

    if 1:

        def init(me, *a, **k):
            me.oldinit(*a, **k)
            me.tables = DICT()
            #print 'hacked', type(me)

        init2old(sqlalchemy.schema.MetaData, init)

    if 10:

        def init(me, *a, **k):
            me.oldinit(*a, **k)
            if isinstance(me.dependencies, sqlalchemy.util.Set):
                me.dependencies = SET()
            else:
                me.dependencies = DICT()
            #me.tasks = DICT()
            #print 'hacked', type(me)

        init2old(sqlalchemy.orm.unitofwork.UOWTransaction, init)

    if 10:

        def init(me, *a, **k):
            me.oldinit(*a, **k)
            me.objects = DICT()
            #print 'hacked', type(me)

        init2old(sqlalchemy.orm.unitofwork.UOWTask, init)

    if 0:
        import weakref

        def init(me, dict=None):
            me.oldinit(None)
            me.data = DICT(dict)
            print 'hacked', type(me)

        init2old(weakref.WeakKeyDictionary, init)

    from sqlalchemy.orm import mapperlib
    _mapper_registry = find_valid_fullname_import(
        '''
        sqlalchemy.orm.mapperlib._mapper_registry
    ''', 2)
    assert not _mapper_registry.data
    _mapper_registry.data = DICT()

    if 10:
        #these must be done via source:
        #orm/mapper.py: Mapper.save_obj(): line 848
        #   table_to_mapper = util.OrderedDict() #{}
        #topological.py: QueueDependencySorter.sort(): line 138
        #   nodes = util.OrderedDict()  #{}

        #ver 0.3.3
        hacksrc(mapperlib.Mapper.save_obj, 'table_to_mapper = {}',
                'table_to_mapper = util.OrderedDict()')
        hacksrc(mapperlib.Mapper._compile_properties, 'self.__props = {}',
                'self.__props = util.OrderedDict()')
        hacksrc(sqlalchemy.topological.QueueDependencySorter.sort,
                'nodes = {}', 'nodes = util.OrderedDict()')

    if 0:  #partial

        def _set_constraints(me, v):
            from sqlalchemy.util import OrderedSet, Set
            assert not v
            assert isinstance(v, Set)
            me._constraints = OrderedSet()

        sqlalchemy.Table.constraints = property(lambda me: me._constraints,
                                                _set_constraints)
        sqlalchemy.Column.constraints = property(lambda me: me._constraints,
                                                 _set_constraints)
Пример #4
0
def hack4repeat():
    import sqlalchemy

    _v03 = hasattr(sqlalchemy, "mapper")
    if not _v03:
        print "v04 - cant hack4repeat"
        return
    # HACKALL
    import sqlalchemy.util

    sqlalchemy.util.Set = sqlalchemy.util.OrderedSet
    DICT = sqlalchemy.util.OrderedDict
    SET = sqlalchemy.util.OrderedSet

    import sqlalchemy.topological

    def init2old(x, newfunc):  # , name ='__init__', oldname = 'oldinit'):
        x.oldinit = x.__init__
        x.__init__ = newfunc

    if 0:

        class SortedList(list):
            def __iter__(me):
                try:
                    sorted = me._sorted
                except AttributeError:
                    sorted = me._sorted = me._do_sort()
                assert len(me) == len(sorted)
                return iter(sorted)

            def _do_sort(me):
                # if not me: me = r
                r = me[:]  # copy
                r.sort(key=lambda t: t.item.name)
                #                print 'sorted-', ','.join( t.item.name for t in r)
                return r

        def init(me, *a, **k):
            me.oldinit(*a, **k)
            me.children = SortedList()
            # print 'hacked', type(me)

        init2old(sqlalchemy.topological._Node, init)

    # see also:
    # unitofwork.UnitOfWork.identity_map ??
    # unitofwork.UOWTask.objects
    # sql_util.Aliasizer.tables

    if 1:

        def init(me, *a, **k):
            me.oldinit(*a, **k)
            me.tables = DICT()
            # print 'hacked', type(me)

        init2old(sqlalchemy.schema.MetaData, init)

    if 10:

        def init(me, *a, **k):
            me.oldinit(*a, **k)
            if isinstance(me.dependencies, sqlalchemy.util.Set):
                me.dependencies = SET()
            else:
                me.dependencies = DICT()
            # me.tasks = DICT()
            # print 'hacked', type(me)

        init2old(sqlalchemy.orm.unitofwork.UOWTransaction, init)

    if 10:

        def init(me, *a, **k):
            me.oldinit(*a, **k)
            me.objects = DICT()
            # print 'hacked', type(me)

        init2old(sqlalchemy.orm.unitofwork.UOWTask, init)

    if 0:
        import weakref

        def init(me, dict=None):
            me.oldinit(None)
            me.data = DICT(dict)
            print "hacked", type(me)

        init2old(weakref.WeakKeyDictionary, init)

    from sqlalchemy.orm import mapperlib

    _mapper_registry = find_valid_fullname_import(
        """
        sqlalchemy.orm.mapperlib._mapper_registry
    """,
        2,
    )
    assert not _mapper_registry.data
    _mapper_registry.data = DICT()

    if 10:
        # these must be done via source:
        # orm/mapper.py: Mapper.save_obj(): line 848
        #   table_to_mapper = util.OrderedDict() #{}
        # topological.py: QueueDependencySorter.sort(): line 138
        #   nodes = util.OrderedDict()  #{}

        # ver 0.3.3
        hacksrc(mapperlib.Mapper.save_obj, "table_to_mapper = {}", "table_to_mapper = util.OrderedDict()")
        hacksrc(mapperlib.Mapper._compile_properties, "self.__props = {}", "self.__props = util.OrderedDict()")
        hacksrc(sqlalchemy.topological.QueueDependencySorter.sort, "nodes = {}", "nodes = util.OrderedDict()")

    if 0:  # partial

        def _set_constraints(me, v):
            from sqlalchemy.util import OrderedSet, Set

            assert not v
            assert isinstance(v, Set)
            me._constraints = OrderedSet()

        sqlalchemy.Table.constraints = property(lambda me: me._constraints, _set_constraints)
        sqlalchemy.Column.constraints = property(lambda me: me._constraints, _set_constraints)