xeus icon indicating copy to clipboard operation
xeus copied to clipboard

Build fails with "Object of type PosixPath is not JSON serializable"

Open michaelweinold opened this issue 6 months ago • 6 comments

Description

When adding our bw2io package to the environment.yaml as a dependency, I get an error of this kind:

TypeError: Object of type PosixPath is not JSON serializable

Interestingly, the error does not reference the package, nor any of its dependencies. The error trace goes from the micromamba build library to jupyterlite_core/manager > jupyterlite_xeus/add_on > empack/pack and then to the Pyhon JSON decoder.

Any idea what the cause might be?

Reproduce

  1. Run build workflow at michaelweinold/jl_xeus_test

Expected behavior

No error 😇

Context

  • JupyterLite version: jupyterlite-core=0.3.0, jupyterlite-xeus=0.1.9
  • Operating System and version: N/A
  • Browser and version: N/A
Build Log
Transaction finished

To activate this environment, use:

micromamba activate xeus-python-kernel

Or to execute a single command in this environment, use:

micromamba run -n xeus-python-kernel mycommand

[LiteBuildApp] ERROR | [lite] [post_build] [jupyterlite-xeus] [ERR] Object of type PosixPath is not JSON serializable Traceback (most recent call last): File "/home/runner/micromamba/envs/build-env/lib/python3.11/site-packages/doit/doit_cmd.py", line 294, in run return command.parse_execute(args) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/runner/micromamba/envs/build-env/lib/python3.11/site-packages/doit/cmd_base.py", line 150, in parse_execute return self.execute(params, args) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/runner/micromamba/envs/build-env/lib/python3.11/site-packages/doit/cmd_base.py", line 570, in execute return self._execute(**exec_params) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/runner/micromamba/envs/build-env/lib/python3.11/site-packages/doit/cmd_run.py", line 265, in _execute return runner.run_all(self.control.task_dispatcher()) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/runner/micromamba/envs/build-env/lib/python3.11/site-packages/doit/runner.py", line 254, in run_all self.run_tasks(task_dispatcher) File "/home/runner/micromamba/envs/build-env/lib/python3.11/site-packages/doit/runner.py", line 213, in run_tasks node = task_dispatcher.generator.send(node) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/runner/micromamba/envs/build-env/lib/python3.11/site-packages/doit/control.py", line 629, in _dispatcher_generator next_step = node.step() ^^^^^^^^^^^ File "/home/runner/micromamba/envs/build-env/lib/python3.11/site-packages/doit/control.py", line 336, in step return next(self.generator) ^^^^^^^^^^^^^^^^^^^^ File "/home/runner/micromamba/envs/build-env/lib/python3.11/site-packages/doit/control.py", line 345, in _func for value in decorated(*args, **kwargs): File "/home/runner/micromamba/envs/build-env/lib/python3.11/site-packages/doit/control.py", line 473, in _add_task new_tasks = generate_tasks(to_load, task_gen, ref.doc) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/runner/micromamba/envs/build-env/lib/python3.11/site-packages/doit/loader.py", line 390, in generate_tasks for task_dict, x_doc in flat_generator(gen_result, gen_doc): File "/home/runner/micromamba/envs/build-env/lib/python3.11/site-packages/doit/loader.py", line 27, in flat_generator for item in gen: File "/home/runner/micromamba/envs/build-env/lib/python3.11/site-packages/jupyterlite_core/manager.py", line 138, in _delayed_gather yield from _gather() File "/home/runner/micromamba/envs/build-env/lib/python3.11/site-packages/jupyterlite_core/manager.py", line 131, in _gather raise error File "/home/runner/micromamba/envs/build-env/lib/python3.11/site-packages/jupyterlite_core/manager.py", line 123, in _gather for task in getattr(addon, attr)(self): File "/home/runner/micromamba/envs/build-env/lib/python3.11/site-packages/jupyterlite_xeus/add_on.py", line 127, in post_build yield from self.copy_kernels_from_prefix() File "/home/runner/micromamba/envs/build-env/lib/python3.11/site-packages/jupyterlite_xeus/add_on.py", line 179, in copy_kernels_from_prefix yield from self.copy_kernel(kernel_dir, kernel_wasm, kernel_js) File "/home/runner/micromamba/envs/build-env/lib/python3.11/site-packages/jupyterlite_xeus/add_on.py", line 261, in copy_kernel yield from self.pack_prefix(kernel_dir=kernel_dir) File "/home/runner/micromamba/envs/build-env/lib/python3.11/site-packages/jupyterlite_xeus/add_on.py", line 288, in pack_prefix pack_env( File "/home/runner/micromamba/envs/build-env/lib/python3.11/site-packages/empack/pack.py", line 186, in pack_env pack_pkg_impl( File "/home/runner/micromamba/envs/build-env/lib/python3.11/site-packages/empack/pack.py", line 54, in pack_pkg_impl json.dump(pkg_meta, f) File "/home/runner/micromamba/envs/build-env/lib/python3.11/json/init.py", line 179, in dump for chunk in iterable: File "/home/runner/micromamba/envs/build-env/lib/python3.11/json/encoder.py", line 432, in _iterencode yield from _iterencode_dict(o, _current_indent_level) File "/home/runner/micromamba/envs/build-env/lib/python3.11/json/encoder.py", line 406, in _iterencode_dict yield from chunks File "/home/runner/micromamba/envs/build-env/lib/python3.11/json/encoder.py", line 326, in _iterencode_list yield from chunks File "/home/runner/micromamba/envs/build-env/lib/python3.11/json/encoder.py", line 439, in _iterencode o = _default(o) ^^^^^^^^^^^ File "/home/runner/micromamba/envs/build-env/lib/python3.11/json/encoder.py", line 180, in default raise TypeError(f'Object of type {o.class.name} ' TypeError: Object of type PosixPath is not JSON serializable

michaelweinold avatar Aug 25 '24 07:08 michaelweinold