Генерация Clojure EDN из Python с: символами

Я пытаюсь использовать EDN для связи между простым сервером Python и приложением в браузере, написанным с использованием ClojureScript.

Таким образом, сервер должен генерировать и возвращать фрагменты формата EDN для браузера.

Я установил https://github.com/swaroopch/edn_format который, похоже, является рекомендуемой библиотекой EDN для Python.

Но я хочу иметь возможность генерировать карту, которая использует символы Clojure для ключей. Например. {:a 1 :b 2}

Тем не менее, если я создаю словарь Python {"a":1, "b":2} и передать его в функцию dumps, конечный EDN хранит ключи как строки, а не символы.

Очевидно, нет :symbols в Python. Но есть ли способ убедить edn_format.dumps превратить в них строковые ключи словаря? Или есть лучшая библиотека edn для Python, которая может сделать это?

1 ответ

Решение

Вы можете использовать keyword_keys аргумент:

edn_format.dumps({'a': 1}, keyword_keys=True)
# => {:a 1}

Или Keyword конструктор:

edn_format.dumps({edn_format.Keyword('a'): 1})
# => {:a 1}
Другие вопросы по тегам