{"added":null,"apiVersion":1,"behindSince":null,"buildDepends":["archivers/liblz4","archivers/zstd","devel/gettext-runtime","devel/libffi","devel/py-build","devel/py-installer","devel/py-packaging","devel/py-pyproject-hooks","devel/py-setuptools","devel/py-wheel","devel/readline","lang/python312","lang/python315","math/mpdecimal","print/indexinfo","textproc/expat2"],"categories":["devel","python"],"comment":"Analyze Python code for correctness using symbolic execution","compare":null,"dependentCount":null,"description":"CrossHair is an analysis tool for Python that blurs the line between testing and\ntype systems.\n\nIf you have a function with type annotations and add a contract in a supported\nsyntax, CrossHair will attempt to find counterexamples for you.\n\nCrossHair works by repeatedly calling your functions with symbolic inputs. It\nuses an SMT solver (a kind of theorem prover) to explore viable execution paths\nand find counterexamples for you. This is not a new idea; a Python approach was\nfirst described in this paper. However, to my knowledge, CrossHair is the most\ncomplete implementation: it can use symbolic reasoning for the built-in types,\nuser-defined classes, and much of the standard library.","flavors":[],"html":"https://daemonports.org/devel/py-crosshair-tool/","kind":"port","lastUpdate":"2026-08-24T13:16:32+08:00","license":["MIT"],"maintainer":"sunpoet@FreeBSD.org","name":"py312-crosshair-tool","newest":true,"newestVersion":"0.0.110","noVulnData":false,"origin":"devel/py-crosshair-tool","otherSystems":[{"maintainer":"sunpoet@FreeBSD.org","newest":true,"noVulnData":true,"origin":"devel/py-crosshair-tool","path":"","system":"HardenedBSD","version":"0.0.110"},{"maintainer":"sunpoet@FreeBSD.org","newest":true,"noVulnData":true,"origin":"devel/py-crosshair-tool","path":"","system":"GhostBSD","version":"0.0.110"}],"packages":[{"repo":"FreeBSD:14:latest","versions":["0.0.110","0.0.110","-","0.0.94","0.0.110"]},{"repo":"FreeBSD:14:quarterly","versions":["0.0.110","0.0.110","n/a","0.0.88","0.0.110"]},{"repo":"FreeBSD:15:latest","versions":["0.0.110","0.0.110","n/a","0.0.94","0.0.94"]},{"repo":"FreeBSD:15:quarterly","versions":["0.0.110","0.0.110","n/a","n/a","n/a"]},{"repo":"FreeBSD:16:latest","versions":["0.0.110","0.0.110","n/a","n/a","n/a"]},{"repo":"FreeBSD:16:quarterly","versions":["n/a","n/a","n/a","n/a","n/a"]}],"pkgName":"py312-crosshair-tool-0.0.110","related":null,"repository":"FreeBSD ports","requiredBy":["astro/py-pytest-astropy","cad/py-pymtl","devel/py-hypothesis","devel/py-hypothesis-crosshair","devel/py-hypothesmith","math/py-CyLP","misc/py-pytorch","net-mgmt/py-ciscoconfparse2","science/py-MDAnalysisTests","textproc/py-textdistance"],"requiredByCount":10,"runDepends":["archivers/liblz4","archivers/zstd","devel/gettext-runtime","devel/libffi","devel/py-attrs","devel/py-cattrs","devel/py-importlib-metadata","devel/py-lsprotocol","devel/py-mypy_extensions","devel/py-packaging","devel/py-pygls","devel/py-typeshed-client","devel/py-typing-extensions","devel/py-typing-inspect","devel/py-zipp","devel/readline","lang/python312","lang/python315","math/mpdecimal","math/py-z3-solver","math/z3","print/indexinfo","textproc/expat2"],"status":null,"system":"freebsd","systemLabel":"FreeBSD","version":"0.0.110","versions":[{"commit":"1f557293eb93c472c18d246a729b35b3a9bc6e3a","date":"2026-08-24","version":"0.0.110"},{"commit":"fa0ac4ca10efe57746616fccb29c20367c18a937","date":"2026-07-12","version":"0.0.108"},{"commit":"eacde083458ec188e40d483c583fd31acd80a94a","date":"2026-07-08","version":"0.0.107"}],"vulnerabilities":null,"www":"https://crosshair.readthedocs.io/en/latest/"}
