Skip to content

Commit

Permalink
Switch from deprecated "toml" library
Browse files Browse the repository at this point in the history
Fixes #451
  • Loading branch information
CyberTailor committed May 22, 2023
1 parent 5e6281b commit 653d866
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 7 deletions.
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
"picosvg>=0.20.4",
"pillow>=7.2.0",
"regex>=2020.4.4",
"toml>=0.10.1",
"tomlkit",
"ufo2ft[cffsubr]>=2.24.0",
"ufoLib2>=0.6.2",
"resvg-cli>=0.22.0.post3",
Expand Down
29 changes: 23 additions & 6 deletions src/nanoemoji/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,12 @@
import importlib_resources as resources # pytype: disable=import-error

import itertools
import tomlkit
from pathlib import Path
from picosvg.svg_transform import Affine2D
import toml
from typing import Any, Iterable, MutableMapping, NamedTuple, Optional, Tuple, Sequence

import nanoemoji.data
from nanoemoji import util


Expand Down Expand Up @@ -247,6 +248,20 @@ def default(self) -> MasterConfig:
raise ValueError("Must have a default master")


def toml_strip(data):
"""
Workaround for:
https://github.com/sdispater/tomlkit/issues/240
"""
new_data = {}
for key, val in data.items():
if isinstance(val, dict):
val = toml_strip(val)
if val is not None:
new_data[key] = val
return new_data


def write(dest: Path, config: FontConfig):
toml_cfg = {
"family": config.family,
Expand Down Expand Up @@ -288,17 +303,19 @@ def write(dest: Path, config: FontConfig):
for m in config.masters
},
}
dest.write_text(toml.dumps(toml_cfg))
with open(dest, "w") as toml_file:
tomlkit.dump(toml_strip(toml_cfg), toml_file)


def _resolve_config(
config_file: Optional[Path] = None,
) -> Tuple[Optional[Path], MutableMapping[str, Any]]:
if config_file is None:
with resources.path("nanoemoji.data", _DEFAULT_CONFIG_FILE) as config_file:
# no config_dir in this context; bad input if we need it
return None, toml.load(config_file)
return config_file.parent, toml.load(config_file)
# no config_dir in this context; bad input if we need it
toml_cfg = resources.files(nanoemoji.data).joinpath(_DEFAULT_CONFIG_FILE).read_text()
return None, tomlkit.loads(toml_cfg)
with open(config_file) as file:
return config_file.parent, tomlkit.load(file)


def _resolve_src(relative_base: Optional[Path], src: str) -> Iterable[Path]:
Expand Down

0 comments on commit 653d866

Please sign in to comment.