divisor.app

Main entry point for divisor CLI. Routes to different inference modes based on flags. Exclusive import location of submodules to avoid circular imports.

 1# SPDX-License-Identifier: MPL-2.0 AND LicenseRef-Commons-Clause-License-Condition-1.0
 2# <!-- // /*  d a r k s h a p e s */ -->
 3
 4"""
 5Main entry point for divisor CLI.
 6Routes to different inference modes based on flags.
 7Exclusive import location of submodules to avoid circular imports.
 8"""
 9
10import argparse
11import sys
12
13from fire import Fire
14
15from divisor.spec import flux_map, mmada_map, acestep_map
16
17model_args = flux_map | mmada_map | acestep_map
18
19
20def main():
21    """Main entry point that routes to appropriate inference function."""
22    parser = argparse.ArgumentParser(description="Divisor Multimodal CLI")
23    parser.usage = "divisor --model-type dev --quantization <args>"
24    parser.epilog = """Valid arguments :
25    --ae_id, --width, --height, --guidance, --seed, --prompt,
26    --tiny, --device, --num_steps, --loop,
27    --offload, --compile, --verbose
28    """
29    parser.add_argument(
30        "--quantization",
31        action="store_true",
32        help="Enable quantization (fp8, e5m2, e4m3fn) for the model",
33    )
34
35    parser.add_argument(
36        "-m",
37        "--model-type",
38        choices=model_args,
39        default=list(model_args)[0],
40        help=f"""
41        Model type to use: {list(model_args)}, Default: {list(model_args)[0]}
42        """,
43    )
44
45    args, remaining_argv = parser.parse_known_args()
46    model_id = args.model_type
47    if args.model_type in mmada_map:
48        from divisor.mmada.gradio import main
49
50        remaining_argv = [""]  # Gradio app doesn't need arguments
51    elif args.model_type in flux_map:
52        model_id = args.model_type
53        if args.model_type == "flux2-dev":
54            from divisor.flux2.prompt import main
55        else:
56            if args.model_type == "mini":
57                from divisor.xflux1.prompt import main
58            else:
59                from divisor.flux1.prompt import main
60        remaining_argv = ["--mir-id", model_args[model_id]] + remaining_argv  # change to     model_args[model_id]
61    else:
62        from divisor.acestep.gradio import main
63
64    sys.argv = [sys.argv[0]] + remaining_argv
65    Fire(main)
66
67
68if __name__ == "__main__":
69    main()
model_args = {'flux1-dev': 'model.dit.flux1-dev', 'mini': 'model.dit.flux1-dev:mini', 'flux1-schnell': 'model.dit.flux1-schnell', 'flux2-dev': 'model.dit.flux2-dev', 'mmada': 'model.mldm.mmada', 'mixcot': 'model.mldm.mmada:mixcot', 'lumina-dimoo': 'model.mldm.mmada:lumina-dimoo', 'acestep': 'model.dit.acestep'}
def main():
21def main():
22    """Main entry point that routes to appropriate inference function."""
23    parser = argparse.ArgumentParser(description="Divisor Multimodal CLI")
24    parser.usage = "divisor --model-type dev --quantization <args>"
25    parser.epilog = """Valid arguments :
26    --ae_id, --width, --height, --guidance, --seed, --prompt,
27    --tiny, --device, --num_steps, --loop,
28    --offload, --compile, --verbose
29    """
30    parser.add_argument(
31        "--quantization",
32        action="store_true",
33        help="Enable quantization (fp8, e5m2, e4m3fn) for the model",
34    )
35
36    parser.add_argument(
37        "-m",
38        "--model-type",
39        choices=model_args,
40        default=list(model_args)[0],
41        help=f"""
42        Model type to use: {list(model_args)}, Default: {list(model_args)[0]}
43        """,
44    )
45
46    args, remaining_argv = parser.parse_known_args()
47    model_id = args.model_type
48    if args.model_type in mmada_map:
49        from divisor.mmada.gradio import main
50
51        remaining_argv = [""]  # Gradio app doesn't need arguments
52    elif args.model_type in flux_map:
53        model_id = args.model_type
54        if args.model_type == "flux2-dev":
55            from divisor.flux2.prompt import main
56        else:
57            if args.model_type == "mini":
58                from divisor.xflux1.prompt import main
59            else:
60                from divisor.flux1.prompt import main
61        remaining_argv = ["--mir-id", model_args[model_id]] + remaining_argv  # change to     model_args[model_id]
62    else:
63        from divisor.acestep.gradio import main
64
65    sys.argv = [sys.argv[0]] + remaining_argv
66    Fire(main)

Main entry point that routes to appropriate inference function.