# Python - Custom Graph Library ## Description A custom implementation of a graph data structure. Setup as a library for other projects to import. For information on importing the library as a "git submodule", see `documents/git_submodules.md`. ## Python Environment This project is tested using Python3.7. Written using PyCharm. Tested with Pycharm 2017.2.3 and 2019.2 versions. ### Creating a New Env Most installations of Python3 will allow you to simply run `python3.7 -m venv ./.venv` to create a new Python3.7 environment called ".venv" at the current directory folder. Once created, load this environment with `source .venv/bin/activate` on Linux or `. .venv/Scripts/activate` on Windows. ### Third Party Libraries * If any additional libraries have been used, then they will be found in `requrements.txt` at the project root. * To install, load your local Python Environment and run `pip install -r requirements.txt` when at the project root. ## Running the Program Run the program via `python ./main.py` while at the project root. ### Expected Output Since this is a library, running main only gives example uses. <br> Running main will give 3 options: 1) Run a few graph functions and print graph output to console. 2) Dynamically generate a few graphs and use the "plotly" library to visually map them.<br> (Note that this will open up browser tabs, as that seems to be how plotly renders visuals. As far as I can tell, I don't have control over this.) 3) Run through every single graph function in every single custom class within this library.<br> This option is admittedly a little bit hard to follow/read. But I'm not sure how else I was supposed to meet the below requirement: `"Also, you will demonstrate your code. Write a script that builds a graph using your Graph library and demonstrate the use of your methods that implement the functions listed above."` ## Running Tests To run all unittests for this project, open a terminal and run the `run_unit_tests.sh` bash script. For more information about testing, see the `documents/testing.md` file. ## References See the `documents/references.md` file.