Metadata-Version: 2.1
Name: crosshair-tool
Version: 0.0.14
Summary: Analyze Python code for correctness using symbolic execution.
Home-page: https://github.com/pschanely/CrossHair
Author: Phillip Schanely
Author-email: pschanely+vE7F@gmail.com
License: MIT
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Topic :: Software Development :: Quality Assurance
Classifier: Topic :: Software Development :: Testing
Requires-Python: >=3.7
Description-Content-Type: text/markdown
Requires-Dist: typing-inspect (>=0.7.1)
Requires-Dist: typing-extensions (>=3.7.4.2)
Requires-Dist: z3-solver (==4.8.9.0)
Provides-Extra: dev
Requires-Dist: black (==20.8b1) ; extra == 'dev'
Requires-Dist: flake8 ; extra == 'dev'
Requires-Dist: icontract ; extra == 'dev'
Requires-Dist: mypy (==0.902) ; extra == 'dev'
Requires-Dist: numpy ; extra == 'dev'
Requires-Dist: pydocstyle (==5.1.1) ; extra == 'dev'
Requires-Dist: pytest ; extra == 'dev'
Requires-Dist: types-pkg-resources ; extra == 'dev'
Requires-Dist: wheel ; extra == 'dev'

<img src="https://raw.githubusercontent.com/pschanely/CrossHair/master/doc/source/logo.png" width="5%" align="left">

# CrossHair

[![Join the chat at https://gitter.im/Cross_Hair/Lobby](https://badges.gitter.im/Cross_Hair/Lobby.svg)](https://gitter.im/Cross_Hair/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[![Check status](https://github.com/pschanely/CrossHair/workflows/Check/badge.svg)](https://github.com/pschanely/CrossHair/actions?query=workflow%3ACheck)

An analysis tool for Python that blurs the line between testing and 
type systems.

> **_THE LATEST NEWS:_**  
[Marko Ristin] just published **several** new [IDE integrations] for CrossHair,
including plugins for [VS Code] and [PyCharm].

[Marko Ristin]: https://github.com/mristin
[IDE integrations]: https://crosshair.readthedocs.io/en/latest/ide_integrations.html
[VS Code]: https://marketplace.visualstudio.com/items?itemName=mristin.crosshair-vscode
[PyCharm]: https://plugins.jetbrains.com/plugin/16266-crosshair-pycharm


If you have a function with
[type annotations](https://www.python.org/dev/peps/pep-0484/) and add a
contract
[in a supported syntax](https://crosshair.readthedocs.io/en/latest/kinds_of_contracts.html),
CrossHair will attempt to find counterexamples for you:

![Animated GIF demonstrating the verification of a python function](https://raw.githubusercontent.com/pschanely/CrossHair/master/doc/source/duplicate_list.gif)

CrossHair works by repeatedly calling your functions with symbolic inputs.
It uses an [SMT solver] (a kind of theorem prover) to explore viable 
execution paths and find counterexamples for you.
This is not a new idea; an approach for Python was first described in
[this paper].
However, to my knowledge, CrossHair is the most complete implementation of 
the idea: it supports symbolic lists, dictionaries, sets, and even symbolic
instances of your own classes.

[SMT solver]: https://en.wikipedia.org/wiki/Satisfiability_modulo_theories
[this paper]: https://hoheinzollern.files.wordpress.com/2008/04/seer1.pdf

Try CrossHair right now, in your browser, at [crosshair-web.org]!

[crosshair-web.org]: https://crosshair-web.org

> **_NOTE:_**  CrossHair is in an experimental state right now.
> [You can help though!]

[You can help though!]: https://crosshair.readthedocs.io/en/latest/how_can_i_help.html

## Documentation

Available at https://crosshair.readthedocs.io/


