Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error when using a Marshmallow schema #108

Closed
snoepkast opened this issue Oct 18, 2018 · 4 comments
Closed

Error when using a Marshmallow schema #108

snoepkast opened this issue Oct 18, 2018 · 4 comments

Comments

@snoepkast
Copy link

snoepkast commented Oct 18, 2018

I get the following error when I want to generate an object using a marshmallow schema:

ValueError: Mixer (<class 'src.users.schemas.UserSchema'>): Generation for OPTIONS_CLASS (UserSchema) has been stopped. Exception: __init__() missing 1 required positional argument: 'meta'

The code is:

from marshmallow import Schema, fields
from mixer.main import mixer

class UserSchema(Schema):
    id = fields.Integer(read_only=True)
    email = fields.String()
    first_name = fields.String()
    last_name = fields.String()

user = mixer.blend(UserSchema)

I saw this issue open, which indicates this is not possible yet. But it is in the docs already here.

Versions:

python==3.7.0
marshmallow==2.16.0
mixer==6.1.3

Full trace:

Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/mixer/main.py", line 241, in gen_value
    value = fab()
  File "/usr/local/lib/python3.7/site-packages/mixer/main.py", line 134, in blend
    target = self.populate_target(values)
  File "/usr/local/lib/python3.7/site-packages/mixer/main.py", line 157, in populate_target
    target = self.__scheme()
TypeError: __init__() missing 1 required positional argument: 'meta'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/sanic/app.py", line 603, in handle_request
    response = await response
  File "/usr/src/src/users/views.py", line 19, in get
    create_user()
  File "/usr/src/src/users/factories.py", line 7, in create_user
    user = mixer.blend(UserSchema)
  File "/usr/local/lib/python3.7/site-packages/mixer/main.py", line 568, in blend
    return type_mixer.blend(**values)
  File "/usr/local/lib/python3.7/site-packages/mixer/main.py", line 116, in blend
    for name, value in defaults.items()
  File "/usr/local/lib/python3.7/site-packages/mixer/main.py", line 116, in <genexpr>
    for name, value in defaults.items()
  File "/usr/local/lib/python3.7/site-packages/mixer/mix_types.py", line 222, in gen_value
    return type_mixer.gen_field(field)
  File "/usr/local/lib/python3.7/site-packages/mixer/main.py", line 193, in gen_field
    return self.gen_value(field.name, field, unique=unique)
  File "/usr/local/lib/python3.7/site-packages/mixer/main.py", line 247, in gen_value
    field_name, self.__scheme.__name__, exc))
ValueError: Mixer (<class 'src.users.schemas.UserSchema'>): Generation for OPTIONS_CLASS (UserSchema) has been stopped. Exception: __init__() missing 1 required positional argument: 'meta'

Any help would be appreciated!

@snoepkast
Copy link
Author

On python 2.7.13 I get a different error:

__init__() takes exactly 2 arguments (1 given)
Traceback (most recent call last):
  File "/Users/allard/.virtualenvs/marshmallow-mixer-test/lib/python2.7/site-packages/mixer/main.py", line 241, in gen_value
    value = fab()
  File "/Users/allard/.virtualenvs/marshmallow-mixer-test/lib/python2.7/site-packages/mixer/main.py", line 134, in blend
    target = self.populate_target(values)
  File "/Users/allard/.virtualenvs/marshmallow-mixer-test/lib/python2.7/site-packages/mixer/main.py", line 157, in populate_target
    target = self.__scheme()
TypeError: __init__() takes exactly 2 arguments (1 given)
Traceback (most recent call last):
  File "/Users/allard/.virtualenvs/marshmallow-mixer-test/lib/python2.7/site-packages/mixer/main.py", line 568, in blend
    return type_mixer.blend(**values)
  File "/Users/allard/.virtualenvs/marshmallow-mixer-test/lib/python2.7/site-packages/mixer/main.py", line 116, in blend
    for name, value in defaults.items()
  File "/Users/allard/.virtualenvs/marshmallow-mixer-test/lib/python2.7/site-packages/mixer/main.py", line 116, in <genexpr>
    for name, value in defaults.items()
  File "/Users/allard/.virtualenvs/marshmallow-mixer-test/lib/python2.7/site-packages/mixer/mix_types.py", line 222, in gen_value
    return type_mixer.gen_field(field)
  File "/Users/allard/.virtualenvs/marshmallow-mixer-test/lib/python2.7/site-packages/mixer/main.py", line 193, in gen_field
    return self.gen_value(field.name, field, unique=unique)
  File "/Users/allard/.virtualenvs/marshmallow-mixer-test/lib/python2.7/site-packages/mixer/main.py", line 247, in gen_value
    field_name, self.__scheme.__name__, exc))
ValueError: Mixer (<class '__main__.UserSchema'>): Generation for OPTIONS_CLASS (UserSchema) has been stopped. Exception: __init__() takes exactly 2 arguments (1 given)

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/allard/.virtualenvs/marshmallow-mixer-test/lib/python2.7/site-packages/mixer/main.py", line 568, in blend
    return type_mixer.blend(**values)
  File "/Users/allard/.virtualenvs/marshmallow-mixer-test/lib/python2.7/site-packages/mixer/main.py", line 116, in blend
    for name, value in defaults.items()
  File "/Users/allard/.virtualenvs/marshmallow-mixer-test/lib/python2.7/site-packages/mixer/main.py", line 116, in <genexpr>
    for name, value in defaults.items()
  File "/Users/allard/.virtualenvs/marshmallow-mixer-test/lib/python2.7/site-packages/mixer/mix_types.py", line 222, in gen_value
    return type_mixer.gen_field(field)
  File "/Users/allard/.virtualenvs/marshmallow-mixer-test/lib/python2.7/site-packages/mixer/main.py", line 193, in gen_field
    return self.gen_value(field.name, field, unique=unique)
  File "/Users/allard/.virtualenvs/marshmallow-mixer-test/lib/python2.7/site-packages/mixer/main.py", line 247, in gen_value
    field_name, self.__scheme.__name__, exc))
ValueError: Mixer (<class '__main__.UserSchema'>): Generation for OPTIONS_CLASS (UserSchema) has been stopped. Exception: __init__() takes exactly 2 arguments (1 given)

@ypa
Copy link
Contributor

ypa commented Aug 11, 2019

In my case updating the import statement to from mixer.backend.marshmallow import mixer.

@ypa
Copy link
Contributor

ypa commented Aug 11, 2019

^^ that fixes the error in my case.

@klen
Copy link
Owner

klen commented Dec 30, 2020

Thank you. Docs were fixed.

@klen klen closed this as completed Dec 30, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants