diff options
author | CoprDistGit <infra@openeuler.org> | 2023-05-18 03:51:58 +0000 |
---|---|---|
committer | CoprDistGit <infra@openeuler.org> | 2023-05-18 03:51:58 +0000 |
commit | ce8318d417228eb363bd6d6f03f24a1c87942252 (patch) | |
tree | f00c34440282a7061417b2b4dfb0e32f87f51af5 | |
parent | f23ff606949f547c76fc24f316bac4543ea46af3 (diff) |
automatic import of python-json-normalize
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | python-json-normalize.spec | 933 | ||||
-rw-r--r-- | sources | 1 |
3 files changed, 935 insertions, 0 deletions
@@ -0,0 +1 @@ +/json-normalize-1.0.1.tar.gz diff --git a/python-json-normalize.spec b/python-json-normalize.spec new file mode 100644 index 0000000..a059457 --- /dev/null +++ b/python-json-normalize.spec @@ -0,0 +1,933 @@ +%global _empty_manifest_terminate_build 0 +Name: python-json-normalize +Version: 1.0.1 +Release: 1 +Summary: Recursively flattens a JSON-like structure into a list of flat dicts. +License: MIT +URL: https://github.com/funnel-io/json-normalize +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/ec/32/1bb91e6abc94e8f0ed95212d59a3473262eb50c894f746aa9b8876fd9996/json-normalize-1.0.1.tar.gz +BuildArch: noarch + + +%description +# JSON Normalize + + + + + + +This package contains a function, json_normalize. It will take a json-like structure and convert it to a map object which returns dicts. Output dicts will have their path joined by ".", this can of course be customized. + +Data association will flows up and down inside dicts although in iterables, e.g. lists, data + +## json_normalize.json_normalize + +```python +json_normalize.json_normalize( + tree: Union[dict, Iterable], + combine_lists: Literal["chain", "product"] = None, + drop_nodes: Iterable[str] = (), + freeze_nodes: Iterable[str] = (), + key_joiner: Union[str, Callable] = ".", +) +``` + +- *`tree`* - A json like structure. Any iterable inside the object that is not a dict or a string will be treated as a list. +- *`combine_lists`*`=None` - If there are two different branches in the json like object the function will have to know how to combine these. If the default `None` is used the function does not know how to handle them and will raise an error. However if `combine_lists="chain"` simply put them after eachother similar to `itertool.chain`. The other option would be `combine_lists="product"` this will use the `itertool.product` to combine the different branches. +- *`drop_nodes`*`=()` - This makes it possible to ignore nodes with certain names +- *`freeze_nodes`*`=()` - This makes it possible to preserve nodes with certain names, the function will not recursivly keep normalizing anything below this node. If this node contains a dict it will be a dict in the end as well. +- *`key_joiner`*`="."` - If you want to customize the path. `key_joiner` takes either a function or a string as input. If it is a function, it will recieve the path to a certain node in to form of a tuple. If `key_joiner` is a string it will be converted to a function as this: `lambda p: key_joiner.join(p)` + + +## Examples + +A General use case: + +```python +>>> from json_normalize import json_normalize +>>> json_like = { +... "city": "Stockholm", +... "coords": { +... "lat": 59.331924, +... "long": 18.062297 +... }, +... "measurements": [ +... { +... "time": 1624363200, +... "temp": {"val": 28, "unit": "C"}, +... "wind": {"val": 2.8, "dir": 290, "unit": "m/s"}, +... }, +... { +... "time": 1624366800, +... "temp": {"val": 26, "unit": "C"}, +... } +... ] +... } +>>> normal_json = json_normalize(json_like) +>>> normal_json +<map object at ...> + +>>> list(normal_json) +[ + { + 'city': 'Stockholm', + 'coords.lat': 59.331924, + 'coords.long': 18.062297, + 'measurements.time': 1624363200, + 'measurements.temp.val': 28, + 'measurements.temp.unit': 'C', + 'measurements.wind.val': 2.8, + 'measurements.wind.dir': 290, + 'measurements.wind.unit': 'm/s' + }, + { + 'city': 'Stockholm', + 'coords.lat': 59.331924, + 'coords.long': 18.062297, + 'measurements.time': 1624366800, + 'measurements.temp.val': 26, + 'measurements.temp.unit': 'C' + } +] +``` + + + + +Information always flow both in and out of each container, here data in both `a` and `c` node are associated as their closest common node (the root) is a dict. linked via `b`. + +```python +>>> json_like = { +... "a": 1, +... "b": { +... "c": "x", +... "d": 2 +... } +... } +>>> list(json_normalize(json_like)) +[ + { + "a": 1, + "b.c": "x", + "b.d": 2 + } +] +``` + +However id the closest common node is a list like object the information is not associated with each other, e.g. the nodes `g=2` and `h=3` closest common node is a list and therefor, in the output, that data ends up in different objects. + +```python +>>> tree = { +... "a": 1, +... "b": [ +... { +... "c": "x", +... "g": 2 +... }, +... { +... "c": "y", +... "h": 3 +... } +... ] +... } +>>> list(json_normalize(tree)) +[ + { + "a": 1, + "b.c": "x", + "b.h" 2 + }, + { + "a": 1, + "b.c": "y", + "b.g": 3 + } +] + +``` + +Even if a branch contains more data in a deeper layer as long as that data is contained inside a `dict` that data will be associated with the data in other branches. + +```python +>>> tree = { +... "a": { +... "j": 1.1, +... "k": 1.2 +... }, +... "b": [ +... { +... "c": "x", +... "d": 2 +... }, +... { +... "c": "y", +... "d": 3 +... } +... ] +... } +>>> list(json_normalize(tree)) +[ + { + "j": 1.1, + "k": 1.2, + "c": "x", + "d": 2 + }, + { + "j": 1.1, + "k": 1.2, + "c": "y", + "d": 3 + } +] + +``` + +When there are multiple lists in different branches the fucntion will have to know how to combine this. Default is `None` which will raise an error incase this happens. `"chain"` will put the information after eachother and `"product"` will combine the information as shown below. + +```python +>>> tree = { +... "a": 1, +... "b": [ +... {"x": "1"}, +... {"x": "2"} +... ], +... "c": [ +... {"y": "3"}, +... {"y": "4"} +... ] +... } +>>> list(json_normalize(tree)) +ValueError() + +>>> list(json_normalize(tree, combine_lists="chain")) +[ + {"a": 1, "b.x": "1"}, + {"a": 1, "b.x": "1"}, + {"a": 1, "c.y": "3"}, + {"a": 1, "c.y": "4"}, +] + +>>> list(json_normalize(tree, combine_lists="product")) +[ + {"a": 1, "b.x": "1", "c.y": "3"}, + {"a": 1, "b.x": "1", "c.y": "4"}, + {"a": 1, "b.x": "2", "c.y": "3"}, + {"a": 1, "b.x": "2", "c.y": "4"}, +] + +``` + +If you want to make sure you do not copy information into to many branches you can leave the `combine_lists=None` and instead drop problematic nodes with the argument `drop_nodes=("b",)`. +```python +>>> tree = { +... "a": 1, +... "b": [ +... {"x": "1"}, +... {"x": "2"} +... ], +... "c": [ +... {"y": "1"}, +... {"y": "2"} +... ] +... } +>>> list(json_normalize(tree, drop_nodes=("b",))) +[ + {"a": 1, "c.y": "1"}, + {"a": 1, "c.y": "2"}, +] +``` + + +If you wish to customize the path generated you can to that by giving the key_joiner argument. +```python +>>> tree = { +... "a": 1, +... "b": [ +... {"x": "1"}, +... {"x": "2"} +... ], +... } + +>>> def key_joiner(path: tuple) -> string: +... return path[-1] + +>>> list(json_normalize(tree, key_joiner=key_joiner)) +[ + {"a": 1, "x": "1"}, + {"a": 1, "x": "2"}, +] + +>>> list(json_normalize(tree, key_joiner=" -> ")) +[ + {"a": 1, "b -> x": "1"}, + {"a": 1, "b -> x": "2"}, +] +``` + + +The function will also accept generators and simlar objects. +```python +>>> from itertools import chain + + +>>> def meta_generator(): +... yield {"who": "generator", "val": a_generator(1)} +... yield {"who": "range", "val": range(10, 12)} +... yield {"who": "map", "val": map(lambda x: x**2, range(20, 22))} +... yield {"who": "chain", "val": chain([30], [31])} + + +>>> def a_generator(n): +... yield n +... yield 2 * n + + +>>> list(json_normalize(meta_generator())): +[ + {'who': 'generator', 'val': 1}, + {'who': 'generator', 'val': 2}, + {'who': 'range', 'val': 10}, + {'who': 'range', 'val': 11}, + {'who': 'map', 'val': 400}, + {'who': 'map', 'val': 441}, + {'who': 'chain', 'val': 30}, + {'who': 'chain', 'val': 31}, +] +``` + + + +%package -n python3-json-normalize +Summary: Recursively flattens a JSON-like structure into a list of flat dicts. +Provides: python-json-normalize +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-json-normalize +# JSON Normalize + + + + + + +This package contains a function, json_normalize. It will take a json-like structure and convert it to a map object which returns dicts. Output dicts will have their path joined by ".", this can of course be customized. + +Data association will flows up and down inside dicts although in iterables, e.g. lists, data + +## json_normalize.json_normalize + +```python +json_normalize.json_normalize( + tree: Union[dict, Iterable], + combine_lists: Literal["chain", "product"] = None, + drop_nodes: Iterable[str] = (), + freeze_nodes: Iterable[str] = (), + key_joiner: Union[str, Callable] = ".", +) +``` + +- *`tree`* - A json like structure. Any iterable inside the object that is not a dict or a string will be treated as a list. +- *`combine_lists`*`=None` - If there are two different branches in the json like object the function will have to know how to combine these. If the default `None` is used the function does not know how to handle them and will raise an error. However if `combine_lists="chain"` simply put them after eachother similar to `itertool.chain`. The other option would be `combine_lists="product"` this will use the `itertool.product` to combine the different branches. +- *`drop_nodes`*`=()` - This makes it possible to ignore nodes with certain names +- *`freeze_nodes`*`=()` - This makes it possible to preserve nodes with certain names, the function will not recursivly keep normalizing anything below this node. If this node contains a dict it will be a dict in the end as well. +- *`key_joiner`*`="."` - If you want to customize the path. `key_joiner` takes either a function or a string as input. If it is a function, it will recieve the path to a certain node in to form of a tuple. If `key_joiner` is a string it will be converted to a function as this: `lambda p: key_joiner.join(p)` + + +## Examples + +A General use case: + +```python +>>> from json_normalize import json_normalize +>>> json_like = { +... "city": "Stockholm", +... "coords": { +... "lat": 59.331924, +... "long": 18.062297 +... }, +... "measurements": [ +... { +... "time": 1624363200, +... "temp": {"val": 28, "unit": "C"}, +... "wind": {"val": 2.8, "dir": 290, "unit": "m/s"}, +... }, +... { +... "time": 1624366800, +... "temp": {"val": 26, "unit": "C"}, +... } +... ] +... } +>>> normal_json = json_normalize(json_like) +>>> normal_json +<map object at ...> + +>>> list(normal_json) +[ + { + 'city': 'Stockholm', + 'coords.lat': 59.331924, + 'coords.long': 18.062297, + 'measurements.time': 1624363200, + 'measurements.temp.val': 28, + 'measurements.temp.unit': 'C', + 'measurements.wind.val': 2.8, + 'measurements.wind.dir': 290, + 'measurements.wind.unit': 'm/s' + }, + { + 'city': 'Stockholm', + 'coords.lat': 59.331924, + 'coords.long': 18.062297, + 'measurements.time': 1624366800, + 'measurements.temp.val': 26, + 'measurements.temp.unit': 'C' + } +] +``` + + + + +Information always flow both in and out of each container, here data in both `a` and `c` node are associated as their closest common node (the root) is a dict. linked via `b`. + +```python +>>> json_like = { +... "a": 1, +... "b": { +... "c": "x", +... "d": 2 +... } +... } +>>> list(json_normalize(json_like)) +[ + { + "a": 1, + "b.c": "x", + "b.d": 2 + } +] +``` + +However id the closest common node is a list like object the information is not associated with each other, e.g. the nodes `g=2` and `h=3` closest common node is a list and therefor, in the output, that data ends up in different objects. + +```python +>>> tree = { +... "a": 1, +... "b": [ +... { +... "c": "x", +... "g": 2 +... }, +... { +... "c": "y", +... "h": 3 +... } +... ] +... } +>>> list(json_normalize(tree)) +[ + { + "a": 1, + "b.c": "x", + "b.h" 2 + }, + { + "a": 1, + "b.c": "y", + "b.g": 3 + } +] + +``` + +Even if a branch contains more data in a deeper layer as long as that data is contained inside a `dict` that data will be associated with the data in other branches. + +```python +>>> tree = { +... "a": { +... "j": 1.1, +... "k": 1.2 +... }, +... "b": [ +... { +... "c": "x", +... "d": 2 +... }, +... { +... "c": "y", +... "d": 3 +... } +... ] +... } +>>> list(json_normalize(tree)) +[ + { + "j": 1.1, + "k": 1.2, + "c": "x", + "d": 2 + }, + { + "j": 1.1, + "k": 1.2, + "c": "y", + "d": 3 + } +] + +``` + +When there are multiple lists in different branches the fucntion will have to know how to combine this. Default is `None` which will raise an error incase this happens. `"chain"` will put the information after eachother and `"product"` will combine the information as shown below. + +```python +>>> tree = { +... "a": 1, +... "b": [ +... {"x": "1"}, +... {"x": "2"} +... ], +... "c": [ +... {"y": "3"}, +... {"y": "4"} +... ] +... } +>>> list(json_normalize(tree)) +ValueError() + +>>> list(json_normalize(tree, combine_lists="chain")) +[ + {"a": 1, "b.x": "1"}, + {"a": 1, "b.x": "1"}, + {"a": 1, "c.y": "3"}, + {"a": 1, "c.y": "4"}, +] + +>>> list(json_normalize(tree, combine_lists="product")) +[ + {"a": 1, "b.x": "1", "c.y": "3"}, + {"a": 1, "b.x": "1", "c.y": "4"}, + {"a": 1, "b.x": "2", "c.y": "3"}, + {"a": 1, "b.x": "2", "c.y": "4"}, +] + +``` + +If you want to make sure you do not copy information into to many branches you can leave the `combine_lists=None` and instead drop problematic nodes with the argument `drop_nodes=("b",)`. +```python +>>> tree = { +... "a": 1, +... "b": [ +... {"x": "1"}, +... {"x": "2"} +... ], +... "c": [ +... {"y": "1"}, +... {"y": "2"} +... ] +... } +>>> list(json_normalize(tree, drop_nodes=("b",))) +[ + {"a": 1, "c.y": "1"}, + {"a": 1, "c.y": "2"}, +] +``` + + +If you wish to customize the path generated you can to that by giving the key_joiner argument. +```python +>>> tree = { +... "a": 1, +... "b": [ +... {"x": "1"}, +... {"x": "2"} +... ], +... } + +>>> def key_joiner(path: tuple) -> string: +... return path[-1] + +>>> list(json_normalize(tree, key_joiner=key_joiner)) +[ + {"a": 1, "x": "1"}, + {"a": 1, "x": "2"}, +] + +>>> list(json_normalize(tree, key_joiner=" -> ")) +[ + {"a": 1, "b -> x": "1"}, + {"a": 1, "b -> x": "2"}, +] +``` + + +The function will also accept generators and simlar objects. +```python +>>> from itertools import chain + + +>>> def meta_generator(): +... yield {"who": "generator", "val": a_generator(1)} +... yield {"who": "range", "val": range(10, 12)} +... yield {"who": "map", "val": map(lambda x: x**2, range(20, 22))} +... yield {"who": "chain", "val": chain([30], [31])} + + +>>> def a_generator(n): +... yield n +... yield 2 * n + + +>>> list(json_normalize(meta_generator())): +[ + {'who': 'generator', 'val': 1}, + {'who': 'generator', 'val': 2}, + {'who': 'range', 'val': 10}, + {'who': 'range', 'val': 11}, + {'who': 'map', 'val': 400}, + {'who': 'map', 'val': 441}, + {'who': 'chain', 'val': 30}, + {'who': 'chain', 'val': 31}, +] +``` + + + +%package help +Summary: Development documents and examples for json-normalize +Provides: python3-json-normalize-doc +%description help +# JSON Normalize + + + + + + +This package contains a function, json_normalize. It will take a json-like structure and convert it to a map object which returns dicts. Output dicts will have their path joined by ".", this can of course be customized. + +Data association will flows up and down inside dicts although in iterables, e.g. lists, data + +## json_normalize.json_normalize + +```python +json_normalize.json_normalize( + tree: Union[dict, Iterable], + combine_lists: Literal["chain", "product"] = None, + drop_nodes: Iterable[str] = (), + freeze_nodes: Iterable[str] = (), + key_joiner: Union[str, Callable] = ".", +) +``` + +- *`tree`* - A json like structure. Any iterable inside the object that is not a dict or a string will be treated as a list. +- *`combine_lists`*`=None` - If there are two different branches in the json like object the function will have to know how to combine these. If the default `None` is used the function does not know how to handle them and will raise an error. However if `combine_lists="chain"` simply put them after eachother similar to `itertool.chain`. The other option would be `combine_lists="product"` this will use the `itertool.product` to combine the different branches. +- *`drop_nodes`*`=()` - This makes it possible to ignore nodes with certain names +- *`freeze_nodes`*`=()` - This makes it possible to preserve nodes with certain names, the function will not recursivly keep normalizing anything below this node. If this node contains a dict it will be a dict in the end as well. +- *`key_joiner`*`="."` - If you want to customize the path. `key_joiner` takes either a function or a string as input. If it is a function, it will recieve the path to a certain node in to form of a tuple. If `key_joiner` is a string it will be converted to a function as this: `lambda p: key_joiner.join(p)` + + +## Examples + +A General use case: + +```python +>>> from json_normalize import json_normalize +>>> json_like = { +... "city": "Stockholm", +... "coords": { +... "lat": 59.331924, +... "long": 18.062297 +... }, +... "measurements": [ +... { +... "time": 1624363200, +... "temp": {"val": 28, "unit": "C"}, +... "wind": {"val": 2.8, "dir": 290, "unit": "m/s"}, +... }, +... { +... "time": 1624366800, +... "temp": {"val": 26, "unit": "C"}, +... } +... ] +... } +>>> normal_json = json_normalize(json_like) +>>> normal_json +<map object at ...> + +>>> list(normal_json) +[ + { + 'city': 'Stockholm', + 'coords.lat': 59.331924, + 'coords.long': 18.062297, + 'measurements.time': 1624363200, + 'measurements.temp.val': 28, + 'measurements.temp.unit': 'C', + 'measurements.wind.val': 2.8, + 'measurements.wind.dir': 290, + 'measurements.wind.unit': 'm/s' + }, + { + 'city': 'Stockholm', + 'coords.lat': 59.331924, + 'coords.long': 18.062297, + 'measurements.time': 1624366800, + 'measurements.temp.val': 26, + 'measurements.temp.unit': 'C' + } +] +``` + + + + +Information always flow both in and out of each container, here data in both `a` and `c` node are associated as their closest common node (the root) is a dict. linked via `b`. + +```python +>>> json_like = { +... "a": 1, +... "b": { +... "c": "x", +... "d": 2 +... } +... } +>>> list(json_normalize(json_like)) +[ + { + "a": 1, + "b.c": "x", + "b.d": 2 + } +] +``` + +However id the closest common node is a list like object the information is not associated with each other, e.g. the nodes `g=2` and `h=3` closest common node is a list and therefor, in the output, that data ends up in different objects. + +```python +>>> tree = { +... "a": 1, +... "b": [ +... { +... "c": "x", +... "g": 2 +... }, +... { +... "c": "y", +... "h": 3 +... } +... ] +... } +>>> list(json_normalize(tree)) +[ + { + "a": 1, + "b.c": "x", + "b.h" 2 + }, + { + "a": 1, + "b.c": "y", + "b.g": 3 + } +] + +``` + +Even if a branch contains more data in a deeper layer as long as that data is contained inside a `dict` that data will be associated with the data in other branches. + +```python +>>> tree = { +... "a": { +... "j": 1.1, +... "k": 1.2 +... }, +... "b": [ +... { +... "c": "x", +... "d": 2 +... }, +... { +... "c": "y", +... "d": 3 +... } +... ] +... } +>>> list(json_normalize(tree)) +[ + { + "j": 1.1, + "k": 1.2, + "c": "x", + "d": 2 + }, + { + "j": 1.1, + "k": 1.2, + "c": "y", + "d": 3 + } +] + +``` + +When there are multiple lists in different branches the fucntion will have to know how to combine this. Default is `None` which will raise an error incase this happens. `"chain"` will put the information after eachother and `"product"` will combine the information as shown below. + +```python +>>> tree = { +... "a": 1, +... "b": [ +... {"x": "1"}, +... {"x": "2"} +... ], +... "c": [ +... {"y": "3"}, +... {"y": "4"} +... ] +... } +>>> list(json_normalize(tree)) +ValueError() + +>>> list(json_normalize(tree, combine_lists="chain")) +[ + {"a": 1, "b.x": "1"}, + {"a": 1, "b.x": "1"}, + {"a": 1, "c.y": "3"}, + {"a": 1, "c.y": "4"}, +] + +>>> list(json_normalize(tree, combine_lists="product")) +[ + {"a": 1, "b.x": "1", "c.y": "3"}, + {"a": 1, "b.x": "1", "c.y": "4"}, + {"a": 1, "b.x": "2", "c.y": "3"}, + {"a": 1, "b.x": "2", "c.y": "4"}, +] + +``` + +If you want to make sure you do not copy information into to many branches you can leave the `combine_lists=None` and instead drop problematic nodes with the argument `drop_nodes=("b",)`. +```python +>>> tree = { +... "a": 1, +... "b": [ +... {"x": "1"}, +... {"x": "2"} +... ], +... "c": [ +... {"y": "1"}, +... {"y": "2"} +... ] +... } +>>> list(json_normalize(tree, drop_nodes=("b",))) +[ + {"a": 1, "c.y": "1"}, + {"a": 1, "c.y": "2"}, +] +``` + + +If you wish to customize the path generated you can to that by giving the key_joiner argument. +```python +>>> tree = { +... "a": 1, +... "b": [ +... {"x": "1"}, +... {"x": "2"} +... ], +... } + +>>> def key_joiner(path: tuple) -> string: +... return path[-1] + +>>> list(json_normalize(tree, key_joiner=key_joiner)) +[ + {"a": 1, "x": "1"}, + {"a": 1, "x": "2"}, +] + +>>> list(json_normalize(tree, key_joiner=" -> ")) +[ + {"a": 1, "b -> x": "1"}, + {"a": 1, "b -> x": "2"}, +] +``` + + +The function will also accept generators and simlar objects. +```python +>>> from itertools import chain + + +>>> def meta_generator(): +... yield {"who": "generator", "val": a_generator(1)} +... yield {"who": "range", "val": range(10, 12)} +... yield {"who": "map", "val": map(lambda x: x**2, range(20, 22))} +... yield {"who": "chain", "val": chain([30], [31])} + + +>>> def a_generator(n): +... yield n +... yield 2 * n + + +>>> list(json_normalize(meta_generator())): +[ + {'who': 'generator', 'val': 1}, + {'who': 'generator', 'val': 2}, + {'who': 'range', 'val': 10}, + {'who': 'range', 'val': 11}, + {'who': 'map', 'val': 400}, + {'who': 'map', 'val': 441}, + {'who': 'chain', 'val': 30}, + {'who': 'chain', 'val': 31}, +] +``` + + + +%prep +%autosetup -n json-normalize-1.0.1 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-json-normalize -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Thu May 18 2023 Python_Bot <Python_Bot@openeuler.org> - 1.0.1-1 +- Package Spec generated @@ -0,0 +1 @@ +a2041d416f18a43c02e7c38fa06a6844 json-normalize-1.0.1.tar.gz |