diff options
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | python-rtoml.spec | 431 | ||||
| -rw-r--r-- | sources | 1 |
3 files changed, 433 insertions, 0 deletions
@@ -0,0 +1 @@ +/rtoml-0.9.0.tar.gz diff --git a/python-rtoml.spec b/python-rtoml.spec new file mode 100644 index 0000000..c0069c7 --- /dev/null +++ b/python-rtoml.spec @@ -0,0 +1,431 @@ +%global _empty_manifest_terminate_build 0 +Name: python-rtoml +Version: 0.9.0 +Release: 1 +Summary: please add a summary manually as the author left a blank one +License: MIT License +URL: https://github.com/samuelcolvin/rtoml +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/d5/53/ac68f06b42de70958f0ddb2c6a9109054fc208951e4d61af86f0c7186254/rtoml-0.9.0.tar.gz + + +%description +# rtoml + +[](https://github.com/samuelcolvin/rtoml/actions?query=event%3Apush+branch%3Amain+workflow%3ACI) +[](https://codecov.io/gh/samuelcolvin/rtoml) +[](https://pypi.python.org/pypi/rtoml) +[](https://github.com/samuelcolvin/rtoml) +[](https://github.com/samuelcolvin/rtoml/blob/main/LICENSE) + + +A better TOML library for python implemented in rust. + +## Why Use rtoml + +* Correctness: rtoml is based on the widely used and very stable [toml-rs](https://github.com/alexcrichton/toml-rs) +library, it passes all the [standard TOML tests](https://github.com/BurntSushi/toml-test) as well as having 100% +coverage on python code. Other TOML libraries for python I tried all failed to parse some valid TOML. +* Performance: see [github.com/pwwang/toml-bench](https://github.com/pwwang/toml-bench) - + rtoml is much faster than pure Python TOML libraries. + +## Install + +Requires `python>=3.7`, binaries are available from pypi for Linux, macOS and Windows, +see [here](https://pypi.org/project/rtoml/#files). + +```bash +pip install rtoml +``` + +If no binary is available on pypi for you system configuration; you'll need rust stable +installed before you can install rtoml. + +## Usage + +#### load +```python +def load(toml: Union[str, Path, TextIO]) -> Dict[str, Any]: ... +``` + +Parse TOML via a string or file and return a python dictionary. The `toml` argument may be a `str`, +`Path` or file object from `open()`. + +#### loads +```python +def loads(toml: str) -> Dict[str, Any]: ... +``` + +Parse a TOML string and return a python dictionary. (provided to match the interface of `json` and similar libraries) + +#### dumps +```python +def dumps(obj: Any, *, pretty: bool = False) -> str: ... +``` + +Serialize a python object to TOML. + +If `pretty` is true, output has a more "pretty" format. + +#### dump +```python +def dump(obj: Any, file: Union[Path, TextIO], *, pretty: bool = False) -> int: ... +``` + +Serialize a python object to TOML and write it to a file. `file` may be a `Path` or file object from `open()`. + +If `pretty` is true, output has a more "pretty" format. + +### Example + +```py +from datetime import datetime, timezone, timedelta +import rtoml + +obj = { + 'title': 'TOML Example', + 'owner': { + 'dob': datetime(1979, 5, 27, 7, 32, tzinfo=timezone(timedelta(hours=-8))), + 'name': 'Tom Preston-Werner', + }, + 'database': { + 'connection_max': 5000, + 'enabled': True, + 'ports': [8001, 8001, 8002], + 'server': '192.168.1.1', + }, +} + +loaded_obj = rtoml.load("""\ +# This is a TOML document. + +title = "TOML Example" + +[owner] +name = "Tom Preston-Werner" +dob = 1979-05-27T07:32:00-08:00 # First class dates + +[database] +server = "192.168.1.1" +ports = [8001, 8001, 8002] +connection_max = 5000 +enabled = true +""") + +assert loaded_obj == obj + +assert rtoml.dumps(obj) == """\ +title = "TOML Example" + +[owner] +dob = 1979-05-27T07:32:00-08:00 +name = "Tom Preston-Werner" + +[database] +connection_max = 5000 +enabled = true +server = "192.168.1.1" +ports = [8001, 8001, 8002] +""" +``` + + + +%package -n python3-rtoml +Summary: please add a summary manually as the author left a blank one +Provides: python-rtoml +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +BuildRequires: python3-cffi +BuildRequires: gcc +BuildRequires: gdb +%description -n python3-rtoml +# rtoml + +[](https://github.com/samuelcolvin/rtoml/actions?query=event%3Apush+branch%3Amain+workflow%3ACI) +[](https://codecov.io/gh/samuelcolvin/rtoml) +[](https://pypi.python.org/pypi/rtoml) +[](https://github.com/samuelcolvin/rtoml) +[](https://github.com/samuelcolvin/rtoml/blob/main/LICENSE) + + +A better TOML library for python implemented in rust. + +## Why Use rtoml + +* Correctness: rtoml is based on the widely used and very stable [toml-rs](https://github.com/alexcrichton/toml-rs) +library, it passes all the [standard TOML tests](https://github.com/BurntSushi/toml-test) as well as having 100% +coverage on python code. Other TOML libraries for python I tried all failed to parse some valid TOML. +* Performance: see [github.com/pwwang/toml-bench](https://github.com/pwwang/toml-bench) - + rtoml is much faster than pure Python TOML libraries. + +## Install + +Requires `python>=3.7`, binaries are available from pypi for Linux, macOS and Windows, +see [here](https://pypi.org/project/rtoml/#files). + +```bash +pip install rtoml +``` + +If no binary is available on pypi for you system configuration; you'll need rust stable +installed before you can install rtoml. + +## Usage + +#### load +```python +def load(toml: Union[str, Path, TextIO]) -> Dict[str, Any]: ... +``` + +Parse TOML via a string or file and return a python dictionary. The `toml` argument may be a `str`, +`Path` or file object from `open()`. + +#### loads +```python +def loads(toml: str) -> Dict[str, Any]: ... +``` + +Parse a TOML string and return a python dictionary. (provided to match the interface of `json` and similar libraries) + +#### dumps +```python +def dumps(obj: Any, *, pretty: bool = False) -> str: ... +``` + +Serialize a python object to TOML. + +If `pretty` is true, output has a more "pretty" format. + +#### dump +```python +def dump(obj: Any, file: Union[Path, TextIO], *, pretty: bool = False) -> int: ... +``` + +Serialize a python object to TOML and write it to a file. `file` may be a `Path` or file object from `open()`. + +If `pretty` is true, output has a more "pretty" format. + +### Example + +```py +from datetime import datetime, timezone, timedelta +import rtoml + +obj = { + 'title': 'TOML Example', + 'owner': { + 'dob': datetime(1979, 5, 27, 7, 32, tzinfo=timezone(timedelta(hours=-8))), + 'name': 'Tom Preston-Werner', + }, + 'database': { + 'connection_max': 5000, + 'enabled': True, + 'ports': [8001, 8001, 8002], + 'server': '192.168.1.1', + }, +} + +loaded_obj = rtoml.load("""\ +# This is a TOML document. + +title = "TOML Example" + +[owner] +name = "Tom Preston-Werner" +dob = 1979-05-27T07:32:00-08:00 # First class dates + +[database] +server = "192.168.1.1" +ports = [8001, 8001, 8002] +connection_max = 5000 +enabled = true +""") + +assert loaded_obj == obj + +assert rtoml.dumps(obj) == """\ +title = "TOML Example" + +[owner] +dob = 1979-05-27T07:32:00-08:00 +name = "Tom Preston-Werner" + +[database] +connection_max = 5000 +enabled = true +server = "192.168.1.1" +ports = [8001, 8001, 8002] +""" +``` + + + +%package help +Summary: Development documents and examples for rtoml +Provides: python3-rtoml-doc +%description help +# rtoml + +[](https://github.com/samuelcolvin/rtoml/actions?query=event%3Apush+branch%3Amain+workflow%3ACI) +[](https://codecov.io/gh/samuelcolvin/rtoml) +[](https://pypi.python.org/pypi/rtoml) +[](https://github.com/samuelcolvin/rtoml) +[](https://github.com/samuelcolvin/rtoml/blob/main/LICENSE) + + +A better TOML library for python implemented in rust. + +## Why Use rtoml + +* Correctness: rtoml is based on the widely used and very stable [toml-rs](https://github.com/alexcrichton/toml-rs) +library, it passes all the [standard TOML tests](https://github.com/BurntSushi/toml-test) as well as having 100% +coverage on python code. Other TOML libraries for python I tried all failed to parse some valid TOML. +* Performance: see [github.com/pwwang/toml-bench](https://github.com/pwwang/toml-bench) - + rtoml is much faster than pure Python TOML libraries. + +## Install + +Requires `python>=3.7`, binaries are available from pypi for Linux, macOS and Windows, +see [here](https://pypi.org/project/rtoml/#files). + +```bash +pip install rtoml +``` + +If no binary is available on pypi for you system configuration; you'll need rust stable +installed before you can install rtoml. + +## Usage + +#### load +```python +def load(toml: Union[str, Path, TextIO]) -> Dict[str, Any]: ... +``` + +Parse TOML via a string or file and return a python dictionary. The `toml` argument may be a `str`, +`Path` or file object from `open()`. + +#### loads +```python +def loads(toml: str) -> Dict[str, Any]: ... +``` + +Parse a TOML string and return a python dictionary. (provided to match the interface of `json` and similar libraries) + +#### dumps +```python +def dumps(obj: Any, *, pretty: bool = False) -> str: ... +``` + +Serialize a python object to TOML. + +If `pretty` is true, output has a more "pretty" format. + +#### dump +```python +def dump(obj: Any, file: Union[Path, TextIO], *, pretty: bool = False) -> int: ... +``` + +Serialize a python object to TOML and write it to a file. `file` may be a `Path` or file object from `open()`. + +If `pretty` is true, output has a more "pretty" format. + +### Example + +```py +from datetime import datetime, timezone, timedelta +import rtoml + +obj = { + 'title': 'TOML Example', + 'owner': { + 'dob': datetime(1979, 5, 27, 7, 32, tzinfo=timezone(timedelta(hours=-8))), + 'name': 'Tom Preston-Werner', + }, + 'database': { + 'connection_max': 5000, + 'enabled': True, + 'ports': [8001, 8001, 8002], + 'server': '192.168.1.1', + }, +} + +loaded_obj = rtoml.load("""\ +# This is a TOML document. + +title = "TOML Example" + +[owner] +name = "Tom Preston-Werner" +dob = 1979-05-27T07:32:00-08:00 # First class dates + +[database] +server = "192.168.1.1" +ports = [8001, 8001, 8002] +connection_max = 5000 +enabled = true +""") + +assert loaded_obj == obj + +assert rtoml.dumps(obj) == """\ +title = "TOML Example" + +[owner] +dob = 1979-05-27T07:32:00-08:00 +name = "Tom Preston-Werner" + +[database] +connection_max = 5000 +enabled = true +server = "192.168.1.1" +ports = [8001, 8001, 8002] +""" +``` + + + +%prep +%autosetup -n rtoml-0.9.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-rtoml -f filelist.lst +%dir %{python3_sitearch}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Fri May 05 2023 Python_Bot <Python_Bot@openeuler.org> - 0.9.0-1 +- Package Spec generated @@ -0,0 +1 @@ +1ce137544f7cfea952ea7714b066d434 rtoml-0.9.0.tar.gz |
