Ejemplo n.º 1
0
    def test_query_opts_key_bound_branching(self):
        A, B, C, D, E, F, G = self.classes("A", "B", "C", "D", "E", "F", "G")

        base = Load(A).joinedload(A.bs)
        opts = [
            base.joinedload(B.cs),
            base.joinedload(B.ds),
            base.joinedload(B.es),
            base.joinedload(B.fs),
        ]

        q = Session().query(A)

        context = q._compile_state()

        @profiling.function_call_count(warmup=1)
        def go():
            q2 = q.options(opts)
            context.query = q2
            context.attributes = q2._attributes = {
                "_unbound_load_dedupes": set()
            }
            for opt in q2._with_options:
                opt.process_compile_state(context)

        go()