Skip to content

AttributeError: module 'string' has no attribute 'letters' #24

@beeekind

Description

@beeekind

This error is raised when the following code is called in a Django test case:

from django_faker import Faker

populator = Faker.getPopulator()
populator.addEntity(User, 2)
# Task contains a foreign key to a User object
populator.addEntity(Task, 5)
models = populator.execute()

Relevant stacktrace

Traceback (most recent call last):
  File "/Users/ben/PycharmProjects/mistreatment/tasks/tests.py", line 14, in setUp
    models = populator.execute()
  File "/usr/local/lib/python3.6/site-packages/django_faker/populator.py", line 163, in execute
    insertedEntities[klass].append( self.entities[klass].execute(using, insertedEntities) )
  File "/usr/local/lib/python3.6/site-packages/django_faker/populator.py", line 104, in execute
    value = format(insertedEntities) if hasattr(format,'__call__') else format
  File "/usr/local/lib/python3.6/site-packages/django_faker/guessers.py", line 23, in <lambda>
    if name in ('username','login','nickname'): return lambda x:generator.userName()
  File "/usr/local/lib/python3.6/site-packages/faker/providers/Internet.py", line 57, in userName
    return self.bothify( self.generator.parse(format) ).lower()
  File "/usr/local/lib/python3.6/site-packages/faker/providers/__init__.py", line 82, in bothify
    return BaseProvider.lexify( BaseProvider.numerify( text ) )
  File "/usr/local/lib/python3.6/site-packages/faker/providers/__init__.py", line 72, in lexify
    return re.sub( r'\?', lambda x: BaseProvider.randomLetter(), text )
  File "/usr/local/Cellar/python3/3.6.0_1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/re.py", line 191, in sub
    return _compile(pattern, flags).sub(repl, string, count)
  File "/usr/local/lib/python3.6/site-packages/faker/providers/__init__.py", line 72, in <lambda>
    return re.sub( r'\?', lambda x: BaseProvider.randomLetter(), text )
  File "/usr/local/lib/python3.6/site-packages/faker/providers/__init__.py", line 35, in randomLetter
    return random.choice( string.letters )
AttributeError: module 'string' has no attribute 'letters'

If the test is run 5 times it will only error 3 or 4 times it is run - which makes it even more confusing. Any idea what is going on here? Thanks.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions