Metadata-Version: 2.4
Name: simulaqron
Version: 4.1.1
Summary: A simulator for developing Quantum Internet software
Author-email: Axel Dahlberg <e.a.dahlberg@tudelft.nl>
Maintainer-email: Diego Rivera <d.a.g.a.rivera@tudelft.nl>
Project-URL: Homepage, https://github.com/SoftwareQuTech/SimulaQron
Keywords: egg,bacon,sausage,tomatoes,Lobster Thermidor
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Operating System :: Unix
Classifier: Operating System :: MacOS
Requires-Python: <3.13,>=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: dataclasses-serialization<2.0,>=1.3.1
Requires-Dist: numpy<2.0.0,>=1.14.0
Requires-Dist: dill<1.0.0,>=0.4.0
Requires-Dist: scipy<2.0.0,>=1.1.0
Requires-Dist: twisted<26.0.0,>=24.0.0
Requires-Dist: networkx<3.6,>=3.0
Requires-Dist: click<9.0,>=8.0
Requires-Dist: daemons<2.0.0,>=1.3.0
Requires-Dist: netqasm<3.0.0,>=2.1.1
Requires-Dist: multiprocess<1.0,>=0.70.18
Requires-Dist: StrEnum<1.0.0
Provides-Extra: test
Requires-Dist: flake8<6.0.0,>=5.0.0; extra == "test"
Requires-Dist: pytest<8.0,>=7.1; extra == "test"
Requires-Dist: qutip<5.0.0; extra == "test"
Provides-Extra: opt
Requires-Dist: projectq<=0.8.0; extra == "opt"
Requires-Dist: qutip<5.0.0; extra == "opt"
Provides-Extra: dev
Requires-Dist: sphinx<8.0,>=7.2.6; extra == "dev"
Requires-Dist: sphinx-rtd-theme; extra == "dev"
Requires-Dist: build; extra == "dev"
Requires-Dist: twine; extra == "dev"
Requires-Dist: pylint; extra == "dev"
Requires-Dist: pyink; extra == "dev"
Requires-Dist: pytest<8.0,>=7.1; extra == "dev"
Requires-Dist: mypy; extra == "dev"
Dynamic: license-file

# SimulaQron - simple quantum network simulator (4.1.1)

The purpose of this simulator of quantum network nodes is to allow you to develop new applications for
a future quantum internet, while we do not yet have real quantum network nodes available for testing. 

Since version 4.0, SimulaQron is compatible with [NetQASM](https://github.com/QuTech-Delft/netqasm).
See its documentation for how to use SimulaQron as a backend for running NetQASM applications.

## Installation

### Linux

Before proceeding, make sure you install Python 3.12. Please note that Python 3.13 or newer *is not supported*.
To install Python 3.12 in Debian-based distributions, you can first add the "deadsnakes" repository:

```shell
sudo add-apt-repository -y "ppa:deadsnakes/ppa"
```

Then you can install Python 3.12 and the Python development package:

```shell
sudo apt-get install python3.12-full python3.12-dev
```

Additionally, you will need the `build-essential` package, to install tools used when building some SimulaQron dependencies:

```shell
sudo apt-get install build-essential cmake vim linux-headers-generic
```

After this, you can install this repository by using the Makefile:

```shell
make install
```

Additionally, you can install SimulaQron with extra dependencies:
```shell
make install-optional
```


Finally, if you would like to contribute to the development of SimulaQron, please install the development dependencies:
```shell
make install-development
```

### Windows

In Windows, SimulaQron can be installed in two similar ways:

* Using WSL: *Windows for Linux Subsystems* (WSL) is a way to execute the linux kernel (and linux apps)
  in a Windows environment. To install WSL, you can follow the [official microsoft documentation](https://learn.microsoft.com/en-us/windows/wsl/install).
  After this you can install SimulaQron in WSL using the Linux instructions from above.
* Using a Linux Virtual Machine: It is also possible to create a Linux environment using a Virtual Machine
  Hypervisor such as [Oracle VirtualBox](https://www.virtualbox.org/wiki/Downloads). After installing this,
  create a new Virtual Machine and install a compatible linux version (such as [Ubuntu 24.04](https://ubuntu.com/download/desktop/thank-you?version=24.04.4&architecture=amd64&lts=true)).
  After the installation is finished, follow the instructions to install SimulaQron on a Linux machine as
  presented above.


### macOS

In macOS, the only supported way to install SimulaQron is by using a Virtual Machine. Considering this
please install a Virtual Machine Hypervisor such as [Oracle VirtualBox](https://www.virtualbox.org/wiki/Downloads),
and install a compatible operating system:

* Intel-based Macs: This is the case for Mac computers with Intel processor.s You can directly install the ["amd64"
  version of Ubuntu 24.04](https://ubuntu.com/download/desktop/thank-you?version=24.04.4&architecture=amd64&lts=true).
* ARM-based Macs: This is the case for "Apple Silicon" processors (M1 or newer, including the A18 Macbook Neo). For
  this type of Macs, you can install the ["arm64" version of Ubuntu 24.04](https://cdimage.ubuntu.com/releases/24.04/release/ubuntu-24.04.4-desktop-arm64.iso)

After installing the Operating System on the virtual machine, please continue the installation of SimulaQron in
the virtual machine using the Linux instructions as mentioned above.


## Tests

There are 2 sets of tests: quick and slow ones. To ease the execution, the `Makefile` provides two targets:
* `tests`: This target only run the quick tests.
* `tests_all`: This target runs quick and slow tests.

To run a test target, simply invoke it with make:
```shell
make tests
```

or:
```shell
make tests_all
```


## Documentation


Documentation and examples are explained in the HTML documentation 
https://softwarequtech.github.io/SimulaQron/html/index.html

For upcoming and previous changes see the file [CHANGELOG.md](CHANGELOG.md)

More info at
http://www.simulaqron.org
