drift-labs / driftpy

python sdk to interact with drift v2
https://drift-2.gitbook.io/driftpy-for-dummies/
58 stars 39 forks source link

ValueError with Mutable Default in Dataclasses in types.py #66

Open flettl2 opened 9 months ago

flettl2 commented 9 months ago

Environment:

To Reproduce the error during the execution, run the following code:

import os
from anchorpy import Wallet
from driftpy.keypair import load_keypair
from driftpy.drift_client import DriftClient
from solana.rpc.async_api import AsyncClient
import asyncio

keypair_file = os.path.expanduser('~/.config/solana/my-keypair.json')
keypair = load_keypair(keypair_file)
wallet = Wallet(keypair)

url = 'https://api.mainnet-beta.solana.com'
connection = AsyncClient(url)

drift_client = DriftClient(connection, wallet, 'mainnet')

async def initialize_user():
    tx_sig = await drift_client.initialize_user(sub_account_id=0, name='toly')

asyncio.run(initialize_user())

Expected Behavior: I want to initialize a user

Actual Behavior: Encountered a ValueError: mutable default <class 'sumtypes.NONE'> for field post_only is not allowed: use default_factory

Error Message/Stack Trace: Traceback (most recent call last): File "/home/[username]/[project_directory]/initial_play.py", line 10, in <module> from driftpy.drift_client import DriftClient File "/home/[username]/[python_environment]/site-packages/driftpy/drift_client.py", line 22, in <module> from driftpy.account_subscription_config import AccountSubscriptionConfig File "/home/[username]/[python_environment]/site-packages/driftpy/account_subscription_config.py", line 6, in <module> from driftpy.accounts.bulk_account_loader import BulkAccountLoader File "/home/[username]/[python_environment]/site-packages/driftpy/accounts/__init__.py", line 1, in <module> from .get_accounts import * File "/home/[username]/[python_environment]/site-packages/driftpy/accounts/get_accounts.py", line 7, in <module> from driftpy.types import * File "/home/[username]/[python_environment]/site-packages/driftpy/types.py", line 336, in <module> @dataclass File "/home/[username]/[python_environment]/site-packages/dataclasses.py", line 1230, in dataclass return wrap(cls) File "/home/[username]/[python_environment]/site-packages/dataclasses.py", line 1220, in wrap return _process_class(cls, init, repr, eq, order, unsafe_hash, File "/home/[username]/[python_environment]/site-packages/dataclasses.py", line 958, in _process_class cls_fields.append(_get_field(cls, name, type, kw_only)) File "/home/[username]/[python_environment]/site-packages/dataclasses.py", line 815, in _get_field raise ValueError(f'mutable default {type(f.default)} for field ' ValueError: mutable default <class 'sumtypes.NONE'> for field post_only is not allowed: use default_factory