{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## <p style=\"text-align: right;\"> &#9989; Put your name here</p>\n",
    "#### <p style=\"text-align: right;\"> &#9989; Put your group member names here</p>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Day 08 In-Class Assignment: Git Started\n",
    "\n",
    "<img src=\"https://git-scm.com/images/logos/downloads/Git-Logo-2Color.png\" width=400px>\n",
    "* This assignment is based off content created by Dr. Dirk Colbry"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "\n",
    "### Learning goals:\n",
    "\n",
    "By the end of this assignment, you should be able to:\n",
    "\n",
    "* Be comfotable using Git\n",
    "* Solve merge conflicts of files using multiple methods\n",
    "* Utilize Version Control to repair or change current respository\n",
    "\n",
    "\n",
    "\n",
    "# Problem Description\n",
    "Git is a powerful tool that can be used both personally and collaboratively. However, like many powerful tools the operation of Git has a bit of a learning curve. There are many different tools and commands which allow for many different and interesting actions to be done.\n",
    "\n",
    "The purpose of the Pre-class and this In-class are to get you familiar with using Git and its capabilities. The commands learned will help with this class, as well as beyond. Git is a very popular tool among research groups, as well as industry.\n",
    "\n",
    "The concepts we will explore today will utilize Git's powerful ability to collaborate, as well as its tool of version control."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Agenda for today's class\n",
    "\n",
    "</p>\n",
    "\n",
    "1. Pre-class assignment review\n",
    "2. Cloning a repository and viewing its history\n",
    "3. Forking a Repository and Collaborating with Others\n",
    "4. Version Control\n",
    "5. More Git practice: Git repository \"Round Robin\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---\n",
    "# 1: Pre-class assignment review\n",
    "\n",
    "Did anyone have any specific issues with the pre-class assignment?\n",
    "\n",
    "Let's take a moment to highlight some key concepts. Discuss with your table the following prompts and write down a brief definition of each of these concepts.\n",
    "\n",
    "**Question:** Discuss what we are referring to when we say \"repository\".\n",
    "\n",
    "&#9989; Do This -  Write your disussion notes here.\n",
    "\n",
    "**Question:** Discuss what we mean by \"version history\" and \"version control\"\n",
    "\n",
    "&#9989; Do This -  Write your disussion notes here.\n",
    "\n",
    "**Question:** Discuss the difference between `git add`, `git commit`, and `git push`\n",
    "\n",
    "&#9989; Do This -  Write your disussion notes here.\n",
    "\n",
    "**Question:** Discuss what you must do to `.ipynb` notebook files before adding and commiting them.\n",
    "\n",
    "&#9989; Do This -  Write your disussion notes here.\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "*Below are all of the important commands we learned in the pre-class assignment. Please review these and if any were unclear to you please ask.*\n",
    "\n",
    "```\n",
    "cd [NAME_OF_FOLDER_CREATED]\n",
    "cd -  -->  (Moves back to previous directory you just came from and prints that directories name)\n",
    "ls\n",
    "pwd\n",
    "clear\n",
    "jupyter notebook\n",
    "cp [FILENAME] [NEW_FILENAME]\n",
    "rm [FILENAME]\n",
    "cat [FILENEAME]\n",
    "cat > [FILENAME] --> (Shortcut way of creating new file and adding text to it)\n",
    "vi [FILENAME]  -->  (Opens file in Vim text editor)\n",
    "git config --global user.name \"Your name here\"\n",
    "git config --global user.email \"your_email@example.com\"\n",
    "git status\n",
    "git log\n",
    "git checkout [HASH]\n",
    "git checkout master\n",
    "git checkout [FILENAME]\n",
    "git pull\n",
    "git fetch origin\n",
    "git diff [FILENAME]\n",
    "git init .\n",
    "git add [FILENAME]\n",
    "git add [FOLDERNAME]/[FILENAME]  -->  (You can add files that are inside of other folders)\n",
    "git commit -m \"[COMMIT_MESSAGE]\"\n",
    "git reset\n",
    "git push\n",
    "```"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---\n",
    "# 2: Cloning a repository and viewing its history\n",
    "The Github platfrom is a powerful space where there exists both public and private repositories ranging across many different topics. Many repositories are free to be cloned at anytime, and often many contain useful tools or tutorials. Lets explore a few.\n",
    " \n",
    "&#9989; Do This - Change current working directory to \"~/CMSE202/repos\" (remember `cd` is the change directory command) and run the following commands:  \n",
    "\n",
    "`git clone https://github.com/fperez/science-journal-demo`\n",
    "\n",
    "`cd science-journal-demo`\n",
    "\n",
    "`jupyter notebook` (If you are using JupyterHub you cannot do this, you will need to navigate to this folder from your home tree)\n",
    "\n",
    "**Question:** What does this git repository do?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font size=8 color=\"#009600\">&#9998;</font> Do This - Erase the contents of this cell and replace it with your answer to the above question!  (double-click on this text to edit this cell, and hit shift+enter to save the text)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Question:** As a group, brainstorm things you could do with the tools provided in the \"science-journal\" demo.  "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font size=8 color=\"#009600\">&#9998;</font> Do This - Erase the contents of this cell and replace it with your answer to the above question!  (double-click on this text to edit this cell, and hit shift+enter to save the text)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Question:** Using `git log`, at what moment in time (Date Hour:Min:Sec Year) was this repostiory first created?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font size=8 color=\"#009600\">&#9998;</font>  Do This - Erase the contents of this cell and replace it with your answer to the above question!"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---\n",
    "# 3: Forking a Repository and Collaborating with Others\n",
    "    \n",
    "## Forking the respository\n",
    "First, in order to collaborate with your team, you will need to make a repository that your whole group can edit and push to. In order to do this, your group will need to create what is known as a \"Fork\" of a respository. By \"Forking\" a repository the repository you \"forked\" will be copied completely (every commit and all) and the copied repository will be put under the account of who copied it (So pretty much allowing you to mess around with the repository with no way of messing up the original repostitory).  For this assignment the \"leader\" of your group will be the one that \"forks\" the repository.\n",
    "\n",
    "**With your group, designate somone as \"leader\" who** ***has the ability to share their screen on Zoom*** **and** ***Requested a Student Pack.***  **The leader must then do the following:**  \n",
    "1. **Visit [GitHub](https://github.com/) and make sure they are signed in.**  \n",
    "2. **Share screen on Zoom so the group can see your screen.**\n",
    "3. **Visit [https://github.com/mcint170/CMSE202_Git_Started.git](https://github.com/mcint170/CMSE202_Git_Started.git) and \"Fork\" the repository by clicking the \"Fork\" button.**\n",
    "    <img src=\"https://upload.wikimedia.org/wikipedia/commons/3/38/GitHub_Fork_Button.png\" />\n",
    "4. **Once Fork is complete, you should be re-directed to the repository. Go to \"Settings\" and click on the \"Manage accesss\" tab on the left side.**\n",
    "5. **Invite everyone in the group to be a collaborator.**\n",
    "\n",
    "**Then** ***everyone*** **in the group must clone this repository into `~/CMSE202/repos` and navigate inside of cloned repository.**\n",
    "\n",
    "**Question:** What is the url you used to clone this repository?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font size=8 color=\"#009600\">&#9998;</font> Do This - Erase the contents of this cell and replace it with your answer to the above question!  (double-click on this text to edit this cell, and hit shift+enter to save the text)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Adding files to shared repository\n",
    "Working the in same repository can take many forms. The most simplest form of collaboration is adding files to a shared repository. Before we dive in, here is a general formula for success when adding files to a shared repository.\n",
    "\n",
    "1. Always make sure the first thing you do before adding files is to make sure your repsitory is in good-standing and you are up to date. You can do that by running the below commands  \n",
    "    a. `git status` to check your version of the repository and if you have made any previously un-commited changes to Git.  \n",
    "    b. `git pull` to bring your version of the repository to the newest version (very-important)  \n",
    "2. Now you can add your files by running the following commands in order  \n",
    "    a. `git add [FILENAME]` (Remeber you can add files in folders as well `git add [FOLDER/FILENAME]`)    \n",
    "    b. `git commit -m \"[MESSAGE]\"`  \n",
    "    c. `git push`   \n",
    "\n",
    "**In the `CMSE202_Git_Started` repository you forked above, add a file (with a `.txt` ending) to the `bios` folder . The name of the file should be your first name. In the file put the name of your favorite food. Save the file and add, commit, and push the file**  \n",
    "\n",
    "There are many ways to create this file such as:  \n",
    "* With a GUI text editor such as `Spyder`, `Notepad` (Windows), or `TextEdit` (Mac).  \n",
    "* With a terminal text editor such as `Vim` or `Nano`.  \n",
    "* On the command line itself using a combination of `touch` and `echo` or using `cat >`.  \n",
    "\n",
    "**Question:** What tool did you use to create the file?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font size=8 color=\"#009600\">&#9998;</font> Do This - Erase the contents of this cell and replace it with your answer to the above question!  (double-click on this text to edit this cell, and hit shift+enter to save the text)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Working on the same file in a repository\n",
    "Perhaps one of the most powerful uses of Git is the ability to work on the same file as others and the ability to merge all the work together. However, this process comes with some extra baggage and can be a bit challenging at times. In order to make this a little easier here is a general formula you can follow that will bring success.  \n",
    "\n",
    "1. If the file you are wanting to update on the repository is a `.ipynb` file. **You should always** clear the output from that file. To clear the output, do the following:  \n",
    "\n",
    "        In the notebook click on Kernel -> Restart & Clear Output. Wait for that to finish (shouldn't take long) then save the file (this is important)  \n",
    "        \n",
    "2. Always make sure the first thing you do before adding or commiting changes is to make sure your repository is in good-standing and attempt to pull in all of the recent changes. You can do that by running the below commands  \n",
    "    a. `git status` to check your version of the repository and if you have made any previously un-commited changes to Git.  \n",
    "    b. `git pull` to bring in the newest version of the repository (if there are no conflicts) or to see what files have been changed and you will need to update before you can successful pull the newest verison of the repository.  \n",
    "3. If you *did not* run into a conflict while pulling, you can add, commit, and push like normal. **Make sure to let everyone in your group know before you add, commit, and push and let them know when you are done. If someone is in this process please wait for them to finish. You will most likey need to run through this process again before you can add, commit, or push.** If you *did* run into a conflict (which is very likely in this exercise) you will need continue along this guide.  \n",
    "4. Use `git diff [FILENAME]` to look at what is the conflict with the file that is different from the repository. If the `git diff` is muddied up with a bunch of characters and symbols, this mostly is because the last person to push did not clear their output before commitng. If this is the case, polietly let them know and continue on.  \n",
    "5. Using the copy command, copy your version of the file to the same file name, but with an extra tag such your name or intials. (Example: `cp example.txt example_NAME.txt)`.  \n",
    "6. Then checkout the file using `git checkout [FILENAME]`. This will replace the file with the file on the GitHub repository.  \n",
    "7. Using the copy of the file you created as reference, edit the recently checked out file to include the changes you would like to push into the repository.   \n",
    "8. Go back to step 1 and repeat the whole process until you have success on step 3.\n",
    "\n",
    "*Note: After compeleting this process you are free to remove the extra copy of the file you created. You can do this via the `rm` command (`rm example.txt`)*\n",
    "\n",
    "**In the `CMSE202_Git_Started` repository you forked above, open the `Great_Lakes_and_Grand_River.ipynb` and as a group, decided who will complete what part. It is cruical each person does their own part. Do not worry if you do not have enough group memebers to cover every part, you are only expected to complete one part individually. After completing the part, use the above guide to update the repository. If you were the first to complete a part, you may not have run into any conflicts. If this is the case, after someone else pushes thier changes, go back and alter your code a little so that way you can experince a conflict.**\n",
    "\n",
    "**Do not move on to \"4: Version Control\" until everyone is done. Once everyone is done, everyone should do a `git pull` on the `CMSE202_Git_Started` forked repository**\n",
    "\n",
    "**Question:** What part did you complete?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font size=8 color=\"#009600\">&#9998;</font> Do This - Erase the contents of this cell and replace it with your answer to the above question!  (double-click on this text to edit this cell, and hit shift+enter to save the text)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Question:** How many times did you need to run through the process above?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font size=8 color=\"#009600\">&#9998;</font> Do This - Erase the contents of this cell and replace it with your answer to the above question!  (double-click on this text to edit this cell, and hit shift+enter to save the text)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---\n",
    "# 4: Version Control\n",
    "\n",
    "## Forking the repository\n",
    "Now we will fork the `CMSE202_Git_Started` repository that you were just working on in order to create your own copy of the repository. Since the leader already has a fork they can use that repository. However, everone will still need to create a new directory in thier `~/CMSE/repos` directory as instructed below.\n",
    "\n",
    "**Now everyone, except for the leader, must fork the `CMSE202_Git_Started` repository you were just working on. If you need a refresher on how to do that look in the previous section.**\n",
    "\n",
    "**Everyone, including the leader, must now take thier own forked repository and `git clone` it into `~/CMSE/repos` under a slighlty different name. It is suggested you use the same folder name, but with your name or intials as a tag. To do this you can use the command `git clone [URL] CMSE202_Git_Started_YOURNAME`**.\n",
    "\n",
    "**Question:** What is the command you used to clone the forked repository?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font size=8 color=\"#009600\">&#9998;</font> Do This - Erase the contents of this cell and replace it with your answer to the above question!  (double-click on this text to edit this cell, and hit shift+enter to save the text)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Using Version Control\n",
    "Another one of Gits powerful tools is its ability to keep track of all the changes the repository goes through from commit to commit. This allows for any user to go backwards and forwards in time and be able to see the repository as it stood at each commit.\n",
    "\n",
    "### Part 1:\n",
    "We will be utilizing version control to \"fix\" the `Grand River` section of the `Great_Lakes_and_Grand_River.ipynb` notebook. However, make sure that you are now in your **newly forked repository** and editing the notebook **this is important**.\n",
    "\n",
    "**Open the notebook and see if you can spot where the error is (*Hint: Look at where it gets the data*). Discuss this with your group**\n",
    "\n",
    "**Question:** Why bug is there? What lines of code appears to be the problem?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font size=8 color=\"#009600\">&#9998;</font> Do This - Erase the contents of this cell and replace it with your answer to the above question!  (double-click on this text to edit this cell, and hit shift+enter to save the text)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Part 2:\n",
    "The last update to that section happen under the commit \"Updated the Grand River of notebook to pull Grand River Data from the web\". Prior to this the section was fully functioning. \n",
    "\n",
    "**Using `git log` find the commit that happen** ***before*** **the \"Updated the Grand River to pull Grand River Data from the web\" commit. Then using `git chekout [HASHNUMBER]` travel back to that commit.**\n",
    "\n",
    "**Question:** What is the hash number and comment of that Commit?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font size=8 color=\"#009600\">&#9998;</font> Do This - Erase the contents of this cell and replace it with your answer to the above question!  (double-click on this text to edit this cell, and hit shift+enter to save the text)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Question:** What appears to be different about the section? Where does the plot pull its data from? What is the name of the file?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font size=8 color=\"#009600\">&#9998;</font> Do This - Erase the contents of this cell and replace it with your answer to the above question!  (double-click on this text to edit this cell, and hit shift+enter to save the text)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Part 3:\n",
    "Having done a little digging, you are now ready to \"fix\" the section. In order to do this, you can follow a general formula that should lead you to success\n",
    "\n",
    "1. Make sure you are back to the current commit of the respository. You can do this by running the command `git checkout master`.\n",
    "2. Using the copy function, as you did eariler in this notebook, copy your current file as a new slightly different name (`Great_Lakes_and_Grand_River_NAME.ipynb`).\n",
    "3. Using `git checkout [HASH] Great_Lakes_and_Grand_River.ipynb` bring the old notebook to the future and also bring the data file to the future. Use that old notebook to edit the copy (`Great_Lakes_and_Grand_River_NAME.ipynb`) of the notebook you just made.\n",
    "4. Now using the latest commit hash (which you can find using `git log`) bring back the notebook to its most up to date form.\n",
    "5. Update the notebook with the changes you made in the copy and do not forget to clear the output.\n",
    "5. Now add, commit, and push the data file and notebook.\n",
    "\n",
    "**Using the above as a guide, fix the `Grand_River` Section**\n",
    "\n",
    "**Once you are done, add the notebook and data file to `~/CMSE202/repos/cmse202-f20-turnin/Day-08` and add,commit, and push the changes**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "----\n",
    "# 5. More Git practice: Git repository \"Round Robin\"\n",
    "**If time allows**, work through this activity. In this activity you'll be continuing to play around with Git and to get some practice for future homeworks."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Step 1:** Go to [http://github.com/]() individually create a git repository.  Call this repository USERNAME_git_test where USERNAME is your MSUNetID. **Important**: if you haven't gained access to the GitHub [Student Pack](https://education.github.com/pack) yet, make sure to submit that request now."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font size=6 color=\"#009600\">&#9998;</font> Note any problems you had with the above step (or any questions) here."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Step 2:** Clone the repository into your `~/CMSE202/repos` directory. The repository is probably still empty so you will get a warning."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font size=6 color=\"#009600\">&#9998;</font> Note any problems you had with the above step (or any questions) here."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Step 3:** Create a new text file (Name the file README.md or README.txt) inside of the repository folder. Include the following information in the readme file:\n",
    "\n",
    "* Name\n",
    "* Email Address\n",
    "* What is your major? \n",
    "* What year are you in School?\n",
    "* Where are you from?\n",
    "* What is your programming background?\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font size=6 color=\"#009600\">&#9998;</font> Note any problems you had with the above step (or any questions) here."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Step 4:** Add and commit the change to your repository.  Make sure you push the change to the central repository. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font size=6 color=\"#009600\">&#9998;</font> Note any problems you had with the above step (or any questions) here."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Step 5:** Check the website and make sure you see the file and can access it. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font size=6 color=\"#009600\">&#9998;</font> Note any problems you had with the above step (or any questions) here."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Step 6:** Add 2 of your groupmates to the project using the web interface."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font size=6 color=\"#009600\">&#9998;</font> Note any problems you had with the above step (or any questions) here."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Step 7:** Have you groupmates clone your repository and clone the repositories that you've been added to."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font size=6 color=\"#009600\">&#9998;</font> Note any problems you had with the above step (or any questions) here."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Step 8:** Add your name and email address to the next available line in the README file for each of your groupmates repositories. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font size=6 color=\"#009600\">&#9998;</font> Note any problems you had with the above step (or any questions) here."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Step 9:** Add and Commit your change to the server. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font size=6 color=\"#009600\">&#9998;</font> Note any problems you had with the above step (or any questions) here."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Step 10:** Do a git pull for all of your repositories.  If done correctly, each repository will have the names and emails for all of the team members in the README file.  "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font size=6 color=\"#009600\">&#9998;</font> Note any problems you had with the above step (or any questions) here."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Question:** What command(s) should the instructor use to download your group repositories? "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font size=8 color=\"#009600\">&#9998;</font> Do This - Erase the contents of this cell and replace it with your answer to the above question!  (double-click on this text to edit this cell, and hit shift+enter to save the text)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "-----\n",
    "### Congratulations, we're done!\n",
    "\n",
    "Now, you just need to submit this assignment by uploading it to the course <a href=\"https://d2l.msu.edu/\">Desire2Learn</a> web page for today's submission folder (Don't forget to add your names in the first cell)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "&#169; Copyright 2020,  Michigan State University Board of Trustees."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
