Metadata-Version: 2.1
Name: woke
Version: 1.2.0
Summary: Woke is a Python-based development and testing framework for Solidity.
Home-page: https://github.com/Ackee-Blockchain/woke
Author: Ackee Blockchain
License: ISC
Keywords: solidity,ethereum,blockchain,review,audit,security,compiler,solidity audit,solidity security
Requires-Python: >=3.7
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: pydantic (>=1.9.1)
Requires-Dist: typing-extensions (<5,>=4.0)
Requires-Dist: aiohttp (<4,>=3.8)
Requires-Dist: aiofiles (>=0.8.0)
Requires-Dist: tomli (<3,>=2.0.0)
Requires-Dist: networkx (<3,>=2.5)
Requires-Dist: pycryptodomex (<4,>=3.12)
Requires-Dist: click (<9,>=8)
Requires-Dist: rich (>=10.16)
Requires-Dist: pathvalidate (<3,>=2.5.0)
Requires-Dist: intervaltree (>=3.1)
Requires-Dist: graphviz (>=0.19)
Provides-Extra: dev
Requires-Dist: black ; extra == 'dev'
Requires-Dist: ipython (<8) ; extra == 'dev'
Requires-Dist: mkdocs-material (>=8.3.9) ; extra == 'dev'
Requires-Dist: mkdocstrings[python] ; extra == 'dev'
Requires-Dist: pymdown-extensions (>=9.0) ; extra == 'dev'
Requires-Dist: pygments ; extra == 'dev'
Requires-Dist: mike ; extra == 'dev'
Requires-Dist: isort (<6,>=5.10.0) ; extra == 'dev'
Provides-Extra: fuzzer
Requires-Dist: eth-brownie (>=1.16) ; extra == 'fuzzer'
Requires-Dist: tblib (<2,>=1.7.0) ; extra == 'fuzzer'
Requires-Dist: ipdb ; extra == 'fuzzer'
Provides-Extra: tests
Requires-Dist: pytest (<7.0,>=6.2.5) ; extra == 'tests'
Requires-Dist: pytest-asyncio (<1,>=0.17) ; extra == 'tests'
Requires-Dist: GitPython (<4,>=3.1.20) ; extra == 'tests'

# Woke

Woke is a Python-based development and testing framework for Solidity.

Features:

- **Vulnerability detectors**

- **LSP server**

- **Fuzzer** - a property-based fuzzer for Solidity smart contracts that allows testers to write their fuzz tests in Python.

## Dependencies

- [Python](https://www.python.org/downloads/release/python-3910/) (version 3.7 or higher)

## Installation

> :warning: **Woke has been moved from `abch-woke` PyPi package to `woke`.**

via `pip`

```shell
pip3 install woke
```

## Features

### Vulnerability detectors

Vulnerability detectors can be run using:
```shell
woke detect
```

### LSP server

Woke implements an [LSP](https://microsoft.github.io/language-server-protocol/) server for Solidity. The only currently supported communication channel is TCP.

Woke LSP server can be run using:

```shell
woke lsp
```

Or with an optional --port argument:

```shell
woke lsp --port 1234
```

All LSP server features can be found in the [documentation](https://ackeeblockchain.com/woke/docs/latest/language-server/).

### Fuzzer

The property-based fuzzer can be installed as an extra dependency. Due to the dependency on [eth-brownie](https://eth-brownie.readthedocs.io/en/stable/), it is recommended to install it into a [virtual environment](https://docs.python.org/3/library/venv.html).

```shell
pip3 install woke[fuzzer]
```

## Documentation & Contribution

Woke documentation can be found [here](https://ackeeblockchain.com/woke/docs).

There you can also find a section on [contributing](https://ackeeblockchain.com/woke/docs/latest/contributing/).

## License

This project is licensed under the [ISC license](https://github.com/Ackee-Blockchain/woke/blob/main/LICENSE).
