

def print_doc(provider_or_field=None, args=None, lang=DEFAULT_LOCALE, output=None, includes=None):
    args = (args or [])
    output = (output or sys.stdout)
    fake = Faker(locale=lang, includes=includes)
    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 = Factory.create(locale, providers=[provider_or_field], includes=formatters)
            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)
            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)

dataset/ETHPy150Open joke2k/faker/faker/cli.py print_doc/VarMisuse@145/183 `includes`->`formatters`