• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

barseghyanartur / faker-file / 14766526838

30 Apr 2025 11:46PM UTC coverage: 80.749% (-19.0%) from 99.758%
14766526838

push

github

web-flow
Switch from pytest.ini to pyproject.toml for pytest config (#116)

* Switch from pytest.ini to pyproject.toml for pytest config

* Clean up

2672 of 3309 relevant lines covered (80.75%)

14.34 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/src/faker_file/cli/command.py
1
import argparse
×
2
import sys
×
3
import typing
×
4

5
from .. import __version__
×
6

7
__author__ = "Artur Barseghyan <artur.barseghyan@gmail.com>"
×
8
__copyright__ = "2023 Artur Barseghyan"
×
9
__license__ = "MIT"
×
10
__all__ = ("main",)
×
11

12

13
def main():
×
14
    try:
×
15
        from .helpers import (
×
16
            PROVIDERS,
17
            generate_completion_file,
18
            generate_file,
19
            get_method_kwargs,
20
            is_optional_type,
21
        )
22
    except ImportError:
×
23
        print("You need to pip install faker-file[common] to use the CLI")
×
24
        sys.exit(1)
×
25

26
    parser = argparse.ArgumentParser(
×
27
        description="CLI for the faker-file package."
28
    )
29
    subparsers = parser.add_subparsers(
×
30
        dest="command", help="Available file providers."
31
    )
32

33
    # Add generate-completion subparser
34
    __generate_completion_subparser = subparsers.add_parser(
×
35
        "generate-completion",
36
        help="Generate bash completion file.",
37
    )
38

39
    # Add version subparser
40
    __version_subparser = subparsers.add_parser(
×
41
        "version",
42
        help="Print version.",
43
    )
44

45
    for method_name, provider in PROVIDERS.items():
×
46
        subparser = subparsers.add_parser(
×
47
            method_name,
48
            help=f"Generate a {method_name.split('_file')[0]} file.",
49
        )
50
        method_kwargs, annotations = get_method_kwargs(provider, method_name)
×
51
        for arg, default in method_kwargs.items():
×
52
            arg_type = annotations[arg]
×
53
            arg_kwargs = {
×
54
                "default": default,
55
                "help": f"{arg} (default: {default})",
56
                "type": (
57
                    arg_type.__args__[0]
58
                    if isinstance(arg_type, typing._GenericAlias)
59
                    and is_optional_type(arg_type)
60
                    else arg_type
61
                ),
62
            }
63

64
            subparser.add_argument(f"--{arg}", **arg_kwargs)
×
65

66
        # Add the optional num_files argument
67
        subparser.add_argument(
×
68
            "--nb_files",
69
            default=1,
70
            type=int,
71
            help="number of files to generate (default: 1)",
72
        )
73

74
    args = parser.parse_args()
×
75

76
    if args.command == "generate-completion":
×
77
        generate_completion_file()
×
78
    elif args.command == "version":
×
79
        print(__version__)
×
80
    elif args.command:
×
81
        kwargs = {k: v for k, v in vars(args).items() if k not in ("command",)}
×
82
        for counter in range(args.nb_files):
×
83
            output_file = generate_file(args.command, **kwargs)
×
84
            print(
×
85
                f"Generated {args.command} file "
86
                f"({counter+1} of {args.nb_files}): "
87
                f"{output_file.data['filename']}"
88
            )
89
    else:
90
        parser.print_help()
×
91
        sys.exit(1)
×
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc