diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..5ea1dfe --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,91 @@ +# Basic workflow +name: build + +# Controls when the action will run +# Workflow begins with push or PR events +# Focuses on the master branch only +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + +# Create one single job +# This job performs all necessary checks +jobs: + build: + # Use the latest version of Ubuntu on Microsoft Azure + runs-on: ubuntu-latest + strategy: + matrix: + # Performs all actions on different versions of Python + python-version: ["3.10"] + # Define the workflow steps + steps: + # Checkout the code of the repository + - name: Check out Repository Code + uses: actions/checkout@v2 + with: + fetch-depth: 0 + # Run the mdl linting tool + # Refers to .mdlrc file in repository + - name: Run Markdown Linting + uses: actionshub/markdownlint@main + # Setup Python for the current language version + - name: Setup Python ${{ matrix.python-version }} + if: always() + uses: actions/setup-python@v1 + with: + python-version: ${{ matrix.python-version }} + # Install pip + - name: Install Pip + if: always() + run: | + pip install -U pip + # Install poetry + - name: Install Poetry + if: always() + uses: abatilo/actions-poetry@v2.0.0 + with: + poetry-version: 1.1.8 + # Run the Python program + - name: Run Python Program + if: always() + run: | + cd rootfinder + poetry install + poetry run rootfinder + poetry run rootfinder --a 1 --b 1 --c 1 + poetry run rootfinder --a 1 --b 2 --c 1 + # Run the black code formatter in checking mode + - name: Run Black Code Formatter + run: | + cd rootfinder + poetry run task black + # Run the flake8 linting tool + - name: Run Flake8 Linting Tool + run: | + cd rootfinder + poetry run task flake8 + # Run the pydocstyle linting tool + - name: Run Pydocstyle Linting Tool + run: | + cd rootfinder + poetry run task pydocstyle + # Run the pylint linting tool + - name: Run Pylint Linting Tool + run: | + cd rootfinder + poetry run task pylint + # Run the mypy type checking tool + - name: Run Mypy Type Checking Tool + run: | + cd rootfinder + poetry run task mypy + + # Run GatorGrader: see config/gatorgrade.yml + - name: Run GatorGrader with GatorGrade + if: always() + run: | + pip install gatorgrade + gatorgrade --config config/gatorgrade.yml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4a1bea0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,356 @@ +# Compiled source # +################### +*.class +*.o +*.so + +# Android # +########### +*.apk +*.ap_ +*.dex +local.properties + +# Packages # +############ +*.7z +*.dmg +*.gz +*.iso +*.jar +*.rar +*.tar +*.zip + +# LaTeX # +######### +*.aux +*.dvi +*.fdb_latexmk +*.fls +*.lof +*.log +*.lot +*.out +*.pdf +*.ps +*.tex~ +*.toc +*_minted* + +# Bibliography aux files (bibtex/biblatex/biber) # +################################################## +*.bbl +*.bcf +*.blg +*-blx.aux +*-blx.bib +*.run.xml + +## Build tool auxiliary files # +############################### +*.fdb_latexmk +*.synctex.gz +*.pdfsync +*.synctex.gz(busy) + +# Algorithms # +############## +*.alg +*.loa + +# Theorems # +############ +*.thm + +# Beamer # +########## +*.nav +*.snm +*.vrb + +# Glossaries # +############## +*.acn +*.acr +*.glg +*.glo +*.gls + +# Hyperref # +############ +*.brf + +# Listings # +############ +*.lol + +# Makeidx # +########### +*.idx +*.ilg +*.ind +*.ist + +# Minitoc # +########### +*.maf +*.mtc +*.mtc0 + +# Minted # +########## +*.pyg + +# Nomencl # +########### +*.nlo + +# Todonotes # +############# +*.tdo + +# Xindy # +######### +*.xdy + +# Vim # +####### +*.project.vim +[._]*.s[a-w][a-z] +[._]s[a-w][a-z] +*.un~ +Session.vim +.netrwhist +*~ + +# Ant # +####### +*.ant_targets + +# Java # +######## + +# Compiled class file # +####################### +*.class + +# Log file # +######## +*.log + +# BlueJ files # +############### +*.ctxt + +# Mobile Tools for Java (J2ME) # +################################ +.mtj.tmp/ + +# Package Files # +################# +*.jar +*.war +*.nar +*.ear +*.zip +*.tar.gz +*.rar + +# JVM # +####### +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + +# Gradle # +########## +.gradle +gradle +/build +/buildSrc/build +/subprojects/*/build +/subprojects/docs/src/samples/*/*/build +/subprojects/internal-android-performance-testing/build-android-libs + +# Python # +########## +__pycache__/ +*.py[cod] +*$py.class +*.so +.Python +env/ +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +include/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +*.egg-info/ +.installed.cfg +*.egg +*.manifest +*.spec +pip-log.txt +pip-delete-this-directory.txt +htmlcov/ +.tox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*,cover +.hypothesis/ +*.mo +*.pot +*.log +local_settings.py +instance/ +.webassets-cache +.scrapy +docs/_build/ +target/ +.python-version +celerybeat-schedule +.env +.venv/ +venv/ +ENV/ +bin/ +share/ +lib64 +pip-selfcheck.json +pyvenv.cfg + +# R # +##### +*-Ex.R +*.RData +*.Rdata +*.Rhistory +*.Rincr_history + +# Ctags # +######### +tags +.tags +tags.lock +tags.temp +tags.tmp + +# Extra files # +############### +*.xmi +*.sync +*.jekyll-metadata + +# Editor Suggestions # +###################### + +# Vim # +####### +# Swap +[._]*.s[a-v][a-z] +[._]*.sw[a-p] +[._]s[a-rt-v][a-z] +[._]ss[a-gi-z] +[._]sw[a-p] + +# Session +Session.vim +Sessionx.vim + +# Temporary +.netrwhist +*~ +# Auto-generated tag files +tags +# Persistent undo +[._]*.un~ + +# VSCode # +########## +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json + +# Atom # +######## +.eslintcache +Thumbs.db +.project +.svn +.nvm-version +.vscode +node_modules +npm-debug.log +debug.log +/tags +/atom-shell/ +/out/ +docs/output +docs/includes +spec/fixtures/evil-files/ +out/ +/electron/ + +# Operating Systems # +##################### + +# macOS # +######### +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +# Linux # +######### +*~ + +# temporary files which can be created if a process still has a handle open of a deleted file +.fuse_hidden* + +# KDE directory preferences +.directory + +# Linux trash folder which might appear on any partition or disk +.Trash-* + +# .nfs files are created when an open file is removed but is still being accessed +.nfs* + +# Poetry +poetry.lock diff --git a/.mdlrc b/.mdlrc new file mode 100644 index 0000000..08c46eb --- /dev/null +++ b/.mdlrc @@ -0,0 +1 @@ +rules "~MD013, ~MD026, ~MD033, ~MD034" diff --git a/GatorGrade.md b/GatorGrade.md new file mode 100644 index 0000000..1f9a0b5 --- /dev/null +++ b/GatorGrade.md @@ -0,0 +1,25 @@ +# GatorGrade + +### Checks for GatorGrade + +For immediate feedback on submissions, we will be using Gator Grade to inform the of missing components in the submission. As you submit, you will notice that there is a thick red X that will change to a green check mark when all components have been included in the submission. You are encouraged to click on the red X to find a listing of the components to address. + +You can check the baseline writing and commit requirements for this lab assignment by running the department's assignment checking `gatorgrade` tool. To use `gatorgrade`, you first need to make sure you have Python3 installed (type `python --version` to check). If you do not have Python installed, please see: + +- [Setting Up Python on Windows](https://realpython.com/lessons/python-windows-setup/) +- [Python 3 Installation and Setup Guide](https://realpython.com/installing-python/) +- [How to Install Python 3 and Set Up a Local Programming Environment on Windows 10](https://www.digitalocean.com/community/tutorials/how-to-install-python-3-and-set-up-a-local-programming-environment-on-windows-10) + +Then, if you have not done so already, you need to install `gatorgrade`: + +- First, [install `pipx`](https://pypa.github.io/pipx/installation/) +- Then, install `gatorgrade` with `pipx install gatorgrade` + +Finally, you can run `gatorgrade`: `gatorgrade --config config/gatorgrade.yml` + +## Seeking Assistance + +* Extra resources for using markdown include; ++ [Markdown Tidbits](https://www.youtube.com/watch?v=cdJEUAy5IyA) ++ [Markdown Cheatsheet](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) +* Do not forget to use the above git commands to push your work to the cloud for the instructor to grade your assignment. You can go to your GitHub repository using your browser to verify that your files have been submitted. Please see the TL’s or the instructor if you have any questions about assignment submission. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..4567f79 --- /dev/null +++ b/README.md @@ -0,0 +1,47 @@ +# Junior Seminar (CMPSC 580) Exemplar Project Repository + +## Semester: Spring 2024 + +This repository contains student project materials, including project report, data, code, and references to literature for this departmentally-sponsored project. __As you complete each of the below sections in this document, please be sure to remove the preamble text so that it does not appear in your work.__ Please work with your first reader to answer any questions or concerns that you may have. + +## GitHub Handle: Add Your Name Here + +## Name: Add Your Name Here + +## Major: TODO (choose: CS, DS, INFM, SE) + +## Project Name: Enter The Name Of Your Project + +Here, think of an interesting name of the work that bring a freshness and excitement to the area of this project. Consider using a name that carries some information about what the project and provides some hint at what the project does without being too wordy. + +--- + +## Overview + +TODO (250 words minimum): Discuss the overview of the project using and building on the project description provided by the department. In this section, a concise summary is discussed of the study's key elements, offering the reader a quick understanding of the research's scope and goals. The section continues to outline the main topics, research questions, hypotheses, and /or theories in a clear and meaningful language to provide a type of roadmap for the reader to navigate the forthcoming details of the project. This section also needs to motivate the project by providing context for the study, outlining the current state of knowledge in the field, and highlighting any gaps or limitations in existing research. The section serves as a foundational guide that enables the reader to grasp the context of the study, in addition to its structure, before moving into a more technically-based discussion in the following sections of the article. In short, the "Overview" section needs to answer the `what` and `why` questions, that is `what is the project?` and `why is the project important?` + +## Literature Review + +TODO: Conduct literature review by describing relevant work related to the project and hence providing an overview of the state of the art in the area of the project. This section serves to contextualize the study within the existing body of literature, presenting a thorough review of relevant prior research and scholarly contributions. In clear and meaningful language, this section aims to demonstrate the problems, gaps, controversies, or unanswered questions that are associated with the current understanding of the topic. In addition, this section serves to highlight the current study's unique contribution to the field. By summarizing and critiquing existing works, this section provides a foundation for readers to appreciate the novelty and significance of the study in relation to the broader academic discourse. The "Literature Review" section further contributes to the `why is the project important?` question. The number of scholarly work included in the literature review may vary depending on the project. + +## Methods + +TODO: Discuss the methods of the project to be able to answer the `how` question (`how was this project completed?`). The methods section in an academic research outlines the specific procedures, techniques, and methodologies employed to conduct the study, offering a transparent and replicable framework for the research. It details the resources behind the work, in terms of, for example, the design of the algorithm and the experiment(s), data collection methods, applied software libraries, required tools, the types of statistical analyses and models which are applied to ensure the rigor and validity of the study. This section provides clarity for other researchers to understand and potentially replicate the study, contributing to the overall reliability and credibility of the research findings. + +## Using the Artifact + +TODO: The result of your work will be the delivery of some type of artifact which will likely contain software programming solutions (i.e., Python code, HTML pages, or similar). To allow the user to experience and execute your artifact, you must first explain how to set up the initial conditions to run or use the artifact. Be sure to offer explicit details and instructions regarding the installation of the necessary foundational libraries, drivers, external software projects, containers and similar types of tertiary software which are involved in executing your artifact. Once these initial software installations have been completed, then you are asked to offer the necessary instructions for actually executing the artifact. For this, please provide all command line parameters or associated bash commands for execution. Please remember that users are unwilling to "figure-out" how to use code in absence of the essential instructions concerning the execution of project artifacts. + +## Results and Outcomes + +TODO: Discuss the outcomes of your project in this section. Depending on the project type, the presented results and outcomes will vary. In some projects, you will be asked to present a theoretical analysis, and in others your experimental study and its results. In this section, you are also to demonstrate an enhanced version of your artifact by showing its capabilities and applications, in light of the evaluation metrics for assessing the artifact + +--- + +## Exemplar Projects Discussions + +The department's project descriptions can be found at [https://github.com/ReadyResearchers-2023-24/cmpsc-580-exemplar-projects](https://github.com/ReadyResearchers-2023-24/cmpsc-580-exemplar-projects) + +## Schedule + +The schedule for this work can be found at [https://github.com/CMPSC-580-Allegheny-College-Spring-2024/classDocs?tab=readme-ov-file#schedule](https://github.com/CMPSC-580-Allegheny-College-Spring-2024/classDocs?tab=readme-ov-file#schedule) \ No newline at end of file diff --git a/config/gatorgrade.yml b/config/gatorgrade.yml new file mode 100644 index 0000000..549f9f7 --- /dev/null +++ b/config/gatorgrade.yml @@ -0,0 +1,27 @@ +# --> check the technical writing for various characteristics +- README.md: + - description: Ensure that the README.md file exists in the root/ directory + check: ConfirmFileExists + - description: Complete all TODOs, remove the TODO markers, and rewrite comments for the reflection + check: MatchFileFragment + options: + fragment: TODO + count: 0 + exact: true + - description: Delete the 'Add Your Name Here' prompt in the reflection file + check: MatchFileFragment + options: + fragment: "Add Your Name Here" + count: 0 + exact: true + - description: Delete the 'Enter The Name Of Your Project' prompt in the reflection file + check: MatchFileFragment + options: + fragment: "Add Your Name Here" + count: 0 + exact: true + # count number of commits in the GitHub repository +- description: Have at least at least 10 commits in repository + check: CountCommits + options: + count: 10 diff --git a/data/README.md b/data/README.md new file mode 100644 index 0000000..eb3d82d --- /dev/null +++ b/data/README.md @@ -0,0 +1,6 @@ +# This directory is to store the data necessary for the project. + +Use this directory to store a small amount of data which may be used to showcase or demonstrate the use of the project. Please note, due to GitHub's repository size limitations, not all the project's data may be stored in this repository. For projects requiring large amounts of data, it is recommended excessive amounts of data be left outside of this repository, and placed in another type of archive. + +Please be sure to reference the project's data and to describe in this README file how to obtain and setup the data so that it may be used +with the project. This information should also be placed in your Method Section. diff --git a/src/README.md b/src/README.md new file mode 100644 index 0000000..1f9735f --- /dev/null +++ b/src/README.md @@ -0,0 +1,3 @@ +# All source code for the project is to be placed here + +Special note: please be sure to mention any special setup procedures which are necessary to prepare the software for running. Such information should cover libraries and extraneous software to install in order to be able to run the software or artifact of this project. This discussion should also be placed in your Method Section.