layday / instawow

World of Warcraft add-on manager CLI and GUI
GNU General Public License v3.0
161 stars 9 forks source link

AttributeError regarding missing attribute in GlobalConfig in 1.17.1 #61

Closed BSerpent86 closed 3 years ago

BSerpent86 commented 3 years ago

When running my installed and previously working instawow 1.17.1, I get the following error: AttributeError: 'GlobalConfig' object has no attribute '__field_defaults__'

When trying to recompile 1.17.1, the build fails due to the same error:

tests/test_config.py ..F..F........s...F...s.F

[...]

tests/test_config.py:81:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
build/lib/instawow/config.py:99: in read
    dummy_config.migrate_legacy_dirs()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = GlobalConfig(config_dir=PosixPath('/tmp/pytest-of-bs86/pytest-0/test_legacy_profile_migration_1/config'), profile='__d...ovalidate__'), game_flavour='retail', auto_update_check=True, temp_dir=PosixPath('/tmp/pytest-of-bs86/pytest-0/temp0'))

    def migrate_legacy_dirs(self) -> GlobalConfig:
        "Migrate a profile-less configuration to the new format."
        legacy_config_file = self.config_dir / 'config.json'
        if (
>           self.profile == self.__field_defaults__['profile']
            and not self.profile_dir.exists()
            and legacy_config_file.exists()
        ):
E       AttributeError: 'GlobalConfig' object has no attribute '__field_defaults__'
layday commented 3 years ago

Thanks for the bug report. It would help to know how you installed instawow. It looks like you have Pydantic 1.7 but the declared dependency is 1.6.*.

Sent with ProtonMail Secure Email.

‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐ On Wednesday, 4 November 2020 11:07, BSerpent86 notifications@github.com wrote:

When running my installed instawow, I get the following error: AttributeError: 'GlobalConfig' object has no attribute '__field_defaults__'

When trying to recompile 1.17.1, the build fails due to the same error: `tests/test_config.py ..F..F........s...F...s.F

[...]

tests/test_config.py:81:


build/lib/instawow/config.py:99: in read dummy_config.migrate_legacy_dirs()


self = GlobalConfig(config_dir=PosixPath('/tmp/pytest-of-bs86/pytest-0/test_legacy_profile_migration_1/config'), profile='d...ovalidate'), game_flavour='retail', auto_update_check=True, temp_dir=PosixPath('/tmp/pytest-of-bs86/pytest-0/temp0'))

def migrate_legacy_dirs(self) -> GlobalConfig: "Migrate a profile-less configuration to the new format." legacy_config_file = self.config_dir / 'config.json' if (

self.profile == self.__field_defaults__['profile']

and not self.profile_dir.exists() and legacy_config_file.exists() ):

E AttributeError: 'GlobalConfig' object has no attribute 'field_defaults'`

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub, or unsubscribe.

BSerpent86 commented 3 years ago

I have it installed on Manjaro using the AUR: https://aur.archlinux.org/packages/instawow/ The install script can be found here: https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=instawow

It checks for 'python-pydantic>=1.6.1'

Yes, python-pydantic is at version 1.7.2 on Arch based distributions, there is no 1.6 available anymore. Python is at 3.8.6

layday commented 3 years ago

@kelaun, could you take a look here please?

kelaun commented 3 years ago

Hi @BSerpent86,

This was overlooked on my end in the PKGBUILD. I will roll out a fix for it. What you can do is install downgrade with yay -S downgrade and run sudo downgrade python-pydantic. There you can downgrade to version 1.6.1 and after that it will work again.

BSerpent86 commented 3 years ago

Thanks, did that workaround and it is working again. I don't think that keeping a package on an old version can be a permanent solution though.

kelaun commented 3 years ago

It is not a solution indeed. Looking at the source however, the next release will be compatible with 1.7.x according to the setup.py

layday commented 3 years ago

I’m trying to make a new release but unfortunately I’m having some internet issues.

Sent with ProtonMail Secure Email.

‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐ On Wednesday, 4 November 2020 12:58, Kevin Andriessens notifications@github.com wrote:

It is not a solution indeed. Looking at the source however, the next release will be compatible with 1.7.x according to the setup.py

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.

layday commented 3 years ago

I've published 1.18.0 which depends on Pydantic 1.7.*.

@kelaun, you can also drop the dependency on python-slpp-git.

kelaun commented 3 years ago

The package was updated on the AUR as well now and seems to work fine.

BSerpent86 commented 3 years ago

Thanks, its working again now without downgrading anything!

layday commented 3 years ago

Thanks for the report @BSerpent86 and thanks for your help @kelaun!