From 008e8c820d886532274572b69a7ea97c3c1268c5 Mon Sep 17 00:00:00 2001 From: edayot Date: Thu, 4 Apr 2024 09:02:30 +0200 Subject: [PATCH 1/8] feat: support for empty file names #419 --- beet/library/base.py | 2 -- beet/library/utils.py | 9 ++++++++- examples/code_void/add_header.py | 10 ++++++++++ examples/code_void/beet.yaml | 10 ++++++++++ examples/code_void/data/test/functions/...mcfunction | 0 examples/code_void/data/test/functions/..mcfunction | 0 examples/code_void/data/test/functions/.mcfunction | 0 .../data/test/functions/.mcfunction.mcfunction | 0 .../test/functions/.mcfunction.mcfunction.mcfunction | 0 examples/code_void/data/test/functions/a.mcfunction | 0 .../code_void/data/test/functions/a.py.git.mcfunction | 0 examples/code_void/data/test/functions/a/...mcfunction | 0 examples/code_void/data/test/functions/a/..mcfunction | 0 examples/code_void/data/test/functions/a/.mcfunction | 0 .../data/test/functions/a/.mcfunction.mcfunction | 0 examples/code_void/data/test/functions/a/a.mcfunction | 0 .../data/test/functions/a/a.py.git.mcfunction | 0 17 files changed, 28 insertions(+), 3 deletions(-) create mode 100644 examples/code_void/add_header.py create mode 100644 examples/code_void/beet.yaml create mode 100644 examples/code_void/data/test/functions/...mcfunction create mode 100644 examples/code_void/data/test/functions/..mcfunction create mode 100644 examples/code_void/data/test/functions/.mcfunction create mode 100644 examples/code_void/data/test/functions/.mcfunction.mcfunction create mode 100644 examples/code_void/data/test/functions/.mcfunction.mcfunction.mcfunction create mode 100644 examples/code_void/data/test/functions/a.mcfunction create mode 100644 examples/code_void/data/test/functions/a.py.git.mcfunction create mode 100644 examples/code_void/data/test/functions/a/...mcfunction create mode 100644 examples/code_void/data/test/functions/a/..mcfunction create mode 100644 examples/code_void/data/test/functions/a/.mcfunction create mode 100644 examples/code_void/data/test/functions/a/.mcfunction.mcfunction create mode 100644 examples/code_void/data/test/functions/a/a.mcfunction create mode 100644 examples/code_void/data/test/functions/a/a.py.git.mcfunction diff --git a/beet/library/base.py b/beet/library/base.py index 8f132f452..5fd13e852 100644 --- a/beet/library/base.py +++ b/beet/library/base.py @@ -679,8 +679,6 @@ class NamespaceProxy( def split_key(self, key: str) -> Tuple[str, str]: namespace, _, file_path = key.partition(":") - if not file_path: - raise KeyError(key) return namespace, file_path def join_key(self, key1: str, key2: str) -> str: diff --git a/beet/library/utils.py b/beet/library/utils.py index 607eee41e..475f6096c 100644 --- a/beet/library/utils.py +++ b/beet/library/utils.py @@ -62,10 +62,17 @@ def list_origin_folders(prefix: str, origin: FileOrigin) -> Dict[str, List[PureP return folders +def modified_suffixes(path: PurePath) -> List[str]: + name = path.name + if name.endswith('.'): + return [] + name = name.lstrip('.') + return ['.' + suffix for suffix in name.split('.')] + def list_extensions(path: PurePath) -> List[str]: extensions: List[str] = list( - accumulate(reversed(path.suffixes), lambda a, b: b + a) # type: ignore + accumulate(reversed(modified_suffixes(path)), lambda a, b: b + a) # type: ignore ) extensions.reverse() extensions.append("") diff --git a/examples/code_void/add_header.py b/examples/code_void/add_header.py new file mode 100644 index 000000000..74de317ce --- /dev/null +++ b/examples/code_void/add_header.py @@ -0,0 +1,10 @@ + + +from beet import Context, Function + + + +def beet_default(ctx: Context): + for f in ctx.data.functions.keys(): + ctx.data.functions[f]=Function(f"say {f}") + diff --git a/examples/code_void/beet.yaml b/examples/code_void/beet.yaml new file mode 100644 index 000000000..6ff5ba1b2 --- /dev/null +++ b/examples/code_void/beet.yaml @@ -0,0 +1,10 @@ +data_pack: + load: [.] +resource_pack: + load: [.] + +output: build + + +pipeline: + - add_header diff --git a/examples/code_void/data/test/functions/...mcfunction b/examples/code_void/data/test/functions/...mcfunction new file mode 100644 index 000000000..e69de29bb diff --git a/examples/code_void/data/test/functions/..mcfunction b/examples/code_void/data/test/functions/..mcfunction new file mode 100644 index 000000000..e69de29bb diff --git a/examples/code_void/data/test/functions/.mcfunction b/examples/code_void/data/test/functions/.mcfunction new file mode 100644 index 000000000..e69de29bb diff --git a/examples/code_void/data/test/functions/.mcfunction.mcfunction b/examples/code_void/data/test/functions/.mcfunction.mcfunction new file mode 100644 index 000000000..e69de29bb diff --git a/examples/code_void/data/test/functions/.mcfunction.mcfunction.mcfunction b/examples/code_void/data/test/functions/.mcfunction.mcfunction.mcfunction new file mode 100644 index 000000000..e69de29bb diff --git a/examples/code_void/data/test/functions/a.mcfunction b/examples/code_void/data/test/functions/a.mcfunction new file mode 100644 index 000000000..e69de29bb diff --git a/examples/code_void/data/test/functions/a.py.git.mcfunction b/examples/code_void/data/test/functions/a.py.git.mcfunction new file mode 100644 index 000000000..e69de29bb diff --git a/examples/code_void/data/test/functions/a/...mcfunction b/examples/code_void/data/test/functions/a/...mcfunction new file mode 100644 index 000000000..e69de29bb diff --git a/examples/code_void/data/test/functions/a/..mcfunction b/examples/code_void/data/test/functions/a/..mcfunction new file mode 100644 index 000000000..e69de29bb diff --git a/examples/code_void/data/test/functions/a/.mcfunction b/examples/code_void/data/test/functions/a/.mcfunction new file mode 100644 index 000000000..e69de29bb diff --git a/examples/code_void/data/test/functions/a/.mcfunction.mcfunction b/examples/code_void/data/test/functions/a/.mcfunction.mcfunction new file mode 100644 index 000000000..e69de29bb diff --git a/examples/code_void/data/test/functions/a/a.mcfunction b/examples/code_void/data/test/functions/a/a.mcfunction new file mode 100644 index 000000000..e69de29bb diff --git a/examples/code_void/data/test/functions/a/a.py.git.mcfunction b/examples/code_void/data/test/functions/a/a.py.git.mcfunction new file mode 100644 index 000000000..e69de29bb From 9f3dec1b57fbaa6a1d6da1334b23a2e15470b549 Mon Sep 17 00:00:00 2001 From: edayot Date: Thu, 4 Apr 2024 16:52:48 +0200 Subject: [PATCH 2/8] fix: better example --- examples/code_void/add_header.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/examples/code_void/add_header.py b/examples/code_void/add_header.py index 74de317ce..a6da48039 100644 --- a/examples/code_void/add_header.py +++ b/examples/code_void/add_header.py @@ -7,4 +7,7 @@ def beet_default(ctx: Context): for f in ctx.data.functions.keys(): ctx.data.functions[f]=Function(f"say {f}") + + ctx.data.functions["namespace:"] = Function("give me sugar") + ctx.data.functions["namespace:a/"] = Function("give me apple") From 6db43ad2822359236ea42506593f8a6a8686d350 Mon Sep 17 00:00:00 2001 From: edayot Date: Thu, 4 Apr 2024 16:53:53 +0200 Subject: [PATCH 3/8] style: black --- examples/code_void/add_header.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/examples/code_void/add_header.py b/examples/code_void/add_header.py index a6da48039..afeeb48ea 100644 --- a/examples/code_void/add_header.py +++ b/examples/code_void/add_header.py @@ -1,13 +1,9 @@ - - from beet import Context, Function - def beet_default(ctx: Context): for f in ctx.data.functions.keys(): - ctx.data.functions[f]=Function(f"say {f}") - + ctx.data.functions[f] = Function(f"say {f}") + ctx.data.functions["namespace:"] = Function("give me sugar") ctx.data.functions["namespace:a/"] = Function("give me apple") - From 48ccede81e84ca07e95a5c62a555a7c10a46b08e Mon Sep 17 00:00:00 2001 From: edayot Date: Thu, 4 Apr 2024 17:26:40 +0200 Subject: [PATCH 4/8] feat: improving doc & functionnality --- beet/library/utils.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/beet/library/utils.py b/beet/library/utils.py index 475f6096c..603955eaf 100644 --- a/beet/library/utils.py +++ b/beet/library/utils.py @@ -63,11 +63,25 @@ def list_origin_folders(prefix: str, origin: FileOrigin) -> Dict[str, List[PureP return folders def modified_suffixes(path: PurePath) -> List[str]: + """ + Equivalent to path.suffixes but support file with empty name + filename | filename.suffixes | modified_suffixes(filename) + + load.mcfunction | ['.mcfunction'] | ['.mcfunction'] + .mcfunction | [] | ['.mcfunction'] + ..mcfunction | [] | ['.mcfunction'] + load.py.mcfunction | ['.py', '.mcfunction'] | ['.py', '.mcfunction'] + .py.mcfunction | ['.mcfunction'] | ['.py', '.mcfunction'] + aaa...mcfunction | ['.', '.', '.mcfunction'] | ['.', '.', '.mcfunction'] + ...mcfunction | [] | ['.', '.', '.mcfunction'] + """ name = path.name if name.endswith('.'): return [] - name = name.lstrip('.') - return ['.' + suffix for suffix in name.split('.')] + if name.startswith('.'): + name = name[1:] + return ['.' + suffix for suffix in name.split('.')] + return path.suffixes def list_extensions(path: PurePath) -> List[str]: From 531324a28bfb3b23798aa3dc19e1d1f038da5690 Mon Sep 17 00:00:00 2001 From: edayot Date: Thu, 11 Apr 2024 21:45:09 +0200 Subject: [PATCH 5/8] upload snapshots --- .../data/namespace/functions/.mcfunction | 1 + .../data/namespace/functions/a/.mcfunction | 1 + .../data/test/functions/...mcfunction | 1 + .../data/test/functions/..mcfunction | 1 + .../data/test/functions/.mcfunction | 1 + .../data/test/functions/.mcfunction.mcfunction | 1 + .../data/test/functions/.mcfunction.mcfunction.mcfunction | 1 + .../data/test/functions/a.mcfunction | 1 + .../data/test/functions/a.py.git.mcfunction | 1 + .../data/test/functions/a/...mcfunction | 1 + .../data/test/functions/a/..mcfunction | 1 + .../data/test/functions/a/.mcfunction | 1 + .../data/test/functions/a/.mcfunction.mcfunction | 1 + .../data/test/functions/a/a.mcfunction | 1 + .../data/test/functions/a/a.py.git.mcfunction | 1 + .../examples__build_code_void__0.data_pack/pack.mcmeta | 6 ++++++ .../examples__build_code_void__1.resource_pack/pack.mcmeta | 6 ++++++ 17 files changed, 27 insertions(+) create mode 100644 tests/snapshots/examples__build_code_void__0.data_pack/data/namespace/functions/.mcfunction create mode 100644 tests/snapshots/examples__build_code_void__0.data_pack/data/namespace/functions/a/.mcfunction create mode 100644 tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/...mcfunction create mode 100644 tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/..mcfunction create mode 100644 tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/.mcfunction create mode 100644 tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/.mcfunction.mcfunction create mode 100644 tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/.mcfunction.mcfunction.mcfunction create mode 100644 tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/a.mcfunction create mode 100644 tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/a.py.git.mcfunction create mode 100644 tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/a/...mcfunction create mode 100644 tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/a/..mcfunction create mode 100644 tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/a/.mcfunction create mode 100644 tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/a/.mcfunction.mcfunction create mode 100644 tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/a/a.mcfunction create mode 100644 tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/a/a.py.git.mcfunction create mode 100644 tests/snapshots/examples__build_code_void__0.data_pack/pack.mcmeta create mode 100644 tests/snapshots/examples__build_code_void__1.resource_pack/pack.mcmeta diff --git a/tests/snapshots/examples__build_code_void__0.data_pack/data/namespace/functions/.mcfunction b/tests/snapshots/examples__build_code_void__0.data_pack/data/namespace/functions/.mcfunction new file mode 100644 index 000000000..270f0d31e --- /dev/null +++ b/tests/snapshots/examples__build_code_void__0.data_pack/data/namespace/functions/.mcfunction @@ -0,0 +1 @@ +give me sugar \ No newline at end of file diff --git a/tests/snapshots/examples__build_code_void__0.data_pack/data/namespace/functions/a/.mcfunction b/tests/snapshots/examples__build_code_void__0.data_pack/data/namespace/functions/a/.mcfunction new file mode 100644 index 000000000..97977d59e --- /dev/null +++ b/tests/snapshots/examples__build_code_void__0.data_pack/data/namespace/functions/a/.mcfunction @@ -0,0 +1 @@ +give me apple \ No newline at end of file diff --git a/tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/...mcfunction b/tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/...mcfunction new file mode 100644 index 000000000..7cf0f2d50 --- /dev/null +++ b/tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/...mcfunction @@ -0,0 +1 @@ +say test:.. \ No newline at end of file diff --git a/tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/..mcfunction b/tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/..mcfunction new file mode 100644 index 000000000..8221fa324 --- /dev/null +++ b/tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/..mcfunction @@ -0,0 +1 @@ +say test:. \ No newline at end of file diff --git a/tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/.mcfunction b/tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/.mcfunction new file mode 100644 index 000000000..a7e868a82 --- /dev/null +++ b/tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/.mcfunction @@ -0,0 +1 @@ +say test: \ No newline at end of file diff --git a/tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/.mcfunction.mcfunction b/tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/.mcfunction.mcfunction new file mode 100644 index 000000000..3768548ff --- /dev/null +++ b/tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/.mcfunction.mcfunction @@ -0,0 +1 @@ +say test:.mcfunction \ No newline at end of file diff --git a/tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/.mcfunction.mcfunction.mcfunction b/tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/.mcfunction.mcfunction.mcfunction new file mode 100644 index 000000000..da3c1bc44 --- /dev/null +++ b/tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/.mcfunction.mcfunction.mcfunction @@ -0,0 +1 @@ +say test:.mcfunction.mcfunction \ No newline at end of file diff --git a/tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/a.mcfunction b/tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/a.mcfunction new file mode 100644 index 000000000..cc2102487 --- /dev/null +++ b/tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/a.mcfunction @@ -0,0 +1 @@ +say test:a \ No newline at end of file diff --git a/tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/a.py.git.mcfunction b/tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/a.py.git.mcfunction new file mode 100644 index 000000000..bcf19adaa --- /dev/null +++ b/tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/a.py.git.mcfunction @@ -0,0 +1 @@ +say test:a.py.git \ No newline at end of file diff --git a/tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/a/...mcfunction b/tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/a/...mcfunction new file mode 100644 index 000000000..f9e1589cf --- /dev/null +++ b/tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/a/...mcfunction @@ -0,0 +1 @@ +say test:a/.. \ No newline at end of file diff --git a/tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/a/..mcfunction b/tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/a/..mcfunction new file mode 100644 index 000000000..e470c398e --- /dev/null +++ b/tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/a/..mcfunction @@ -0,0 +1 @@ +say test:a/. \ No newline at end of file diff --git a/tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/a/.mcfunction b/tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/a/.mcfunction new file mode 100644 index 000000000..7282533ca --- /dev/null +++ b/tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/a/.mcfunction @@ -0,0 +1 @@ +say test:a/ \ No newline at end of file diff --git a/tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/a/.mcfunction.mcfunction b/tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/a/.mcfunction.mcfunction new file mode 100644 index 000000000..109384e11 --- /dev/null +++ b/tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/a/.mcfunction.mcfunction @@ -0,0 +1 @@ +say test:a/.mcfunction \ No newline at end of file diff --git a/tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/a/a.mcfunction b/tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/a/a.mcfunction new file mode 100644 index 000000000..71bd910fc --- /dev/null +++ b/tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/a/a.mcfunction @@ -0,0 +1 @@ +say test:a/a \ No newline at end of file diff --git a/tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/a/a.py.git.mcfunction b/tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/a/a.py.git.mcfunction new file mode 100644 index 000000000..72778d120 --- /dev/null +++ b/tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/a/a.py.git.mcfunction @@ -0,0 +1 @@ +say test:a/a.py.git \ No newline at end of file diff --git a/tests/snapshots/examples__build_code_void__0.data_pack/pack.mcmeta b/tests/snapshots/examples__build_code_void__0.data_pack/pack.mcmeta new file mode 100644 index 000000000..12cf46287 --- /dev/null +++ b/tests/snapshots/examples__build_code_void__0.data_pack/pack.mcmeta @@ -0,0 +1,6 @@ +{ + "pack": { + "pack_format": 26, + "description": "" + } +} diff --git a/tests/snapshots/examples__build_code_void__1.resource_pack/pack.mcmeta b/tests/snapshots/examples__build_code_void__1.resource_pack/pack.mcmeta new file mode 100644 index 000000000..3c0d35411 --- /dev/null +++ b/tests/snapshots/examples__build_code_void__1.resource_pack/pack.mcmeta @@ -0,0 +1,6 @@ +{ + "pack": { + "pack_format": 22, + "description": "" + } +} From cb6d4cb397c2b8b90a8e6f212b3cc4c49f0ebb3f Mon Sep 17 00:00:00 2001 From: edayot Date: Tue, 14 Jan 2025 21:56:04 +0100 Subject: [PATCH 6/8] delete docstring and add a proper test to account for the issue --- beet/library/utils.py | 9 ------- ...ixes_aaa_mcfunction__aaa...mcfunction.json | 13 ++++++++++ ...ixes_load_mcfunction__load.mcfunction.json | 9 +++++++ ...oad_py_mcfunction__load.py.mcfunction.json | 11 ++++++++ ...hs_suffixes_mcfunction__...mcfunction.json | 9 +++++++ ...ths_suffixes_mcfunction__..mcfunction.json | 8 ++++++ ...aths_suffixes_mcfunction__.mcfunction.json | 7 ++++++ ...uffixes_py_mcfunction__.py.mcfunction.json | 10 ++++++++ tests/test_modified_suffixes.py | 25 +++++++++++++++++++ 9 files changed, 92 insertions(+), 9 deletions(-) create mode 100644 tests/snapshots/modified_suffixes__paths_suffixes_aaa_mcfunction__aaa...mcfunction.json create mode 100644 tests/snapshots/modified_suffixes__paths_suffixes_load_mcfunction__load.mcfunction.json create mode 100644 tests/snapshots/modified_suffixes__paths_suffixes_load_py_mcfunction__load.py.mcfunction.json create mode 100644 tests/snapshots/modified_suffixes__paths_suffixes_mcfunction__...mcfunction.json create mode 100644 tests/snapshots/modified_suffixes__paths_suffixes_mcfunction__..mcfunction.json create mode 100644 tests/snapshots/modified_suffixes__paths_suffixes_mcfunction__.mcfunction.json create mode 100644 tests/snapshots/modified_suffixes__paths_suffixes_py_mcfunction__.py.mcfunction.json create mode 100644 tests/test_modified_suffixes.py diff --git a/beet/library/utils.py b/beet/library/utils.py index 603955eaf..a05ee9124 100644 --- a/beet/library/utils.py +++ b/beet/library/utils.py @@ -65,15 +65,6 @@ def list_origin_folders(prefix: str, origin: FileOrigin) -> Dict[str, List[PureP def modified_suffixes(path: PurePath) -> List[str]: """ Equivalent to path.suffixes but support file with empty name - filename | filename.suffixes | modified_suffixes(filename) - - load.mcfunction | ['.mcfunction'] | ['.mcfunction'] - .mcfunction | [] | ['.mcfunction'] - ..mcfunction | [] | ['.mcfunction'] - load.py.mcfunction | ['.py', '.mcfunction'] | ['.py', '.mcfunction'] - .py.mcfunction | ['.mcfunction'] | ['.py', '.mcfunction'] - aaa...mcfunction | ['.', '.', '.mcfunction'] | ['.', '.', '.mcfunction'] - ...mcfunction | [] | ['.', '.', '.mcfunction'] """ name = path.name if name.endswith('.'): diff --git a/tests/snapshots/modified_suffixes__paths_suffixes_aaa_mcfunction__aaa...mcfunction.json b/tests/snapshots/modified_suffixes__paths_suffixes_aaa_mcfunction__aaa...mcfunction.json new file mode 100644 index 000000000..691125b0f --- /dev/null +++ b/tests/snapshots/modified_suffixes__paths_suffixes_aaa_mcfunction__aaa...mcfunction.json @@ -0,0 +1,13 @@ +{ + "path": "aaa...mcfunction", + "suffixes": [ + ".", + ".", + ".mcfunction" + ], + "modified_suffixes": [ + ".", + ".", + ".mcfunction" + ] +} diff --git a/tests/snapshots/modified_suffixes__paths_suffixes_load_mcfunction__load.mcfunction.json b/tests/snapshots/modified_suffixes__paths_suffixes_load_mcfunction__load.mcfunction.json new file mode 100644 index 000000000..3edb137af --- /dev/null +++ b/tests/snapshots/modified_suffixes__paths_suffixes_load_mcfunction__load.mcfunction.json @@ -0,0 +1,9 @@ +{ + "path": "load.mcfunction", + "suffixes": [ + ".mcfunction" + ], + "modified_suffixes": [ + ".mcfunction" + ] +} diff --git a/tests/snapshots/modified_suffixes__paths_suffixes_load_py_mcfunction__load.py.mcfunction.json b/tests/snapshots/modified_suffixes__paths_suffixes_load_py_mcfunction__load.py.mcfunction.json new file mode 100644 index 000000000..6d85098fa --- /dev/null +++ b/tests/snapshots/modified_suffixes__paths_suffixes_load_py_mcfunction__load.py.mcfunction.json @@ -0,0 +1,11 @@ +{ + "path": "load.py.mcfunction", + "suffixes": [ + ".py", + ".mcfunction" + ], + "modified_suffixes": [ + ".py", + ".mcfunction" + ] +} diff --git a/tests/snapshots/modified_suffixes__paths_suffixes_mcfunction__...mcfunction.json b/tests/snapshots/modified_suffixes__paths_suffixes_mcfunction__...mcfunction.json new file mode 100644 index 000000000..5384de0ef --- /dev/null +++ b/tests/snapshots/modified_suffixes__paths_suffixes_mcfunction__...mcfunction.json @@ -0,0 +1,9 @@ +{ + "path": "...mcfunction", + "suffixes": [], + "modified_suffixes": [ + ".", + ".", + ".mcfunction" + ] +} diff --git a/tests/snapshots/modified_suffixes__paths_suffixes_mcfunction__..mcfunction.json b/tests/snapshots/modified_suffixes__paths_suffixes_mcfunction__..mcfunction.json new file mode 100644 index 000000000..912a10c6e --- /dev/null +++ b/tests/snapshots/modified_suffixes__paths_suffixes_mcfunction__..mcfunction.json @@ -0,0 +1,8 @@ +{ + "path": "..mcfunction", + "suffixes": [], + "modified_suffixes": [ + ".", + ".mcfunction" + ] +} diff --git a/tests/snapshots/modified_suffixes__paths_suffixes_mcfunction__.mcfunction.json b/tests/snapshots/modified_suffixes__paths_suffixes_mcfunction__.mcfunction.json new file mode 100644 index 000000000..c150e297c --- /dev/null +++ b/tests/snapshots/modified_suffixes__paths_suffixes_mcfunction__.mcfunction.json @@ -0,0 +1,7 @@ +{ + "path": ".mcfunction", + "suffixes": [], + "modified_suffixes": [ + ".mcfunction" + ] +} diff --git a/tests/snapshots/modified_suffixes__paths_suffixes_py_mcfunction__.py.mcfunction.json b/tests/snapshots/modified_suffixes__paths_suffixes_py_mcfunction__.py.mcfunction.json new file mode 100644 index 000000000..c9f3e2867 --- /dev/null +++ b/tests/snapshots/modified_suffixes__paths_suffixes_py_mcfunction__.py.mcfunction.json @@ -0,0 +1,10 @@ +{ + "path": ".py.mcfunction", + "suffixes": [ + ".mcfunction" + ], + "modified_suffixes": [ + ".py", + ".mcfunction" + ] +} diff --git a/tests/test_modified_suffixes.py b/tests/test_modified_suffixes.py new file mode 100644 index 000000000..292dc6aef --- /dev/null +++ b/tests/test_modified_suffixes.py @@ -0,0 +1,25 @@ +import pytest +from pytest_insta import SnapshotFixture +from beet.library.utils import modified_suffixes +from pathlib import Path + + +PATHS = [ + "load.mcfunction", + ".mcfunction", + "..mcfunction", + "load.py.mcfunction", + ".py.mcfunction", + "aaa...mcfunction", + "...mcfunction", +] + + +@pytest.mark.parametrize("path", PATHS) +def test_paths_suffixes(snapshot: SnapshotFixture, path: str): + real_path = Path(path) + assert snapshot(f"{path}.json") == { + "path": path, + "suffixes": list(real_path.suffixes), + "modified_suffixes": list(modified_suffixes(real_path)), + } From 7c127d9a7649f1794d7747237fce15fb30aa6acd Mon Sep 17 00:00:00 2001 From: edayot Date: Tue, 14 Jan 2025 21:56:48 +0100 Subject: [PATCH 7/8] black --- beet/library/utils.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/beet/library/utils.py b/beet/library/utils.py index a05ee9124..74445e779 100644 --- a/beet/library/utils.py +++ b/beet/library/utils.py @@ -62,16 +62,17 @@ def list_origin_folders(prefix: str, origin: FileOrigin) -> Dict[str, List[PureP return folders + def modified_suffixes(path: PurePath) -> List[str]: """ Equivalent to path.suffixes but support file with empty name """ name = path.name - if name.endswith('.'): + if name.endswith("."): return [] - if name.startswith('.'): + if name.startswith("."): name = name[1:] - return ['.' + suffix for suffix in name.split('.')] + return ["." + suffix for suffix in name.split(".")] return path.suffixes From dacd6a5daf7e1810866d9cc970f9fae2831a5e41 Mon Sep 17 00:00:00 2001 From: edayot Date: Tue, 14 Jan 2025 22:02:12 +0100 Subject: [PATCH 8/8] update tests --- .../data/namespace/{functions => function}/.mcfunction | 0 .../data/namespace/{functions => function}/a/.mcfunction | 0 .../data/test/{functions => function}/...mcfunction | 0 .../data/test/{functions => function}/..mcfunction | 0 .../data/test/{functions => function}/.mcfunction | 0 .../data/test/{functions => function}/.mcfunction.mcfunction | 0 .../{functions => function}/.mcfunction.mcfunction.mcfunction | 0 .../data/test/{functions => function}/a.mcfunction | 0 .../data/test/{functions => function}/a.py.git.mcfunction | 0 .../data/test/{functions => function}/a/...mcfunction | 0 .../data/test/{functions => function}/a/..mcfunction | 0 .../data/test/{functions => function}/a/.mcfunction | 0 .../data/test/{functions => function}/a/.mcfunction.mcfunction | 0 .../data/test/{functions => function}/a/a.mcfunction | 0 .../data/test/{functions => function}/a/a.py.git.mcfunction | 0 .../examples__build_code_void__0.data_pack/pack.mcmeta | 2 +- .../examples__build_code_void__1.resource_pack/pack.mcmeta | 2 +- 17 files changed, 2 insertions(+), 2 deletions(-) rename tests/snapshots/examples__build_code_void__0.data_pack/data/namespace/{functions => function}/.mcfunction (100%) rename tests/snapshots/examples__build_code_void__0.data_pack/data/namespace/{functions => function}/a/.mcfunction (100%) rename tests/snapshots/examples__build_code_void__0.data_pack/data/test/{functions => function}/...mcfunction (100%) rename tests/snapshots/examples__build_code_void__0.data_pack/data/test/{functions => function}/..mcfunction (100%) rename tests/snapshots/examples__build_code_void__0.data_pack/data/test/{functions => function}/.mcfunction (100%) rename tests/snapshots/examples__build_code_void__0.data_pack/data/test/{functions => function}/.mcfunction.mcfunction (100%) rename tests/snapshots/examples__build_code_void__0.data_pack/data/test/{functions => function}/.mcfunction.mcfunction.mcfunction (100%) rename tests/snapshots/examples__build_code_void__0.data_pack/data/test/{functions => function}/a.mcfunction (100%) rename tests/snapshots/examples__build_code_void__0.data_pack/data/test/{functions => function}/a.py.git.mcfunction (100%) rename tests/snapshots/examples__build_code_void__0.data_pack/data/test/{functions => function}/a/...mcfunction (100%) rename tests/snapshots/examples__build_code_void__0.data_pack/data/test/{functions => function}/a/..mcfunction (100%) rename tests/snapshots/examples__build_code_void__0.data_pack/data/test/{functions => function}/a/.mcfunction (100%) rename tests/snapshots/examples__build_code_void__0.data_pack/data/test/{functions => function}/a/.mcfunction.mcfunction (100%) rename tests/snapshots/examples__build_code_void__0.data_pack/data/test/{functions => function}/a/a.mcfunction (100%) rename tests/snapshots/examples__build_code_void__0.data_pack/data/test/{functions => function}/a/a.py.git.mcfunction (100%) diff --git a/tests/snapshots/examples__build_code_void__0.data_pack/data/namespace/functions/.mcfunction b/tests/snapshots/examples__build_code_void__0.data_pack/data/namespace/function/.mcfunction similarity index 100% rename from tests/snapshots/examples__build_code_void__0.data_pack/data/namespace/functions/.mcfunction rename to tests/snapshots/examples__build_code_void__0.data_pack/data/namespace/function/.mcfunction diff --git a/tests/snapshots/examples__build_code_void__0.data_pack/data/namespace/functions/a/.mcfunction b/tests/snapshots/examples__build_code_void__0.data_pack/data/namespace/function/a/.mcfunction similarity index 100% rename from tests/snapshots/examples__build_code_void__0.data_pack/data/namespace/functions/a/.mcfunction rename to tests/snapshots/examples__build_code_void__0.data_pack/data/namespace/function/a/.mcfunction diff --git a/tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/...mcfunction b/tests/snapshots/examples__build_code_void__0.data_pack/data/test/function/...mcfunction similarity index 100% rename from tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/...mcfunction rename to tests/snapshots/examples__build_code_void__0.data_pack/data/test/function/...mcfunction diff --git a/tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/..mcfunction b/tests/snapshots/examples__build_code_void__0.data_pack/data/test/function/..mcfunction similarity index 100% rename from tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/..mcfunction rename to tests/snapshots/examples__build_code_void__0.data_pack/data/test/function/..mcfunction diff --git a/tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/.mcfunction b/tests/snapshots/examples__build_code_void__0.data_pack/data/test/function/.mcfunction similarity index 100% rename from tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/.mcfunction rename to tests/snapshots/examples__build_code_void__0.data_pack/data/test/function/.mcfunction diff --git a/tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/.mcfunction.mcfunction b/tests/snapshots/examples__build_code_void__0.data_pack/data/test/function/.mcfunction.mcfunction similarity index 100% rename from tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/.mcfunction.mcfunction rename to tests/snapshots/examples__build_code_void__0.data_pack/data/test/function/.mcfunction.mcfunction diff --git a/tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/.mcfunction.mcfunction.mcfunction b/tests/snapshots/examples__build_code_void__0.data_pack/data/test/function/.mcfunction.mcfunction.mcfunction similarity index 100% rename from tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/.mcfunction.mcfunction.mcfunction rename to tests/snapshots/examples__build_code_void__0.data_pack/data/test/function/.mcfunction.mcfunction.mcfunction diff --git a/tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/a.mcfunction b/tests/snapshots/examples__build_code_void__0.data_pack/data/test/function/a.mcfunction similarity index 100% rename from tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/a.mcfunction rename to tests/snapshots/examples__build_code_void__0.data_pack/data/test/function/a.mcfunction diff --git a/tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/a.py.git.mcfunction b/tests/snapshots/examples__build_code_void__0.data_pack/data/test/function/a.py.git.mcfunction similarity index 100% rename from tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/a.py.git.mcfunction rename to tests/snapshots/examples__build_code_void__0.data_pack/data/test/function/a.py.git.mcfunction diff --git a/tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/a/...mcfunction b/tests/snapshots/examples__build_code_void__0.data_pack/data/test/function/a/...mcfunction similarity index 100% rename from tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/a/...mcfunction rename to tests/snapshots/examples__build_code_void__0.data_pack/data/test/function/a/...mcfunction diff --git a/tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/a/..mcfunction b/tests/snapshots/examples__build_code_void__0.data_pack/data/test/function/a/..mcfunction similarity index 100% rename from tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/a/..mcfunction rename to tests/snapshots/examples__build_code_void__0.data_pack/data/test/function/a/..mcfunction diff --git a/tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/a/.mcfunction b/tests/snapshots/examples__build_code_void__0.data_pack/data/test/function/a/.mcfunction similarity index 100% rename from tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/a/.mcfunction rename to tests/snapshots/examples__build_code_void__0.data_pack/data/test/function/a/.mcfunction diff --git a/tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/a/.mcfunction.mcfunction b/tests/snapshots/examples__build_code_void__0.data_pack/data/test/function/a/.mcfunction.mcfunction similarity index 100% rename from tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/a/.mcfunction.mcfunction rename to tests/snapshots/examples__build_code_void__0.data_pack/data/test/function/a/.mcfunction.mcfunction diff --git a/tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/a/a.mcfunction b/tests/snapshots/examples__build_code_void__0.data_pack/data/test/function/a/a.mcfunction similarity index 100% rename from tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/a/a.mcfunction rename to tests/snapshots/examples__build_code_void__0.data_pack/data/test/function/a/a.mcfunction diff --git a/tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/a/a.py.git.mcfunction b/tests/snapshots/examples__build_code_void__0.data_pack/data/test/function/a/a.py.git.mcfunction similarity index 100% rename from tests/snapshots/examples__build_code_void__0.data_pack/data/test/functions/a/a.py.git.mcfunction rename to tests/snapshots/examples__build_code_void__0.data_pack/data/test/function/a/a.py.git.mcfunction diff --git a/tests/snapshots/examples__build_code_void__0.data_pack/pack.mcmeta b/tests/snapshots/examples__build_code_void__0.data_pack/pack.mcmeta index 12cf46287..8c5ac63e7 100644 --- a/tests/snapshots/examples__build_code_void__0.data_pack/pack.mcmeta +++ b/tests/snapshots/examples__build_code_void__0.data_pack/pack.mcmeta @@ -1,6 +1,6 @@ { "pack": { - "pack_format": 26, + "pack_format": 61, "description": "" } } diff --git a/tests/snapshots/examples__build_code_void__1.resource_pack/pack.mcmeta b/tests/snapshots/examples__build_code_void__1.resource_pack/pack.mcmeta index 3c0d35411..79d3592b3 100644 --- a/tests/snapshots/examples__build_code_void__1.resource_pack/pack.mcmeta +++ b/tests/snapshots/examples__build_code_void__1.resource_pack/pack.mcmeta @@ -1,6 +1,6 @@ { "pack": { - "pack_format": 22, + "pack_format": 46, "description": "" } }