Metadata-Version: 2.1
Name: brainf
Version: 0.0.1
Summary: Brainfuck interpreter
Home-page: https://github.com/bzaczynski/brainf
Author: Bartosz Zaczyński
Author-email: bartosz.zaczynski@gmail.com
License: MIT
Download-URL: https://github.com/bzaczynski/brainf/archive/master.zip
Keywords: brainfuck interpreter brainf
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3.7
Classifier: Topic :: Software Development :: Interpreters
Description-Content-Type: text/markdown

# [brain&middot;f](https://github.com/bzaczynski/brainf)

Yet another [Brainfuck](https://en.wikipedia.org/wiki/Brainfuck) interpreter written in Python.

For sample programs navigate to [esolangs wiki](https://esolangs.org/wiki/Brainfuck) or [here](http://www.hevanet.com/cristofd/brainfuck/).

## Usage

Run directly as a shell script:
```shell
$ cat > file.b
#!/usr/bin/env brainfuck.py
++++++++++[>++++++<-]>+++++.
^D
$ chmod +x file.b
$ ./file.b
A
```

Run as a Python script:
```shell
$ brainfuck.py /path/to/file.b
```

Run as a Python module:
```shell
$ python -m brainf /path/to/file.b
```

Run as a Python Executable (PEX):
```shell
$ python brainf-linux.pex /path/to/file.b
```

See technical [documentation](http://brainf.readthedocs.io/en/latest/) for more details.

## Download

Source code:

```shell
$ git clone https://github.com/bzaczynski/brainf.git
```

## Installation

In a new virtual environment:

```shell
$ pip install .
```

To uninstall:

```shell
$ pip uninstall brainf
```

## Building

### Binary Distribution

To build a binary distribution with [Docker](https://www.docker.com/) and [PEX](https://pypi.org/project/pex/) follow the steps below.

1. Create a new Docker image.
```shell
$ docker build -t brainf:linux -f Dockerfile.linux .
```

2. Run interim container to extract .pex file from the image.
```shell
$ docker run --rm brainf:linux cat /root/brainf-1.0.0-linux.pex > brainf-linux.pex
```

### Documentation

To build Sphinx documentation:

```shell
$ pip install -r requirements-dev.txt
$ cd docs/
$ make clean html
```

## Publishing

The recommended way to publish a project on [PyPI](https://pypi.org/) is with [twine](https://github.com/pypa/twine) since it uses SSL by default.

1. Make sure twine is installed:
```shell
$ pip install twine
```

2. Create source and binary distributions:
```shell
$ python setup.py sdist bdist_wheel
```

3. Upload to Python Package Index.

    Test PyPI:
    ```shell
    $ twine upload --repository-url https://test.pypi.org/legacy/ dist/*
    ```
    PyPI:
    ```shell
    $ twine upload dist/*
    ```

## License

This project is licensed under the [MIT License](https://raw.githubusercontent.com/bzaczynski/brainf/master/LICENSE).


