|L i `ddlmZddlZddlmZddlmZddlmZdZ dZ d d Z d d Z dd Z y)) annotationsN)Union)inspect_getfullargspec)sqla_2c Pddlm}t}|D]|jt |}|j |Dcgc]2dj fd|Dftfd|Dz4c}ddt|zzdj |d Scc}w) a A facade around @testing.combinations() oriented towards boolean keyword-based arguments. Basically generates a nice looking identifier based on the keywords and also sets up the argument names. E.g.:: @testing.flag_combinations( dict(lazy=False, passive=False), dict(lazy=True, passive=False), dict(lazy=False, passive=True), dict(lazy=False, passive=True, raiseload=True), ) would result in:: @testing.combinations( ('', False, False, False), ('lazy', True, False, False), ('lazy_passive', True, True, False), ('lazy_passive', True, True, True), id_='iaaa', argnames='lazy,passive,raiseload' ) rconfig_c3HK|]}j|ds|ywFNget.0kds Z/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/alembic/testing/util.py z$flag_combinations..9s9Aq%a9s""c3BK|]}j|dywr rrs rrz$flag_combinations..:s2AEE!UO2sia,)id_argnames) sqlalchemy.testingr setupdatesorted combinationsjointuplelen)r r keysrs `rflag_combinationsr%s:* 5D  A $resultr fns rrun_ddlz3metadata_fixture..decorate..run_ddlZsk )'-'8 8Ht} -D(+##FII. !!&)),!!&)),sB(A& B&BB)scope)fixture)rDrEr ddlr8s` rdecoratez"metadata_fixture..decorateYs& -4 ((s(3G<<)rr r8)rHrIr r8s` @@rmetadata_fixturerLSs*#= OrJc, t|S#|cYSxYw)N)int)values r _safe_intrPls5z s cddlm}ddlm}|s!t |j j dd}ts |rd|ini}ni}|||fi|S)Nrr )testing_engine future_engineFfuture)rr sqlalchemy.testing.enginesrRgetattr_currentoptionsr)urlrXrTr rRr/s rrRrRssK)9 00/5I #)h r  #w -" --rJ)function)rOstrreturnzUnion[int, str])NNF) __future__rr+typingrsqlalchemy.utilrutilrr%r5rLrPrRr'rJrras0# 2.b#"2 .rJ