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

Bundle script fails with Python 3.13 #600

Open
ofabel opened this issue Jan 19, 2025 · 1 comment
Open

Bundle script fails with Python 3.13 #600

ofabel opened this issue Jan 19, 2025 · 1 comment
Assignees
Labels
python Pull requests that update Python code

Comments

@ofabel
Copy link
Contributor

ofabel commented Jan 19, 2025

The bundle script located in tools/bundle.py fails with Python version 3.13:

$ python tools/bundle.py applications/Tools/upython/manifest.yml bundle.zip
Traceback (most recent call last):
  File "/home/ofa/dev/flipper-application-catalog/tools/bundle.py", line 15, in <module>
    from dataclass_wizard.dumpers import asdict
  File "/home/ofa/.local/lib/python3.13/site-packages/dataclass_wizard/__init__.py", line 100, in <module>
    from .bases_meta import LoadMeta, DumpMeta
  File "/home/ofa/.local/lib/python3.13/site-packages/dataclass_wizard/bases_meta.py", line 10, in <module>
    from .abstractions import AbstractJSONWizard
  File "/home/ofa/.local/lib/python3.13/site-packages/dataclass_wizard/abstractions.py", line 14, in <module>
    from .models import Extras
  File "/home/ofa/.local/lib/python3.13/site-packages/dataclass_wizard/models.py", line 3, in <module>
    from dataclasses import MISSING, Field, _create_fn
ImportError: cannot import name '_create_fn' from 'dataclasses' (/usr/lib64/python3.13/dataclasses.py)

I did a quick test with a clean Python 3.12 and 3.13 environment in Docker to ensure the problem is not on my side: same result with 3.13 and works as expected with 3.12.

FROM python:3.13

WORKDIR /app

COPY . .

RUN pip install -r tools/requirements.txt

CMD [ "python", "tools/bundle.py", "applications/Tools/upython/manifest.yml", "bundle.zip" ]

I'm on Fedora 41 (KDE Spin) using a standard Python 3.13 (obviously) installation and Intel i7 CPU.

@skotopes skotopes added the python Pull requests that update Python code label Jan 19, 2025
@EvgeniGenchev07
Copy link
Contributor

Hello,
I had the same problem as you but I fix this one with just running pip install dataclass-wizard. Thus I got into another problem :
File "/home/evgeni/.ufbt/current/scripts/fbt/appmanifest.py", line 205, in load_manifest
exec(manifest_file.read())
~~~~^^^^^^^^^^^^^^^^^^^^^^
File "", line 1, in
File "/home/evgeni/.ufbt/current/scripts/fbt/appmanifest.py", line 186, in App
self._validate_app_params(*args, **kw)
~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
File "/home/evgeni/.ufbt/current/scripts/fbt/appmanifest.py", line 161, in _validate_app_params
if apptype in AppBuildset.dist_app_types:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: argument of type 'method' is not iterable

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/home/evgeni/Downloads/flipper-application-catalog-main/tools/bundle.py", line 550, in
sys.exit(Main().main())
~~~~~~~~~~~^^
File "/home/evgeni/Downloads/flipper-application-catalog-main/tools/bundle.py", line 498, in main
return self.process(self.parser.parse_args())
~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/evgeni/Downloads/flipper-application-catalog-main/tools/bundle.py", line 526, in process
bundler.bundle(
~~~~~~~~~~~~~~^
skip_lint=args.nolint,
^^^^^^^^^^^^^^^^^^^^^^
skip_build=args.nobuild,
^^^^^^^^^^^^^^^^^^^^^^^^
skip_source_code=args.nosourcecode,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/home/evgeni/Downloads/flipper-application-catalog-main/tools/bundle.py", line 78, in bundle
self._update_manifest_from_fap()
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
File "/home/evgeni/Downloads/flipper-application-catalog-main/tools/bundle.py", line 187, in _update_manifest_from_fap
app_manager.load_manifest(app_manifest_path, self._code_dir)
~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/evgeni/.ufbt/current/scripts/fbt/appmanifest.py", line 207, in load_manifest
raise FlipperManifestException(
f"Failed parsing manifest '{app_manifest_path}' : {e}"
)
fbt.appmanifest.FlipperManifestException: Failed parsing manifest '/tmp/tmptm3vyygb/code/application.fam' : argument of type 'method' is not iterable

People checked and said that the problem is not from the fam file which has this:

App(
appid="gpio_explorer_app",
name="GPIO Explorer",
apptype=FlipperAppType.EXTERNAL,
entry_point="main_gpio_explorer_app",
stack_size=4 * 1024,
fap_icon="app.png",
fap_category="GPIO",
fap_description="The most complete app to start exploring the GPIO functionalities",
)

So to solve this problem you have to use python 3.11.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
python Pull requests that update Python code
Projects
None yet
Development

No branches or pull requests

4 participants