%global _empty_manifest_terminate_build 0 Name: python-dataclass-dict-convert Version: 1.7.1 Release: 1 Summary: Convert between Dataclasses and dict/json License: MIT URL: https://gitlab.ilabt.imec.be/wvdemeer/dataclass-dict-convert Source0: https://mirrors.nju.edu.cn/pypi/web/packages/5d/f0/5e9c066557c40813be27106aaa51cc72050cc61dde168b9b4a4525eb82cd/dataclass-dict-convert-1.7.1.tar.gz BuildArch: noarch Requires: python3-dateutil Requires: python3-stringcase %description # Dataclass Dict Convert This library converts between python [dataclasses](https://docs.python.org/3/library/dataclasses.html#dataclasses.dataclass) and dicts (and json). It was created because when using the [dataclasses-json](https://pypi.org/project/dataclasses-json/) library for my use case, I ran into limitations and performance issues. (There's also [typed-json-dataclass](https://pypi.org/project/typed-json-dataclass) but I haven't evaluated that library.) Since creating this library, I've discovered [Pydentic](https://pypi.org/project/pydentic/), which is a much more professional library, that in 99% of cases will be much more suitable than this library. So I strongly recommend using Pydentic. If you use `dataclass-dict-convert`, beware that it is poorly maintained, not very well documented, may contain some bugs, and has some strange edge cases where it doesn't work. `dataclass-dict-convert` supports lists, optionals, dicts, enums, nested dataclasses, etc. It handles dates using RFC3339 (and enforces timezones and timezone aware `datetime`). Example: ```python from dataclasses import dataclass from stringcase import camelcase from typing import Optional, List from dataclass_dict_convert import dataclass_dict_convert @dataclass_dict_convert(dict_letter_case=camelcase) @dataclass(frozen=True) class TestB: an_int: int a_str: str a_float: float a_bool: bool @dataclass_dict_convert(dict_letter_case=camelcase) @dataclass(frozen=True) class Test: nestedClass: TestB nestedInOpt: Optional[TestB] nestedInList: List[TestB] the_instanceB1 = TestB(1, 'foo', 0.1, True) the_instanceB2 = TestB(2, 'bar', 0.2, False) the_instanceB3 = TestB(3, 'baz', 0.3, True) the_instanceB4 = TestB(4, 'huh', 0.4, False) the_instance = Test(the_instanceB1, the_instanceB2, [the_instanceB3, the_instanceB4]) the_dict = { 'nestedClass': {'anInt': 1, 'aStr': 'foo', 'aFloat': 0.1, 'aBool': True, }, 'nestedInOpt': {'anInt': 2, 'aStr': 'bar', 'aFloat': 0.2, 'aBool': False, }, 'nestedInList': [ {'anInt': 3, 'aStr': 'baz', 'aFloat': 0.3, 'aBool': True, }, {'anInt': 4, 'aStr': 'huh', 'aFloat': 0.4, 'aBool': False, }, ], } expected = the_dict actual = the_instance.to_dict() assert actual == expected expected = the_instance actual = Test.from_dict(the_dict) assert actual == expected ``` The library also includes: - RFC3339 tools (the default format for converting datetime to string), - dataclass type checking tools - dataclass copy method generator - dataclass multiline repr (replace auto generated repr for dataclasses by a multiline version) Links: - Gitlab: https://gitlab.ilabt.imec.be/wvdemeer/dataclass-dict-convert - PyPi: https://pypi.org/project/dataclass-dict-convert/ %package -n python3-dataclass-dict-convert Summary: Convert between Dataclasses and dict/json Provides: python-dataclass-dict-convert BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-dataclass-dict-convert # Dataclass Dict Convert This library converts between python [dataclasses](https://docs.python.org/3/library/dataclasses.html#dataclasses.dataclass) and dicts (and json). It was created because when using the [dataclasses-json](https://pypi.org/project/dataclasses-json/) library for my use case, I ran into limitations and performance issues. (There's also [typed-json-dataclass](https://pypi.org/project/typed-json-dataclass) but I haven't evaluated that library.) Since creating this library, I've discovered [Pydentic](https://pypi.org/project/pydentic/), which is a much more professional library, that in 99% of cases will be much more suitable than this library. So I strongly recommend using Pydentic. If you use `dataclass-dict-convert`, beware that it is poorly maintained, not very well documented, may contain some bugs, and has some strange edge cases where it doesn't work. `dataclass-dict-convert` supports lists, optionals, dicts, enums, nested dataclasses, etc. It handles dates using RFC3339 (and enforces timezones and timezone aware `datetime`). Example: ```python from dataclasses import dataclass from stringcase import camelcase from typing import Optional, List from dataclass_dict_convert import dataclass_dict_convert @dataclass_dict_convert(dict_letter_case=camelcase) @dataclass(frozen=True) class TestB: an_int: int a_str: str a_float: float a_bool: bool @dataclass_dict_convert(dict_letter_case=camelcase) @dataclass(frozen=True) class Test: nestedClass: TestB nestedInOpt: Optional[TestB] nestedInList: List[TestB] the_instanceB1 = TestB(1, 'foo', 0.1, True) the_instanceB2 = TestB(2, 'bar', 0.2, False) the_instanceB3 = TestB(3, 'baz', 0.3, True) the_instanceB4 = TestB(4, 'huh', 0.4, False) the_instance = Test(the_instanceB1, the_instanceB2, [the_instanceB3, the_instanceB4]) the_dict = { 'nestedClass': {'anInt': 1, 'aStr': 'foo', 'aFloat': 0.1, 'aBool': True, }, 'nestedInOpt': {'anInt': 2, 'aStr': 'bar', 'aFloat': 0.2, 'aBool': False, }, 'nestedInList': [ {'anInt': 3, 'aStr': 'baz', 'aFloat': 0.3, 'aBool': True, }, {'anInt': 4, 'aStr': 'huh', 'aFloat': 0.4, 'aBool': False, }, ], } expected = the_dict actual = the_instance.to_dict() assert actual == expected expected = the_instance actual = Test.from_dict(the_dict) assert actual == expected ``` The library also includes: - RFC3339 tools (the default format for converting datetime to string), - dataclass type checking tools - dataclass copy method generator - dataclass multiline repr (replace auto generated repr for dataclasses by a multiline version) Links: - Gitlab: https://gitlab.ilabt.imec.be/wvdemeer/dataclass-dict-convert - PyPi: https://pypi.org/project/dataclass-dict-convert/ %package help Summary: Development documents and examples for dataclass-dict-convert Provides: python3-dataclass-dict-convert-doc %description help # Dataclass Dict Convert This library converts between python [dataclasses](https://docs.python.org/3/library/dataclasses.html#dataclasses.dataclass) and dicts (and json). It was created because when using the [dataclasses-json](https://pypi.org/project/dataclasses-json/) library for my use case, I ran into limitations and performance issues. (There's also [typed-json-dataclass](https://pypi.org/project/typed-json-dataclass) but I haven't evaluated that library.) Since creating this library, I've discovered [Pydentic](https://pypi.org/project/pydentic/), which is a much more professional library, that in 99% of cases will be much more suitable than this library. So I strongly recommend using Pydentic. If you use `dataclass-dict-convert`, beware that it is poorly maintained, not very well documented, may contain some bugs, and has some strange edge cases where it doesn't work. `dataclass-dict-convert` supports lists, optionals, dicts, enums, nested dataclasses, etc. It handles dates using RFC3339 (and enforces timezones and timezone aware `datetime`). Example: ```python from dataclasses import dataclass from stringcase import camelcase from typing import Optional, List from dataclass_dict_convert import dataclass_dict_convert @dataclass_dict_convert(dict_letter_case=camelcase) @dataclass(frozen=True) class TestB: an_int: int a_str: str a_float: float a_bool: bool @dataclass_dict_convert(dict_letter_case=camelcase) @dataclass(frozen=True) class Test: nestedClass: TestB nestedInOpt: Optional[TestB] nestedInList: List[TestB] the_instanceB1 = TestB(1, 'foo', 0.1, True) the_instanceB2 = TestB(2, 'bar', 0.2, False) the_instanceB3 = TestB(3, 'baz', 0.3, True) the_instanceB4 = TestB(4, 'huh', 0.4, False) the_instance = Test(the_instanceB1, the_instanceB2, [the_instanceB3, the_instanceB4]) the_dict = { 'nestedClass': {'anInt': 1, 'aStr': 'foo', 'aFloat': 0.1, 'aBool': True, }, 'nestedInOpt': {'anInt': 2, 'aStr': 'bar', 'aFloat': 0.2, 'aBool': False, }, 'nestedInList': [ {'anInt': 3, 'aStr': 'baz', 'aFloat': 0.3, 'aBool': True, }, {'anInt': 4, 'aStr': 'huh', 'aFloat': 0.4, 'aBool': False, }, ], } expected = the_dict actual = the_instance.to_dict() assert actual == expected expected = the_instance actual = Test.from_dict(the_dict) assert actual == expected ``` The library also includes: - RFC3339 tools (the default format for converting datetime to string), - dataclass type checking tools - dataclass copy method generator - dataclass multiline repr (replace auto generated repr for dataclasses by a multiline version) Links: - Gitlab: https://gitlab.ilabt.imec.be/wvdemeer/dataclass-dict-convert - PyPi: https://pypi.org/project/dataclass-dict-convert/ %prep %autosetup -n dataclass-dict-convert-1.7.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-dataclass-dict-convert -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Tue May 30 2023 Python_Bot - 1.7.1-1 - Package Spec generated