diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
index 97aff48..6edf4c5 100644
--- a/CODE_OF_CONDUCT.md
+++ b/CODE_OF_CONDUCT.md
@@ -60,7 +60,7 @@ representative at an online or offline event.
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at
-ENTER_YOUR_EMAIL_ADDRESS.
+sam.louvito@gmail.com.
All complaints will be reviewed and investigated promptly and fairly.
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index b899aff..d814132 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,6 +1,6 @@
-# template-python-repository pull request guidelines
+# eeg_research pull request guidelines
-Pull requests are always welcome, and we appreciate any help you give. Note that a code of conduct applies to all spaces managed by the template-python-repository project, including issues and pull requests. Please see the [Code of Conduct](CODE_OF_CONDUCT.md) for details.
+Pull requests are always welcome, and we appreciate any help you give. Note that a code of conduct applies to all spaces managed by the eeg_research project, including issues and pull requests. Please see the [Code of Conduct](CODE_OF_CONDUCT.md) for details.
When submitting a pull request, we ask you to check the following:
diff --git a/LICENSE b/LICENSE
index 20566e6..0a04128 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,21 +1,165 @@
-MIT License
-
-Copyright (c) 2023 Child Mind Institute
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
+ 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 d47182c..2bdf2ac 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,7 @@
[![DOI](https://zenodo.org/badge/657341621.svg)](https://zenodo.org/doi/10.5281/zenodo.10383685)
# Todo
-- [ ] Run `setup_template.py` to initialize the repository.
+- [x] Run `setup_template.py` to initialize the repository.
- [ ] Replace the content of this `README.md` with details specific to your project.
- [ ] Install the `pre-commit` hooks to ensure code quality on each commit.
- [ ] Revise SECURITY.md to reflect supported versions or remove it if not applicable.
@@ -12,12 +12,12 @@
# EEG research
-[![Build](https://github.com/childmindresearch/template-python-repository/actions/workflows/test.yaml/badge.svg?branch=main)](https://github.com/childmindresearch/template-python-repository/actions/workflows/test.yaml?query=branch%3Amain)
-[![codecov](https://codecov.io/gh/childmindresearch/template-python-repository/branch/main/graph/badge.svg?token=22HWWFWPW5)](https://codecov.io/gh/childmindresearch/template-python-repository)
+[![Build](https://github.com/childmindresearch/eeg_research/actions/workflows/test.yaml/badge.svg?branch=main)](https://github.com/childmindresearch/eeg_research/actions/workflows/test.yaml?query=branch%3Amain)
+[![codecov](https://codecov.io/gh/childmindresearch/eeg_research/branch/main/graph/badge.svg?token=22HWWFWPW5)](https://codecov.io/gh/childmindresearch/eeg_research)
[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
![stability-stable](https://img.shields.io/badge/stability-experimental-red.svg)
-[![MIT License](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/childmindresearch/template-python-repository/blob/main/LICENSE)
-[![pages](https://img.shields.io/badge/api-docs-blue)](https://childmindresearch.github.io/template-python-repository)
+[![LGPL--3.0 License](https://img.shields.io/badge/license-LGPL--3.0-blue.svg)](https://github.com/childmindresearch/eeg_research/blob/main/LICENSE)
+[![pages](https://img.shields.io/badge/api-docs-blue)](https://childmindresearch.github.io/eeg_research)
The purpose of this monorepository is to group all software tools and pipelines related to EEG (experiment, cleaning, analysis etc.)
diff --git a/SECURITY.md b/SECURITY.md
index 9fd57bf..4556d32 100644
--- a/SECURITY.md
+++ b/SECURITY.md
@@ -15,6 +15,6 @@ Note which version(s) will receive security updates. For example:
## Reporting Vulnerabilities
-To report security vulnerabilities, please do NOT use our issues page. Instead, kindly email us at ENTER_YOUR_EMAIL_ADDRESS. Please refrain from using other communication channels.
+To report security vulnerabilities, please do NOT use our issues page. Instead, kindly email us at sam.louvito@gmail.com. Please refrain from using other communication channels.
For non-security-related issues, we welcome your input and feedback on our issues page. Feel free to share your ideas and suggestions to help us improve our services.
diff --git a/pyproject.toml b/pyproject.toml
index 38d783d..9bd4ba6 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,11 +1,11 @@
[tool.poetry]
-name = "app-name"
+name = "eeg_research"
version = "0.1.0"
-description = "A beautiful description."
-authors = ["Reinder Vos de Wael "]
+description = "All tools and pipelines developed for eeg research"
+authors = ["Samuel Louviot "]
license = "LGPL-2.1"
readme = "README.md"
-packages = [{include = "APP_NAME", from = "src"}]
+packages = [{include = "eeg_research", from = "src"}]
[tool.poetry.dependencies]
python = "~3.11"
diff --git a/setup/__init__.py b/setup/__init__.py
deleted file mode 100644
index 5b41398..0000000
--- a/setup/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-"""Module for code required by the setup_template.py script."""
diff --git a/setup/licenses.py b/setup/licenses.py
deleted file mode 100644
index 6633d2b..0000000
--- a/setup/licenses.py
+++ /dev/null
@@ -1,128 +0,0 @@
-"""Functions for fetching and replacing the license file."""
-
-from __future__ import annotations
-
-import json
-import re
-from datetime import datetime
-from typing import Optional
-from urllib import request
-
-from setup import settings
-
-DIR_REPO = settings.DIR_REPO
-LICENSES = settings.LICENSES
-
-
-def get_license(name: str) -> dict[str, str]:
- """Fetches the license files from GitHub.
-
- Args:
- name: The name of the license to fetch.
-
- Returns:
- The license text.
-
- """
- if name not in LICENSES:
- raise ValueError(f"License {name} is not in {LICENSES}.")
- with request.urlopen(f"https://api.github.com/licenses/{name}") as response:
- license_info = response.read().decode()
- return json.loads(license_info)
-
-
-def modify_license_placeholder_text(selected_license: dict[str, str]) -> dict[str, str]:
- """Modifies the placeholder text in the license.
-
- Args:
- selected_license: The license to modify.
-
- Returns:
- The modified license.
-
- """
- if selected_license["key"] == "mit":
- license_holder = input("Who is the holder of the license? ")
- current_year = datetime.now().year
- selected_license["body"] = selected_license["body"].replace(
- "[year]",
- str(current_year),
- )
- selected_license["body"] = selected_license["body"].replace(
- "[fullname]",
- license_holder,
- )
-
- return selected_license
-
-
-def request_license() -> Optional[dict[str, str]]:
- """Asks the user to select a license.
-
- Returns:
- The path to the selected license.
-
- """
- print("Available licenses:")
- print("\t0. No license")
- for i, option in enumerate(LICENSES):
- print(f"\t{i + 1}. {option}")
- while True:
- try:
- choice = int(input("Enter the number of the license you want to use: "))
- if choice == 0:
- return None
- if 0 < choice <= len(LICENSES):
- selected_license = get_license(LICENSES[choice - 1])
- break
- raise ValueError("Invalid choice. Please try again.")
- except ValueError:
- print("Invalid choice. Please try again.")
-
- final_license = modify_license_placeholder_text(selected_license)
- return final_license
-
-
-def replace_license_badge(content: str, repo_license: Optional[dict[str, str]]) -> str:
- """Replaces the license badge with the specified license.
-
- Args:
- content: Content of any file that might contain a license badge.
- repo_license: The license to replace the current license with. If None,
- the current license badge will be deleted.
-
- Returns:
- The content with the license badge replaced.
- """
- if repo_license is None:
- # remove line containing license badge
- return re.sub(
- r"\[!\[.*License\]\(https://img\.shields\.io/badge/license.*\)\]\(.*\)\n",
- "",
- content,
- )
- # shield.io uses -- as an escape character, so we need to replace - with --
- license_name_upper = repo_license["key"].upper().replace("-", "--")
- return content.replace(
- "![MIT License]" "(https://img.shields.io/badge/license-MIT-blue.svg)]",
- f"![{license_name_upper} License]"
- f"(https://img.shields.io/badge/license-{license_name_upper}-blue.svg)]",
- )
-
-
-def replace_license(repo_license: Optional[dict[str, str]]) -> None:
- """Replaces the license file in the repository with the specified license.
-
- Args:
- repo_license: The license to replace the current license with. If None,
- the current license file will be deleted.
-
- """
- license_file = DIR_REPO / "LICENSE"
- license_file.unlink(missing_ok=True)
-
- if repo_license is None:
- return
-
- with open(license_file, "w", encoding="utf-8") as file_buffer:
- file_buffer.write(repo_license["body"])
diff --git a/setup/settings.py b/setup/settings.py
deleted file mode 100644
index cd8faa8..0000000
--- a/setup/settings.py
+++ /dev/null
@@ -1,14 +0,0 @@
-"""Constants for the setup module."""
-
-import pathlib as pl
-
-DIR_REPO = pl.Path(__file__).parent.parent
-LICENSES = ("mit", "lgpl-2.1", "lgpl-3.0", "mpl-2.0", "unlicense")
-TARGET_EXTENSIONS = {
- ".py",
- ".md",
- ".yml",
- ".yaml",
- ".toml",
- ".txt",
-}
diff --git a/setup_template.py b/setup_template.py
deleted file mode 100644
index 551b918..0000000
--- a/setup_template.py
+++ /dev/null
@@ -1,120 +0,0 @@
-#!/usr/bin python3
-"""Setup template for Python repositories."""
-
-import os
-import pathlib as pl
-import shutil
-
-from setup import licenses, settings
-
-DIR_REPO = settings.DIR_REPO
-TARGET_EXTENSIONS = settings.TARGET_EXTENSIONS
-
-
-def main() -> None:
- """Entrypoint to the template setup script.
-
- This script will ask the user for details of the repository and then replace
- the template values with the user input. It will also remove the setup files
- and the setup directory.
- """
- # Collect some data
- git_uncommitted_changes = (
- os.popen(f"git -C {DIR_REPO} status -s").read().strip() != ""
- )
- git_username = os.popen(f"git -C {DIR_REPO} config user.name").read().strip()
- git_email = os.popen(f"git -C {DIR_REPO} config user.email").read().strip()
- git_repo_name = (
- os.popen(f"git -C {DIR_REPO} remote get-url origin")
- .read()
- .split("/")[-1]
- .split(".")[0]
- .strip()
- )
-
- # Ask for some data
- if git_uncommitted_changes:
- print("You have uncommitted changes. Please commit or stash them first.")
- exit(1)
- repo_name = (
- input(f"Enter the name of the repository [{git_repo_name}]: ").strip()
- or git_repo_name
- )
- module_name = (
- input(f"Enter the name of the module [{repo_name}]: ").strip() or repo_name
- )
- username = input(f"Enter your username [{git_username}]: ").strip() or git_username
- email = input(f"Enter your email [{git_email}]: ").strip() or git_email
- description = (
- input("Enter a short description of the project: ").strip()
- or "A beautiful description."
- )
- repo_license = licenses.request_license()
-
- # Print the data
- print(
- f"Using the following values:\n"
- f"\tRepository name: '{repo_name}'\n"
- f"\tModule name: '{module_name}'\n"
- f"\tAuthor: '{username} <{email}'>\n"
- f"\tDescription: '{description}'\n"
- f"\tLicense: '{repo_license['name'] if repo_license else 'No license'}'",
- )
- input("Press enter to continue...")
-
- # Replace the template values
- for file in pl.Path(DIR_REPO).glob("**/*"):
- if (
- not file.is_file()
- or file.suffix not in TARGET_EXTENSIONS
- or file.name == "setup_template.py"
- ):
- continue
-
- with open(file, encoding="utf-8") as f:
- content = f.read()
-
- content_before = content
- content = content.replace(
- "- [ ] Run `setup_template.py`",
- "- [x] Run `setup_template.py`",
- )
- content = content.replace(
- "- [ ] Update the `LICENSE`",
- "- [x] Update the `LICENSE`",
- )
- content = content.replace("template-python-repository", repo_name)
- content = content.replace("APP_NAME", module_name)
- content = content.replace("app-name", module_name)
- content = content.replace("A beautiful description.", description)
- content = content.replace("reinder.vosdewael@childmind.org", email)
- content = content.replace("ENTER_YOUR_EMAIL_ADDRESS", email)
- content = content.replace("Reinder Vos de Wael", username)
-
- content = licenses.replace_license_badge(content, repo_license)
-
- if content != content_before:
- print(f"Updating {file.relative_to(DIR_REPO)}")
- with open(file, "w", encoding="utf-8") as f:
- f.write(content)
-
- licenses.replace_license(repo_license)
-
- dir_module = DIR_REPO / "src" / "APP_NAME"
- if dir_module.exists():
- dir_module.rename(dir_module.parent / module_name)
-
- # Remove setup files
- print("Removing setup files.")
- setup_files = pl.Path(DIR_REPO / "setup").glob("*.py")
- for setup_file in setup_files:
- pl.Path(DIR_REPO / "setup" / setup_file).unlink()
- if pl.Path(DIR_REPO / "setup" / "__pycache__").exists():
- # Use a more robust method to remove the cache directory
- shutil.rmtree(DIR_REPO / "setup" / "__pycache__")
- pl.Path(DIR_REPO / "setup").rmdir()
- pl.Path(__file__).unlink()
-
-
-if __name__ == "__main__":
- main()
diff --git a/src/APP_NAME/__init__.py b/src/APP_NAME/__init__.py
deleted file mode 100644
index 7cff8c5..0000000
--- a/src/APP_NAME/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-""".. include:: ../../README.md""" # noqa: D415
diff --git a/src/APP_NAME/algorithms.py b/src/APP_NAME/algorithms.py
deleted file mode 100644
index 020e25f..0000000
--- a/src/APP_NAME/algorithms.py
+++ /dev/null
@@ -1,23 +0,0 @@
-"""Example functions for APP_NAME."""
-
-
-def fibonacci(n: int) -> int:
- """Return the n-th Fibonacci number.
-
- Args:
- n: The index of the Fibonacci number to return.
-
- Returns:
- The n-th Fibonacci number.
- """
- if n < 0:
- raise ValueError("n must be non-negative")
-
- if int(n) != n:
- raise ValueError("n must be an integer")
-
- if n == 0:
- return 0
- if n <= 2:
- return 1
- return fibonacci(n - 1) + fibonacci(n - 2)
diff --git a/tests/test_fibonacci.py b/tests/test_fibonacci.py
index b09e49c..fcd1738 100644
--- a/tests/test_fibonacci.py
+++ b/tests/test_fibonacci.py
@@ -2,7 +2,7 @@
import pytest
-from APP_NAME import algorithms
+from eeg_research import algorithms
def test_fibonacci_success_0() -> None: