Skip to content

supply_bytes=True in encode_* brings a headache to me #69

Open
@SyberiaK

Description

@SyberiaK

Hi there, I'm currently working on personal l10n system that can use different JSON parsing implementations.
It looks something like this:

import json
from types import ModuleType

class L10n:
    def __init__(json_impl: ModuleType = json)
        self.json_impl = json_impl

    def load(file):
        self.json_impl.load(file, indent=2, ensure_ascii=False)

    def dump(data, file):
        self.json_impl.dump(data, file, indent=2, ensure_ascii=False)

Of course, we are expecting the same interface as builtin json have.

Because pyjson5.dump(...) and other encode functions have supply_bytes=True, it throws an error:

  File "C:\Users\User\PycharmProjects\l10n\sl10n\process.py", line 93, in apply_postmodifiers
    self.json_impl.dump(data, f, indent=2, ensure_ascii=False)
  File "src/_legacy.pyx", line 100, in pyjson5.pyjson5.dump
  File "src/_exports.pyx", line 562, in pyjson5.pyjson5.encode_io
  File "src/_encoder.pyx", line 439, in pyjson5.pyjson5._encode_callback_bytes
  File "src/_encoder.pyx", line 422, in pyjson5.pyjson5._encode
  File "src/_encoder.pyx", line 381, in pyjson5.pyjson5._encode_other
  File "src/_encoder.pyx", line 232, in pyjson5.pyjson5._encode_mapping
  File "src/_writer_callback.pyx", line 9, in pyjson5.pyjson5._WriterCbBytes_append_c
TypeError: write() argument must be str, not bytes

I know that changing defaults would break old code, so is there any way we can fix this?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions