Ejemplo n.º 1
0
def print_doc(provider_or_field=None,
              args=None, lang=DEFAULT_LOCALE, output=None, seed=None,
              includes=None):
    args = args or []
    output = output or sys.stdout
    fake = Faker(locale=lang, includes=includes)
    fake.seed_instance(seed)

    from faker.providers import BaseProvider
    base_provider_formatters = [f for f in dir(BaseProvider)]

    if provider_or_field:
        if '.' in provider_or_field:
            parts = provider_or_field.split('.')
            locale = parts[-2] if parts[-2] in AVAILABLE_LOCALES else lang
            fake = Faker(locale, providers=[
                         provider_or_field], includes=includes)
            fake.seed_instance(seed)
            doc = documentor.Documentor(fake)
            doc.already_generated = base_provider_formatters
            print_provider(
                doc,
                fake.get_providers()[0],
                doc.get_provider_formatters(fake.get_providers()[0]),
                output=output)
        else:
            try:
                print(
                    fake.format(
                        provider_or_field,
                        *args),
                    end='',
                    file=output)
            except AttributeError:
                raise ValueError('No faker found for "{0}({1})"'.format(
                    provider_or_field, args))

    else:
        doc = documentor.Documentor(fake)

        formatters = doc.get_formatters(with_args=True, with_defaults=True)

        for provider, fakers in formatters:

            print_provider(doc, provider, fakers, output=output)

        for language in AVAILABLE_LOCALES:
            if language == lang:
                continue
            print(file=output)
            print('## LANGUAGE {0}'.format(language), file=output)
            fake = Faker(locale=language)
            fake.seed_instance(seed)
            d = documentor.Documentor(fake)

            for p, fs in d.get_formatters(with_args=True, with_defaults=True,
                                          locale=language,
                                          excludes=base_provider_formatters):
                print_provider(d, p, fs, output=output)
Ejemplo n.º 2
0
def write_docs(*args, **kwargs):
    from faker import Faker, documentor
    from faker.config import DEFAULT_LOCALE, AVAILABLE_LOCALES

    fake = Faker(locale=DEFAULT_LOCALE)

    from faker.providers import BaseProvider
    base_provider_formatters = [f for f in dir(BaseProvider)]

    doc = documentor.Documentor(fake)

    formatters = doc.get_formatters(with_args=True, with_defaults=True)

    for provider, fakers in formatters:
        provider_name = doc.get_provider_name(provider)
        fname = os.path.join(DOCS_ROOT, 'providers', '%s.rst' % provider_name)
        with open(fname, 'wb') as fh:
            write(fh, ':github_url: hide\n\n')
            write_provider(fh, doc, provider, fakers)

    with open(os.path.join(DOCS_ROOT, 'providers.rst'), 'wb') as fh:
        write(fh, ':github_url: hide\n\n')
        write(fh, 'Providers\n')
        write(fh, '=========\n')
        write(fh, '.. toctree::\n')
        write(fh, '   :maxdepth: 2\n\n')
        [
            write(fh, '   providers/%s\n' % doc.get_provider_name(provider))
            for provider, fakers in formatters
        ]

    AVAILABLE_LOCALES = sorted(AVAILABLE_LOCALES)
    for lang in AVAILABLE_LOCALES:
        fname = os.path.join(DOCS_ROOT, 'locales', '%s.rst' % lang)
        with open(fname, 'wb') as fh:
            write(fh, ':github_url: hide\n\n')
            title = 'Language {0}\n'.format(lang)
            write(fh, title)
            write(fh, '=' * len(title))
            write(fh, '\n')
            fake = Faker(locale=lang)
            d = documentor.Documentor(fake)

            for p, fs in d.get_formatters(with_args=True,
                                          with_defaults=True,
                                          locale=lang,
                                          excludes=base_provider_formatters):
                write_provider(fh, d, p, fs)

    with open(os.path.join(DOCS_ROOT, 'locales.rst'), 'wb') as fh:
        write(fh, ':github_url: hide\n\n')
        write(fh, 'Locales\n')
        write(fh, '=======\n')
        write(fh, '.. toctree::\n')
        write(fh, '   :maxdepth: 2\n\n')
        [write(fh, '   locales/%s\n' % lang) for lang in AVAILABLE_LOCALES]
Ejemplo n.º 3
0
def main(provider_or_field=None, *args):
    from faker import Faker, Factory, documentor, DEFAULT_LOCALE, AVAILABLE_LOCALES
    fake = Faker(locale=DEFAULT_LOCALE)

    from faker.providers import BaseProvider
    base_provider_formatters = [f for f in dir(BaseProvider)]

    if provider_or_field:
        if '.' in provider_or_field:
            parts = provider_or_field.split('.')
            locale = parts[-2] if parts[
                -2] in AVAILABLE_LOCALES else DEFAULT_LOCALE
            fake = Factory.create(locale, providers=[parts[-1]])
            doc = documentor.Documentor(fake)
            doc.already_generated = base_provider_formatters
            print_provider(
                doc,
                fake.get_providers()[0],
                doc.get_provider_formatters(fake.get_providers()[0]))
        else:
            try:
                print(fake.format(provider_or_field, *args))
            except AttributeError:
                print('No faker found for "{0}({1})"'.format(
                    provider_or_field, args))

    else:
        doc = documentor.Documentor(fake)

        formatters = doc.get_formatters(with_args=True, with_defaults=True)

        for provider, fakers in formatters:

            print_provider(doc, provider, fakers)

        for lang in AVAILABLE_LOCALES:
            if lang == DEFAULT_LOCALE:
                continue
            print()
            print('## LANGUAGE {0}'.format(lang))
            fake = Faker(locale=lang)
            d = documentor.Documentor(fake)

            for p, fs in d.get_formatters(with_args=True,
                                          with_defaults=True,
                                          locale=lang,
                                          excludes=base_provider_formatters):
                print_provider(d, p, fs)
Ejemplo n.º 4
0
def main(provider_or_field=None, *args):
    from faker import Faker, documentor
    fake = Faker()

    doc = documentor.Documentor(fake)

    if provider_or_field:
        try:

            print fake.format(provider_or_field, *args)
            return
        except AttributeError:
            providers = [
                p for p in fake.providers if
                documentor.Documentor.getProviderName(p) == provider_or_field
            ]
            if not providers:
                return 'No faker found for "%s"' % provider_or_field
            from faker.providers import BaseProvider
            doc.already_generated = [fake for fake in dir(BaseProvider)]
            formatters = [(providers[0],
                           doc.getProviderFormatters(providers[0]))]
    else:
        formatters = doc.getFormatters(with_args='first', with_defaults=True)

    for provider, fakers in formatters:

        print
        print "### %s" % documentor.Documentor.getProviderName(provider)
        print

        for signature, example in fakers.items():

            print u"{fake:<{margin}}# {example}".format(
                fake=signature,
                example=example,
                margin=max(30, doc.max_name_len + 1))