From aefed4b6a2713fb77c06fda131fe3ddcc9db3b63 Mon Sep 17 00:00:00 2001 From: mcflugen Date: Tue, 5 Mar 2024 14:59:40 -0700 Subject: [PATCH 1/4] remove ability to write to yaml format --- babelizer/cli.py | 2 +- babelizer/metadata.py | 78 ++----------------------------------------- 2 files changed, 4 insertions(+), 76 deletions(-) diff --git a/babelizer/cli.py b/babelizer/cli.py index fadddf65..e0f7e3cc 100644 --- a/babelizer/cli.py +++ b/babelizer/cli.py @@ -142,7 +142,7 @@ def update(template, quiet, verbose): metadata_path = None if not metadata_path: - err("this does not appear to be a babelized folder (missing 'babel.yaml')") + err("this does not appear to be a babelized folder (missing 'babel.toml')") raise click.Abort() template = template or str(importlib_resources.files("babelizer") / "data") diff --git a/babelizer/metadata.py b/babelizer/metadata.py index 263dac60..5e2642cc 100644 --- a/babelizer/metadata.py +++ b/babelizer/metadata.py @@ -12,64 +12,6 @@ from .errors import ScanError, ValidationError -def _setup_yaml_with_canonical_dict(): - """Add a pyyaml handler to create canonical dictionaries. - - From https://stackoverflow.com/a/8661021 - """ - yaml.add_representer( - OrderedDict, - lambda self, data: self.represent_mapping( - "tag:yaml.org,2002:map", data.items() - ), - Dumper=yaml.SafeDumper, - ) - - def repr_ordered_dict(self, data): - return self.represent_mapping("tag:yaml.org,2002:map", data.items()) - - yaml.add_representer(dict, repr_ordered_dict, Dumper=yaml.SafeDumper) - - def repr_dict(self, data): - return self.represent_mapping( - "tag:yaml.org,2002:map", sorted(data.items(), key=lambda t: t[0]) - ) - - yaml.add_representer(dict, repr_dict, Dumper=yaml.SafeDumper) - - # https://stackoverflow.com/a/45004464 - def repr_str(dumper, data): - if "\n" in data: - return dumper.represent_scalar("tag:yaml.org,2002:str", data, style="|") - return dumper.represent_str(data) - - yaml.add_representer(str, repr_str, Dumper=yaml.SafeDumper) - - def repr_tuple(dumper, data): - return dumper.represent_sequence("tag:yaml.org,2002:seq", list(data)) - - yaml.add_representer(tuple, repr_tuple, Dumper=yaml.SafeDumper) - - # loader = yaml.SafeLoader - yaml.add_implicit_resolver( - "tag:yaml.org,2002:float", - re.compile( - """^(?: - [-+]?(?:[0-9][0-9_]*)\\.[0-9_]*(?:[eE][-+]?[0-9]+)? - |[-+]?(?:[0-9][0-9_]*)(?:[eE][-+]?[0-9]+) - |\\.[0-9_]+(?:[eE][-+][0-9]+)? - |[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]* - |[-+]?\\.(?:inf|Inf|INF) - |\\.(?:nan|NaN|NAN))$""", - re.X, - ), - list("-+0123456789."), - ) - - -_setup_yaml_with_canonical_dict() - - def validate_dict(meta, required=None, optional=None): """Validate babelizer configuration metadata. @@ -163,7 +105,7 @@ def __init__( self._meta = BabelMetadata.norm(config) @classmethod - def from_stream(cls, stream, fmt="yaml"): + def from_stream(cls, stream, fmt="toml"): """Create an instance of BabelMetadata from a file-like object. Parameters @@ -390,7 +332,7 @@ def norm(config): }, } - def dump(self, fp, fmt="yaml"): + def dump(self, fp, fmt="toml"): """Write serialized metadata to a file. Parameters @@ -402,7 +344,7 @@ def dump(self, fp, fmt="yaml"): """ print(self.format(fmt=fmt), file=fp) - def format(self, fmt="yaml"): + def format(self, fmt="toml"): """Serialize metadata to output format. Parameters @@ -417,20 +359,6 @@ def format(self, fmt="yaml"): """ return getattr(self, f"format_{fmt}")() - def format_yaml(self): - """Serialize metadata as YAML. - - Returns - ------- - str - Serialized metadata as a YAML-formatted string - """ - import io - - contents = io.StringIO() - yaml.safe_dump(self._meta, contents, default_flow_style=False) - return contents.getvalue() - def format_toml(self): """Serialize metadata as TOML. From 171ff3a4016942bced237027ee30f2dab1059202 Mon Sep 17 00:00:00 2001 From: mcflugen Date: Tue, 5 Mar 2024 15:13:35 -0700 Subject: [PATCH 2/4] use tomllib/tomli/tomli-w instead of tomlkit --- babelizer/metadata.py | 17 +++++++++++------ babelizer/render.py | 7 +++++-- pyproject.toml | 5 +++-- 3 files changed, 19 insertions(+), 10 deletions(-) diff --git a/babelizer/metadata.py b/babelizer/metadata.py index 5e2642cc..df345873 100644 --- a/babelizer/metadata.py +++ b/babelizer/metadata.py @@ -1,14 +1,19 @@ """Library metadata used by the babelizer to wrap libraries.""" import pathlib -import re +import sys import warnings -from collections import OrderedDict, defaultdict +from collections import defaultdict from contextlib import suppress -import tomlkit as toml +import tomli_w import yaml +if sys.version_info >= (3, 11): # pragma: no cover (PY11+) + import tomllib +else: # pragma: no cover (= (3, 11): # pragma: no cover (PY11+) + import tomllib +else: # pragma: no cover (= (3, 12): # pragma: no cover (PY12+) import importlib.resources as importlib_resources else: # pragma: no cover (=5", - "logoizer @ git+https://github.com/mcflugen/logoizer", + "logoizer@ git+https://github.com/mcflugen/logoizer", "pyyaml", - "tomlkit", + "tomli-w", + "tomli; python_version < '3.11'", ] dynamic = [ "readme", From bbe3b2c8cf54d358f55178b5f5cd70b9b0b2d7fd Mon Sep 17 00:00:00 2001 From: mcflugen Date: Tue, 5 Mar 2024 15:15:49 -0700 Subject: [PATCH 3/4] one import per line --- .pre-commit-config.yaml | 1 + babelizer/cli.py | 9 ++++++--- babelizer/metadata.py | 3 ++- babelizer/render.py | 3 ++- babelizer/utils.py | 3 ++- 5 files changed, 13 insertions(+), 6 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 170e3ef5..fba57905 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -47,6 +47,7 @@ repos: - id: isort files: \.py$ exclude: ^babelizer/data + args: [--force-single-line-imports] - repo: https://github.com/pre-commit/pre-commit-hooks rev: v4.5.0 diff --git a/babelizer/cli.py b/babelizer/cli.py index e0f7e3cc..09c6df5b 100644 --- a/babelizer/cli.py +++ b/babelizer/cli.py @@ -15,11 +15,14 @@ else: # pragma: no cover ( Date: Tue, 5 Mar 2024 15:27:01 -0700 Subject: [PATCH 4/4] add news fragment --- news/89.misc | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 news/89.misc diff --git a/news/89.misc b/news/89.misc new file mode 100644 index 00000000..e134792f --- /dev/null +++ b/news/89.misc @@ -0,0 +1,3 @@ + +Removed the ability of the *babelizer* to write its config file in +*yaml* format. We switched to using *toml* a while ago.