diff --git a/.github/workflows/sphinx-build.yml b/.github/workflows/sphinx-build.yml
new file mode 100644
index 0000000..e263cce
--- /dev/null
+++ b/.github/workflows/sphinx-build.yml
@@ -0,0 +1,47 @@
+#
+# sphinx-build.py
+#
+# Copyright The PyModulation Contributors.
+#
+# This file is part of PyModulation library.
+#
+# PyModulation library is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# PyModulation library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with PyModulation library. If not, see .
+#
+#
+
+name: Documentation build
+
+on:
+ push:
+ branches: [dev, main]
+ pull_request:
+ branches: [dev, main]
+
+jobs:
+ build:
+
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v4
+ # Standard drop-in approach that should work for most people.
+ - uses: ammaraskar/sphinx-action@master
+ with:
+ docs-folder: "docs/"
+ pre-build-command: "pip install --upgrade pip"
+ # Create an artifact of the html output.
+ - uses: actions/upload-artifact@v4
+ with:
+ name: documentation_html
+ path: docs/_build/html/
diff --git a/.github/workflows/sphinx-deploy.yml b/.github/workflows/sphinx-deploy.yml
new file mode 100644
index 0000000..4087162
--- /dev/null
+++ b/.github/workflows/sphinx-deploy.yml
@@ -0,0 +1,72 @@
+#
+# sphinx-deploy.py
+#
+# Copyright The PyModulation Contributors.
+#
+# This file is part of PyModulation library.
+#
+# PyModulation library is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# PyModulation library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with PyModulation library. If not, see .
+#
+#
+
+name: Documentation deployment
+
+on:
+ push:
+ branches: [main]
+ pull_request:
+ branches: [main]
+
+ # 'workflow_dispatch' allows manual execution of this workflow under the repository's 'Actions' tab
+ workflow_dispatch:
+
+jobs:
+ build:
+
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v4
+ # Standard drop-in approach that should work for most people
+ - uses: ammaraskar/sphinx-action@master
+ with:
+ docs-folder: "docs/"
+ pre-build-command: "pip install --upgrade pip"
+ # Create an artifact of the html output
+ - uses: actions/upload-artifact@v4
+ with:
+ name: documentation_html
+ path: docs/_build/html/
+ # Publish built docs to gh-pages branch
+ - name: Commit documentation changes
+ run: |
+ git clone https://github.com/mgm8/pymodulation.git --branch gh-pages --single-branch gh-pages
+ cd gh-pages
+ rm -rf *
+ rm -f .nojekyll
+ rm -f .gitignore
+ rm -rf .github/
+ cp -r ../docs/_build/html/* .
+ touch .nojekyll
+ git config --local user.email "action@github.com"
+ git config --local user.name "GitHub Action"
+ git add .
+ git commit -m "Update documentation" -a || true
+ # The above command will fail if no changes were present, so we ignore that
+ - name: Push changes
+ uses: ad-m/github-push-action@master
+ with:
+ branch: gh-pages
+ directory: gh-pages
+ github_token: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
new file mode 100644
index 0000000..12cdd1a
--- /dev/null
+++ b/.github/workflows/test.yml
@@ -0,0 +1,54 @@
+#
+# test.py
+#
+# Copyright The PyModulation Contributors.
+#
+# This file is part of PyModulation library.
+#
+# PyModulation library is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# PyModulation library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with PyModulation library. If not, see .
+#
+#
+
+name: Unit tests
+
+on:
+ push:
+ branches: [dev]
+ pull_request:
+ branches: [main, dev]
+
+ # 'workflow_dispatch' allows manual execution of this workflow under the repository's 'Actions' tab
+ workflow_dispatch:
+
+jobs:
+
+ unit-tests:
+ name: Unit tests
+ runs-on: ubuntu-latest
+
+ strategy:
+ fail-fast: false
+
+ steps:
+ - uses: actions/checkout@v4
+ - uses: actions/setup-python@v5
+
+ - name: Install dependencies
+ run: sudo apt install -y python3-pytest
+
+ - name: Install PyModulation
+ run: sudo python setup.py install
+
+ - name: Execute the test
+ run: pytest tests/
diff --git a/CHANGELOG b/CHANGELOG
new file mode 100644
index 0000000..c9e5ea4
--- /dev/null
+++ b/CHANGELOG
@@ -0,0 +1,7 @@
+===========================================
+
+v0.0 - 2025/03/30
+
+- Project creation
+
+===========================================
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000..fc35929
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,5 @@
+# Contributing
+
+All contributions are welcome! If you found a bug, developed a new feature, or want to improve the documentation, there are two ways to do so: open an issue describing the suggested modification, or by opening a pull request.
+
+Any questions or suggestions can also be addressed to Gabriel Mariano Marcelino <[gabriel.mm8@gmail.com](mailto:gabriel.mm8@gmail.com)>.
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..0a04128
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,165 @@
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+ This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+ 0. Additional Definitions.
+
+ As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+ "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+ An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+ A "Combined Work" is a work produced by combining or linking an
+Application with the Library. The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+ The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+ The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+ 1. Exception to Section 3 of the GNU GPL.
+
+ You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+ 2. Conveying Modified Versions.
+
+ If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+ a) under this License, provided that you make a good faith effort to
+ ensure that, in the event an Application does not supply the
+ function or data, the facility still operates, and performs
+ whatever part of its purpose remains meaningful, or
+
+ b) under the GNU GPL, with none of the additional permissions of
+ this License applicable to that copy.
+
+ 3. Object Code Incorporating Material from Library Header Files.
+
+ The object code form of an Application may incorporate material from
+a header file that is part of the Library. You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+ a) Give prominent notice with each copy of the object code that the
+ Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the object code with a copy of the GNU GPL and this license
+ document.
+
+ 4. Combined Works.
+
+ You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+ a) Give prominent notice with each copy of the Combined Work that
+ the Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the Combined Work with a copy of the GNU GPL and this license
+ document.
+
+ c) For a Combined Work that displays copyright notices during
+ execution, include the copyright notice for the Library among
+ these notices, as well as a reference directing the user to the
+ copies of the GNU GPL and this license document.
+
+ d) Do one of the following:
+
+ 0) Convey the Minimal Corresponding Source under the terms of this
+ License, and the Corresponding Application Code in a form
+ suitable for, and under terms that permit, the user to
+ recombine or relink the Application with a modified version of
+ the Linked Version to produce a modified Combined Work, in the
+ manner specified by section 6 of the GNU GPL for conveying
+ Corresponding Source.
+
+ 1) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (a) uses at run time
+ a copy of the Library already present on the user's computer
+ system, and (b) will operate properly with a modified version
+ of the Library that is interface-compatible with the Linked
+ Version.
+
+ e) Provide Installation Information, but only if you would otherwise
+ be required to provide such information under section 6 of the
+ GNU GPL, and only to the extent that such information is
+ necessary to install and execute a modified version of the
+ Combined Work produced by recombining or relinking the
+ Application with a modified version of the Linked Version. (If
+ you use option 4d0, the Installation Information must accompany
+ the Minimal Corresponding Source and Corresponding Application
+ Code. If you use option 4d1, you must provide the Installation
+ Information in the manner specified by section 6 of the GNU GPL
+ for conveying Corresponding Source.)
+
+ 5. Combined Libraries.
+
+ You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+ a) Accompany the combined library with a copy of the same work based
+ on the Library, uncombined with any other library facilities,
+ conveyed under the terms of this License.
+
+ b) Give prominent notice with the combined library that part of it
+ is a work based on the Library, and explaining where to find the
+ accompanying uncombined form of the same work.
+
+ 6. Revised Versions of the GNU Lesser General Public License.
+
+ The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+ If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
diff --git a/README.md b/README.md
index 07f9d93..a79cad2 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,48 @@
-# pymodulation
\ No newline at end of file
+# PyModulation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+## Overview
+
+> TODO
+
+## Dependencies
+
+* None
+
+## Installing
+
+This library can be installed directly from the source files:
+
+* ```python setup.py install```
+
+## Documentation
+
+The documentation page is available [here](https://mgm8.github.io/pymodulation/). Instructions to build the documentation page are described below.
+
+Contributing instructions are also available [here](https://github.com/mgm8/pyngham/blob/main/CONTRIBUTING.md).
+
+### Dependencies
+
+* [Sphinx](https://pypi.org/project/Sphinx/)
+
+### Building the Documentation
+
+The documentation pages can be built with Sphinx by running the following command inside the ``docs`` folder:
+
+* ```make html```
+
+## License
+
+This project is licensed under LGPLv3 license.
diff --git a/docs/Makefile b/docs/Makefile
new file mode 100644
index 0000000..d4bb2cb
--- /dev/null
+++ b/docs/Makefile
@@ -0,0 +1,20 @@
+# Minimal makefile for Sphinx documentation
+#
+
+# You can set these variables from the command line, and also
+# from the environment for the first two.
+SPHINXOPTS ?=
+SPHINXBUILD ?= sphinx-build
+SOURCEDIR = .
+BUILDDIR = _build
+
+# Put it first so that "make" without argument is like "make help".
+help:
+ @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
+
+.PHONY: help Makefile
+
+# Catch-all target: route all unknown targets to Sphinx using the new
+# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
+%: Makefile
+ @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
diff --git a/docs/conf.py b/docs/conf.py
new file mode 100644
index 0000000..688c1f2
--- /dev/null
+++ b/docs/conf.py
@@ -0,0 +1,28 @@
+# Configuration file for the Sphinx documentation builder.
+#
+# For the full list of built-in configuration values, see the documentation:
+# https://www.sphinx-doc.org/en/master/usage/configuration.html
+
+# -- Project information -----------------------------------------------------
+# https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information
+
+project = 'PyModulation'
+copyright = 'Copyright The PyModulation Contributors'
+author = 'Gabriel Mariano Marcelino'
+release = 'v0.0.0'
+
+# -- General configuration ---------------------------------------------------
+# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
+
+extensions = []
+
+templates_path = ['_templates']
+exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']
+
+
+
+# -- Options for HTML output -------------------------------------------------
+# https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output
+
+html_theme = 'alabaster'
+html_static_path = ['_static']
diff --git a/docs/index.rst b/docs/index.rst
new file mode 100644
index 0000000..5bead8e
--- /dev/null
+++ b/docs/index.rst
@@ -0,0 +1,20 @@
+.. PyModulation documentation master file, created by
+ sphinx-quickstart on Thu Apr 3 02:12:57 2025.
+ You can adapt this file completely to your liking, but it should at least
+ contain the root `toctree` directive.
+
+Welcome to PyModulation's documentation!
+========================================
+
+.. toctree::
+ :maxdepth: 2
+ :caption: Contents:
+
+
+
+Indices and tables
+==================
+
+* :ref:`genindex`
+* :ref:`modindex`
+* :ref:`search`
diff --git a/docs/make.bat b/docs/make.bat
new file mode 100644
index 0000000..32bb245
--- /dev/null
+++ b/docs/make.bat
@@ -0,0 +1,35 @@
+@ECHO OFF
+
+pushd %~dp0
+
+REM Command file for Sphinx documentation
+
+if "%SPHINXBUILD%" == "" (
+ set SPHINXBUILD=sphinx-build
+)
+set SOURCEDIR=.
+set BUILDDIR=_build
+
+%SPHINXBUILD% >NUL 2>NUL
+if errorlevel 9009 (
+ echo.
+ echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
+ echo.installed, then set the SPHINXBUILD environment variable to point
+ echo.to the full path of the 'sphinx-build' executable. Alternatively you
+ echo.may add the Sphinx directory to PATH.
+ echo.
+ echo.If you don't have Sphinx installed, grab it from
+ echo.https://www.sphinx-doc.org/
+ exit /b 1
+)
+
+if "%1" == "" goto help
+
+%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
+goto end
+
+:help
+%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
+
+:end
+popd
diff --git a/pymodulation/__init__.py b/pymodulation/__init__.py
new file mode 100644
index 0000000..275ccef
--- /dev/null
+++ b/pymodulation/__init__.py
@@ -0,0 +1,24 @@
+#
+# __init__.py
+#
+# Copyright The PyModulation Contributors.
+#
+# This file is part of PyModulation library.
+#
+# PyModulation library is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# PyModulation library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with PyModulation library. If not, see .
+#
+#
+
+from pymodulation.pymodulation import PyModulation
+from pymodulation.version import __version__
diff --git a/pymodulation/pymodulation.py b/pymodulation/pymodulation.py
new file mode 100644
index 0000000..5aa585d
--- /dev/null
+++ b/pymodulation/pymodulation.py
@@ -0,0 +1,22 @@
+#
+# pymodulation.py
+#
+# Copyright The PyModulation Contributors.
+#
+# This file is part of PyModulation library.
+#
+# PyModulation library is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# PyModulation library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with PyModulation library. If not, see .
+#
+#
+
diff --git a/pymodulation/version.py b/pymodulation/version.py
new file mode 100644
index 0000000..dcc6275
--- /dev/null
+++ b/pymodulation/version.py
@@ -0,0 +1,30 @@
+#
+# version.py
+#
+# Copyright The PyModulation Contributors.
+#
+# This file is part of PyModulation library.
+#
+# PyModulation library is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# PyModulation library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with PyModulation library. If not, see .
+#
+#
+
+__author__ = "Gabriel Mariano Marcelino"
+__copyright__ = "Copyright The PyModulation Contributors"
+__credits__ = ["Gabriel Mariano Marcelino"]
+__license__ = "LGPLv3"
+__version__ = "0.0.0"
+__maintainer__ = "Gabriel Mariano Marcelino"
+__email__ = "gabriel.mm8@gmail.com"
+__status__ = "Development"
diff --git a/pytest.ini b/pytest.ini
new file mode 100644
index 0000000..5215bc5
--- /dev/null
+++ b/pytest.ini
@@ -0,0 +1,2 @@
+[pytest]
+pythonpath = pymodulation
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 0000000..e69de29
diff --git a/setup.cfg b/setup.cfg
new file mode 100644
index 0000000..07f2f9d
--- /dev/null
+++ b/setup.cfg
@@ -0,0 +1,3 @@
+[bdist_rpm]
+packager = Gabriel Mariano Marcelino
+requires = python3
diff --git a/setup.py b/setup.py
new file mode 100644
index 0000000..2e6dbf6
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,66 @@
+#!/usr/bin/end python
+
+#
+# setup.py
+#
+# Copyright The PyModulation Contributors.
+#
+# This file is part of PyModulation library.
+#
+# PyModulation library is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# PyModulation library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with PyModulation library. If not, see .
+#
+#
+
+import setuptools
+import os
+
+exec(open('pymodulation/version.py').read())
+
+with open("README.md", "r") as fh:
+ long_description = fh.read()
+
+setuptools.setup(
+ name = "pymodulation",
+ version = __version__,
+ author = "Gabriel Mariano Marcelino",
+ author_email = "gabriel.mm8@gmail.com",
+ maintainer = "Gabriel Mariano Marcelino",
+ maintainer_email = "gabriel.mm8@gmail.com",
+ url = "https://github.com/mgm8/pymodulation",
+ license = "LGPLv3",
+ description = "PyModulation library",
+ long_description = long_description,
+ long_description_content_type = "text/markdown",
+ platforms = ["Linux", "Windows", "Solaris", "Mac OS-X", "Unix"],
+ classifiers = [
+ "Development Status :: 5 - Production/Stable",
+ "Environment :: Console",
+ "Intended Audience :: Developers",
+ "Intended Audience :: Education",
+ "Intended Audience :: Science/Research",
+ "Intended Audience :: Telecommunications Industry",
+ "License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)",
+ "Natural Language :: English",
+ "Operating System :: OS Independent",
+ "Programming Language :: Python :: 3",
+ "Topic :: Communications :: Ham Radio",
+ "Topic :: Education",
+ "Topic :: Scientific/Engineering",
+ "Topic :: Software Development :: Libraries",
+ "Topic :: Software Development :: Libraries :: Python Modules"
+ ],
+ download_url = "https://github.com/mgm8/pymodulation/releases",
+ packages = setuptools.find_packages(),
+ install_requires = [],
+)
diff --git a/tests/README.md b/tests/README.md
new file mode 100644
index 0000000..b38171b
--- /dev/null
+++ b/tests/README.md
@@ -0,0 +1,9 @@
+# Tests
+
+The unit tests can be executed using PyTest, with the following command:
+
+```
+pytest tests/
+```
+
+The command above execute all tests presented in the "tests" folder. Each test can also be executed individually by running pytest with a specific test script.
diff --git a/tests/__init__.py b/tests/__init__.py
new file mode 100644
index 0000000..3a7df33
--- /dev/null
+++ b/tests/__init__.py
@@ -0,0 +1,21 @@
+#
+# __init__.py
+#
+# Copyright The PyModulation Contributors.
+#
+# This file is part of PyModulation library.
+#
+# PyModulation library is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# PyModulation library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with PyModulation library. If not, see .
+#
+#