{"added":null,"apiVersion":1,"behindSince":"2026-09-28","buildDepends":["archivers/liblz4","archivers/zstd","devel/gettext-runtime","devel/libffi","devel/py-build","devel/py-hatch-vcs","devel/py-hatchling","devel/py-installer","devel/py-packaging","devel/py-pathspec","devel/py-pluggy","devel/py-pyproject-hooks","devel/py-setuptools","devel/py-setuptools-scm","devel/py-trove-classifiers","devel/readline","lang/python312","lang/python315","math/mpdecimal","print/indexinfo","textproc/expat2","textproc/py-tomlkit"],"categories":["devel","python"],"comment":"Composable complex class support for attrs and dataclasses","compare":"/compare/py312-cattrs/index.json","dependentCount":null,"description":"cattrs is an open source Python library for structuring and unstructuring data.\ncattrs works best with attrs classes, dataclasses and the usual Python\ncollections, but other kinds of classes are supported by manually registering\nconverters.\n\nPython has a rich set of powerful, easy to use, built-in data types like\ndictionaries, lists and tuples. These data types are also the lingua franca of\nmost data serialization libraries, for formats like json, msgpack, yaml or toml.\n\nData types like this, and mappings like dict s in particular, represent\nunstructured data. Your data is, in all likelihood, structured: not all\ncombinations of field names or values are valid inputs to your programs. In\nPython, structured data is better represented with classes and enumerations.\nattrs is an excellent library for declaratively describing the structure of your\ndata, and validating it.\n\nWhen you're handed unstructured data (by your network, file system,\ndatabase...), cattrs helps to convert this data into structured data. When you\nhave to convert your structured data into data types other libraries can handle,\ncattrs turns your classes and enumerations into dictionaries, integers and\nstrings.","flavors":[],"html":"https://daemonports.org/devel/py-cattrs/","kind":"port","lastUpdate":"2026-09-12T19:23:12+08:00","license":["MIT"],"maintainer":"sunpoet@FreeBSD.org","name":"py312-cattrs","newest":false,"newestVersion":"26.2.1","noVulnData":false,"origin":"devel/py-cattrs","otherSystems":[{"maintainer":"The OpenBSD ports mailing-list \u003cports@openbsd.org\u003e","newest":true,"noVulnData":true,"origin":"devel/py-cattrs","path":"/openbsd/devel/py-cattrs/","system":"OpenBSD","updated":"2026-10-16","version":"26.2.1"},{"behindSince":"2026-09-28","maintainer":"pkgsrc-users@NetBSD.org","origin":"devel/py-cattrs","path":"/netbsd/devel/py-cattrs/","system":"NetBSD","updated":"2026-10-16","version":"26.2.0"},{"behindSince":"2026-09-07","maintainer":"sunpoet@FreeBSD.org","origin":"devel/py-cattrs","path":"/dragonfly/devel/py-cattrs/","system":"DragonFly","version":"24.1.2"},{"behindSince":"2026-09-07","maintainer":"ports@MidnightBSD.org","noVulnData":true,"origin":"devel/py-cattrs","path":"/midnightbsd/devel/py-cattrs/","system":"MidnightBSD","version":"23.2.3_1"},{"behindSince":"2026-09-28","maintainer":"sunpoet@FreeBSD.org","noVulnData":true,"origin":"devel/py-cattrs","path":"","system":"HardenedBSD","version":"26.2.0"},{"behindSince":"2026-09-28","maintainer":"sunpoet@FreeBSD.org","noVulnData":true,"origin":"devel/py-cattrs","path":"","system":"GhostBSD","version":"26.2.0"}],"packages":[{"repo":"FreeBSD:14:latest","versions":["26.2.0","26.2.0","22.2.0","25.1.1","26.2.0"]},{"repo":"FreeBSD:14:quarterly","versions":["26.2.0","26.2.0","n/a","25.1.1","26.2.0"]},{"repo":"FreeBSD:15:latest","versions":["26.2.0","26.2.0","n/a","25.1.1","25.1.1"]},{"repo":"FreeBSD:15:quarterly","versions":["26.2.0","26.2.0","n/a","n/a","n/a"]},{"repo":"FreeBSD:16:latest","versions":["26.2.0","26.2.0","n/a","n/a","n/a"]},{"repo":"FreeBSD:16:quarterly","versions":["n/a","n/a","n/a","n/a","n/a"]}],"pkgName":"py312-cattrs-26.2.0","related":null,"repository":"FreeBSD ports","requiredBy":["astro/py-pytest-astropy","audio/mythplugin-mythmusic","cad/py-pymtl","devel/py-crosshair-tool","devel/py-e3-core","devel/py-e3-testsuite","devel/py-fastf1","devel/py-hypothesis","devel/py-hypothesis-crosshair","devel/py-hypothesmith","devel/py-lsprotocol","devel/py-pygls","finance/py-openbb-intrinio","math/py-CyLP","misc/py-pytorch","multimedia/mythtv","net-mgmt/py-ciscoconfparse2","print/py-collidoscope","print/py-glyphsets","print/py-glyphtools","print/py-ufolib2","print/py-ufomerge","science/py-MDAnalysisTests","textproc/py-textdistance","www/py-requests-cache","x11-fonts/py-babelfont","x11-fonts/py-glyphsLib","x11-fonts/py-vfblib"],"requiredByCount":28,"runDepends":["devel/gettext-runtime","devel/libffi","devel/py-attrs","devel/py-typing-extensions","devel/readline","lang/python312","math/mpdecimal","print/indexinfo","textproc/expat2"],"status":null,"system":"freebsd","systemLabel":"FreeBSD","version":"26.2.0","versions":[{"commit":"ef74fb47542e162b789929e030fda1f4e1c0f478","date":"2026-09-12","version":"26.2.0"}],"vulnerabilities":null,"www":"https://catt.rs/en/stable/"}
