%global _empty_manifest_terminate_build 0 Name: python-rtyaml Version: 1.0.0 Release: 1 Summary: All the annoying things to make YAML usable in a source controlled environment. License: CC0 (copyright waived) URL: https://github.com/unitedstates/rtyaml Source0: https://mirrors.aliyun.com/pypi/web/packages/be/2f/e2b907ac01ecc56efac82b6fc9fa411403fe430f5e2e2e7ce86858bc1aab/rtyaml-1.0.0.tar.gz BuildArch: noarch Requires: python3-pyyaml %description Primary author: Joshua Tauberer - GitHub: - PyPi: This module is a wrapper around `pyyaml` to read and write YAML files with some improvements: - Round-tripping YAML files is possible by preserving the order of keys. In Python 3.7+, just use regular `dict`s. In prior versions of Python, use `collections.OrderedDict`. - Saner defaults are set for how strings are written out to YAML (see below). - Other sane defaults are chosen like using the "safe" loader/dumper. - A comment block found at the very beginning of a stream when loading YAML is preserved when writing it back out. ## What do you mean by round-tripping? Round-tripping is when you load a file and then save it unchanged, you expect the bytes on disk not to change. This isn't possible with PyYAML, and it makes it difficult to use YAML files with version control like git because every time you load and save the file, things can get rearranged. Keys can change order, string quoting styles can change, #-comments are removed, and so on. Although `rtyaml` can't provide round-tripping for all files, it does set some sane defaults on PyYAML so that it's easier to achieve. For instance, if you load this file with PyYAML: ![](screenshots/rtyaml.png) and then save it back out unchanged: ```python import yaml print(yaml.dump(yaml.load(open('example.yaml')))) ``` you get this mess: ![](screenshots/without-rtyaml.png) Notice how the comment is gone, the keys `zz`, `yy`, `xx` changed order, the strings are inconsistently formatted, nulls use a confusing keyword, and mappings are condensed into single lines. With `ryaml`, you actually get the original file back! That's basically the whole point of this library. ## Installation and usage Install: pip install rtyaml (or pip3 --- this module works in both Python 2 and Python 3) Usage: import rtyaml with open("myfile.yaml") as f: stuff = rtyaml.load(f) # ...do things to stuf... with open("myfile.yaml", "w") as f: rtyaml.dump(stuff, f) As in the underlying pyyaml library, `load` accepts a string or bytes-string containing YAML or an open file object (binary or text). Also, the second argument to `dump` is optional and if omitted the function returns the YAML in a string. `load_all` and `dump_all` are also supported, which load and save lists of documents using YAML's `---` document separator. %package -n python3-rtyaml Summary: All the annoying things to make YAML usable in a source controlled environment. Provides: python-rtyaml BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-rtyaml Primary author: Joshua Tauberer - GitHub: - PyPi: This module is a wrapper around `pyyaml` to read and write YAML files with some improvements: - Round-tripping YAML files is possible by preserving the order of keys. In Python 3.7+, just use regular `dict`s. In prior versions of Python, use `collections.OrderedDict`. - Saner defaults are set for how strings are written out to YAML (see below). - Other sane defaults are chosen like using the "safe" loader/dumper. - A comment block found at the very beginning of a stream when loading YAML is preserved when writing it back out. ## What do you mean by round-tripping? Round-tripping is when you load a file and then save it unchanged, you expect the bytes on disk not to change. This isn't possible with PyYAML, and it makes it difficult to use YAML files with version control like git because every time you load and save the file, things can get rearranged. Keys can change order, string quoting styles can change, #-comments are removed, and so on. Although `rtyaml` can't provide round-tripping for all files, it does set some sane defaults on PyYAML so that it's easier to achieve. For instance, if you load this file with PyYAML: ![](screenshots/rtyaml.png) and then save it back out unchanged: ```python import yaml print(yaml.dump(yaml.load(open('example.yaml')))) ``` you get this mess: ![](screenshots/without-rtyaml.png) Notice how the comment is gone, the keys `zz`, `yy`, `xx` changed order, the strings are inconsistently formatted, nulls use a confusing keyword, and mappings are condensed into single lines. With `ryaml`, you actually get the original file back! That's basically the whole point of this library. ## Installation and usage Install: pip install rtyaml (or pip3 --- this module works in both Python 2 and Python 3) Usage: import rtyaml with open("myfile.yaml") as f: stuff = rtyaml.load(f) # ...do things to stuf... with open("myfile.yaml", "w") as f: rtyaml.dump(stuff, f) As in the underlying pyyaml library, `load` accepts a string or bytes-string containing YAML or an open file object (binary or text). Also, the second argument to `dump` is optional and if omitted the function returns the YAML in a string. `load_all` and `dump_all` are also supported, which load and save lists of documents using YAML's `---` document separator. %package help Summary: Development documents and examples for rtyaml Provides: python3-rtyaml-doc %description help Primary author: Joshua Tauberer - GitHub: - PyPi: This module is a wrapper around `pyyaml` to read and write YAML files with some improvements: - Round-tripping YAML files is possible by preserving the order of keys. In Python 3.7+, just use regular `dict`s. In prior versions of Python, use `collections.OrderedDict`. - Saner defaults are set for how strings are written out to YAML (see below). - Other sane defaults are chosen like using the "safe" loader/dumper. - A comment block found at the very beginning of a stream when loading YAML is preserved when writing it back out. ## What do you mean by round-tripping? Round-tripping is when you load a file and then save it unchanged, you expect the bytes on disk not to change. This isn't possible with PyYAML, and it makes it difficult to use YAML files with version control like git because every time you load and save the file, things can get rearranged. Keys can change order, string quoting styles can change, #-comments are removed, and so on. Although `rtyaml` can't provide round-tripping for all files, it does set some sane defaults on PyYAML so that it's easier to achieve. For instance, if you load this file with PyYAML: ![](screenshots/rtyaml.png) and then save it back out unchanged: ```python import yaml print(yaml.dump(yaml.load(open('example.yaml')))) ``` you get this mess: ![](screenshots/without-rtyaml.png) Notice how the comment is gone, the keys `zz`, `yy`, `xx` changed order, the strings are inconsistently formatted, nulls use a confusing keyword, and mappings are condensed into single lines. With `ryaml`, you actually get the original file back! That's basically the whole point of this library. ## Installation and usage Install: pip install rtyaml (or pip3 --- this module works in both Python 2 and Python 3) Usage: import rtyaml with open("myfile.yaml") as f: stuff = rtyaml.load(f) # ...do things to stuf... with open("myfile.yaml", "w") as f: rtyaml.dump(stuff, f) As in the underlying pyyaml library, `load` accepts a string or bytes-string containing YAML or an open file object (binary or text). Also, the second argument to `dump` is optional and if omitted the function returns the YAML in a string. `load_all` and `dump_all` are also supported, which load and save lists of documents using YAML's `---` document separator. %prep %autosetup -n rtyaml-1.0.0 %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-rtyaml -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Thu Jun 08 2023 Python_Bot - 1.0.0-1 - Package Spec generated