├── .gitignore
├── LICENSE
├── README.md
├── code
├── notebooks
│ └── reference_count.ipynb
└── webapp
│ ├── .idea
│ ├── .gitignore
│ ├── dictionaries
│ │ └── screencaster.xml
│ ├── inspectionProfiles
│ │ └── profiles_settings.xml
│ ├── misc.xml
│ ├── modules.xml
│ ├── vcs.xml
│ └── webapp.iml
│ ├── guitary
│ ├── app.py
│ ├── data
│ │ └── guitar.py
│ ├── services
│ │ └── catalog_service.py
│ ├── static
│ │ ├── css
│ │ │ ├── one-page-wonder.css
│ │ │ ├── one-page-wonder.min.css
│ │ │ └── site.css
│ │ ├── img
│ │ │ ├── 01.jpg
│ │ │ ├── 02.jpg
│ │ │ ├── 03.jpg
│ │ │ ├── guitars
│ │ │ │ ├── ax-black.jpg
│ │ │ │ ├── black-acoustic.jpg
│ │ │ │ ├── brushed-black-electric.jpg
│ │ │ │ ├── jet-black-electric.jpg
│ │ │ │ ├── mellow-yellow.jpg
│ │ │ │ ├── natures-song.jpg
│ │ │ │ ├── weezer-classic.jpg
│ │ │ │ ├── white-vibes.jpg
│ │ │ │ └── woodgrain-electric.jpg
│ │ │ └── logo.png
│ │ └── vendor
│ │ │ ├── bootstrap
│ │ │ ├── css
│ │ │ │ ├── bootstrap-grid.css
│ │ │ │ ├── bootstrap-grid.css.map
│ │ │ │ ├── bootstrap-grid.min.css
│ │ │ │ ├── bootstrap-grid.min.css.map
│ │ │ │ ├── bootstrap-reboot.css
│ │ │ │ ├── bootstrap-reboot.css.map
│ │ │ │ ├── bootstrap-reboot.min.css
│ │ │ │ ├── bootstrap-reboot.min.css.map
│ │ │ │ ├── bootstrap.css
│ │ │ │ ├── bootstrap.css.map
│ │ │ │ ├── bootstrap.min.css
│ │ │ │ └── bootstrap.min.css.map
│ │ │ └── js
│ │ │ │ ├── bootstrap.bundle.js
│ │ │ │ ├── bootstrap.bundle.js.map
│ │ │ │ ├── bootstrap.bundle.min.js
│ │ │ │ ├── bootstrap.bundle.min.js.map
│ │ │ │ ├── bootstrap.js
│ │ │ │ ├── bootstrap.js.map
│ │ │ │ ├── bootstrap.min.js
│ │ │ │ └── bootstrap.min.js.map
│ │ │ └── jquery
│ │ │ ├── jquery.js
│ │ │ ├── jquery.min.js
│ │ │ ├── jquery.min.map
│ │ │ ├── jquery.slim.js
│ │ │ ├── jquery.slim.min.js
│ │ │ └── jquery.slim.min.map
│ └── templates
│ │ ├── _layout.html
│ │ ├── guitars.html
│ │ └── index.html
│ └── requirements.txt
├── readme_resources
└── decision-makers.png
└── slides
├── 01-intro-to-py-decision.pdf
├── 02-what-is-python.pdf
├── 03-what-can-you-build.pdf
├── 04-web-development.pdf
├── 05-data-sci.pdf
├── 06-testing.pdf
├── 07-python-vs.pdf
├── 08-hiring-and-jobs.pdf
├── 09-no-python-here.pdf
└── 10-conclusion.pdf
/.gitignore:
--------------------------------------------------------------------------------
1 | # Byte-compiled / optimized / DLL files
2 | __pycache__/
3 | *.py[cod]
4 | *$py.class
5 |
6 | # C extensions
7 | *.so
8 |
9 | # Distribution / packaging
10 | .Python
11 | build/
12 | develop-eggs/
13 | dist/
14 | downloads/
15 | eggs/
16 | .eggs/
17 | lib/
18 | lib64/
19 | parts/
20 | sdist/
21 | var/
22 | wheels/
23 | *.egg-info/
24 | .installed.cfg
25 | *.egg
26 | MANIFEST
27 |
28 | # PyInstaller
29 | # Usually these files are written by a python script from a template
30 | # before PyInstaller builds the exe, so as to inject date/other infos into it.
31 | *.manifest
32 | *.spec
33 |
34 | # Installer logs
35 | pip-log.txt
36 | pip-delete-this-directory.txt
37 |
38 | # Unit test / coverage reports
39 | htmlcov/
40 | .tox/
41 | .coverage
42 | .coverage.*
43 | .cache
44 | nosetests.xml
45 | coverage.xml
46 | *.cover
47 | .hypothesis/
48 | .pytest_cache/
49 |
50 | # Translations
51 | *.mo
52 | *.pot
53 |
54 | # Django stuff:
55 | *.log
56 | local_settings.py
57 | db.sqlite3
58 |
59 | # Flask stuff:
60 | instance/
61 | .webassets-cache
62 |
63 | # Scrapy stuff:
64 | .scrapy
65 |
66 | # Sphinx documentation
67 | docs/_build/
68 |
69 | # PyBuilder
70 | target/
71 |
72 | # Jupyter Notebook
73 | .ipynb_checkpoints
74 |
75 | # pyenv
76 | .python-version
77 |
78 | # celery beat schedule file
79 | celerybeat-schedule
80 |
81 | # SageMath parsed files
82 | *.sage.py
83 |
84 | # Environments
85 | .env
86 | .venv
87 | env/
88 | venv/
89 | ENV/
90 | env.bak/
91 | venv.bak/
92 |
93 | # Spyder project settings
94 | .spyderproject
95 | .spyproject
96 |
97 | # Rope project settings
98 | .ropeproject
99 |
100 | # mkdocs documentation
101 | /site
102 |
103 | # mypy
104 | .mypy_cache/
105 | .idea/.gitignore
106 | .idea/decision-course.iml
107 | .idea/misc.xml
108 | .idea/modules.xml
109 | .idea/vcs.xml
110 | .idea/inspectionProfiles/profiles_settings.xml
111 | .idea/inspectionProfiles/Project_Default.xml
112 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | License
2 |
3 | Copyright (c) 2019 Talk Python
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software. All presentation materials,
14 | in PDF format, are restricted use. They may be used for non-commercial purposes
15 | only.
16 |
17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23 | SOFTWARE.
24 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Python for Decision Makers and Business Leaders
2 |
3 | [](https://talkpython.fm/decision)
4 |
5 | ## Course Summary
6 |
7 | Python has seen meteoric growth over the past few years. This means many organizations and teams are adopting Python when they previously used other technology. Why are they switching? What is it about Python that makes it so effective for organizations? If you need to learn whether Python is right for your project or your team, this course will give you a fact-based look at the Python ecosystem and show you some of the most important use-cases and even when to avoid Python.
8 |
9 | ## What's this course about and how is it different?
10 |
11 | This course is very unique. Most courses teach you how to program with Python. This course is a guided discussion and exploration of the Python ecosystem through the lens of your
12 | organisation
13 | and your team.
14 |
15 | You will see fact-based presentations for the Python developer job space. This will answer questions like, "Is it easy or hard to hire Python developers for a given type of project?" You will see the wide spectrum of Python web frameworks and how to choose the best fit. We will explore some of the tools making Python so popular in the scientific space.
16 |
17 | In this course, you will learn:
18 |
19 | - A brief history of Python and the major milestones along the way
20 | - Python compared to common languages in popularity from multiple sources
21 | - Python is 4 things and how to talk and evaluate about each
22 | - Why Python is popular for both novices and pros
23 | - Open source trends in the enterprise
24 | - What types of applications and services you can build with Python
25 | - Popular companies and apps built with Python
26 | - Survey of the popular web frameworks
27 | - See a simple (yet beautiful and functioning) web app built from scratch
28 | - Insight into why Python works so well for data scientists
29 | - A real-world exploration of nontrivial data using Jupyter notebooks and JupyterLab
30 | - Scenarios of testing software and hardware in Python
31 | - Python compared side-by-side with other candidate languages (C++, .NET, MATLAB, etc.)
32 | - Numbers and graphs behind the Python job market
33 | - When Python is not the best technology to choose
34 | - And lots more
35 |
36 | ## Who is this course for?
37 |
38 | This course is for anyone who needs to evaluate Python for their organisation. While interesting and useful for developers, you do not need to be a software developer or have experience with Python to get the big ideas from this course.
39 |
40 | If you are in charge of deciding whether Python is right for you, your team, or your company, this is the course for you.
41 |
42 | ## Visually stunning
43 |
44 | For online courses that spend a lot of time creating code on the fly, graphics can play a small role. But for conceptual courses like this one, hours of boring slides are a major turn off.
45 |
46 | For this course, we put extra focus on the visual elements of the course.
47 |
48 | ## Take this course
49 |
50 | Just [visit the course page](https://training.talkpython.fm/courses/explore_decision/python-for-decision-makers-and-business-leaders) to watch the overview video and take the course.
--------------------------------------------------------------------------------
/code/notebooks/reference_count.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "markdown",
5 | "metadata": {},
6 | "source": [
7 | "# Python Bytes Reference Authority"
8 | ]
9 | },
10 | {
11 | "cell_type": "markdown",
12 | "metadata": {},
13 | "source": [
14 | "We will download the RSS feed and analyze all the links, extract the domain names, and plot them by popularity."
15 | ]
16 | },
17 | {
18 | "cell_type": "code",
19 | "execution_count": 1,
20 | "metadata": {},
21 | "outputs": [],
22 | "source": [
23 | "import feedparser\n",
24 | "import bs4"
25 | ]
26 | },
27 | {
28 | "cell_type": "markdown",
29 | "metadata": {},
30 | "source": [
31 | "Download the RSS feed and convert it to a Python dictionary."
32 | ]
33 | },
34 | {
35 | "cell_type": "code",
36 | "execution_count": 2,
37 | "metadata": {},
38 | "outputs": [],
39 | "source": [
40 | "url = 'https://pythonbytes.fm/rss'\n",
41 | "feed = feedparser.parse(url)"
42 | ]
43 | },
44 | {
45 | "cell_type": "markdown",
46 | "metadata": {},
47 | "source": [
48 | "Get all the descriptions from each podcast episode."
49 | ]
50 | },
51 | {
52 | "cell_type": "code",
53 | "execution_count": 3,
54 | "metadata": {},
55 | "outputs": [
56 | {
57 | "name": "stdout",
58 | "output_type": "stream",
59 | "text": [
60 | "We found 26 descriptions.\n"
61 | ]
62 | }
63 | ],
64 | "source": [
65 | "# feed.get('items')[0].get('description')\n",
66 | "descriptions = [ item.get('content')[0].get('value') for item in feed.get('items') ]\n",
67 | "print(f\"We found {len(descriptions)} descriptions.\")"
68 | ]
69 | },
70 | {
71 | "cell_type": "markdown",
72 | "metadata": {},
73 | "source": [
74 | "From each HTML fragment, get the links. They look like:\n",
75 | "\n",
76 | "```\n",
77 | "
This episode is sponsored by DigitalOcean: pythonbytes.fm/digitalocean
\\n\\nMichael #1: pydantic
\\n\\n\\nvia Colin Sullivan \\nData\n",
78 | "```"
79 | ]
80 | },
81 | {
82 | "cell_type": "code",
83 | "execution_count": 4,
84 | "metadata": {},
85 | "outputs": [
86 | {
87 | "name": "stdout",
88 | "output_type": "stream",
89 | "text": [
90 | "We found 594 total links.\n"
91 | ]
92 | }
93 | ],
94 | "source": [
95 | "all_links = []\n",
96 | "\n",
97 | "for d in descriptions:\n",
98 | " soup = bs4.BeautifulSoup(d)\n",
99 | " links = [a['href'] for a in soup.findAll('a')]\n",
100 | " all_links.extend(links)\n",
101 | "\n",
102 | "print(f\"We found {len(all_links):,} total links.\")"
103 | ]
104 | },
105 | {
106 | "cell_type": "markdown",
107 | "metadata": {},
108 | "source": [
109 | "Convert the links from hyperlinks over to just domains."
110 | ]
111 | },
112 | {
113 | "cell_type": "code",
114 | "execution_count": 5,
115 | "metadata": {},
116 | "outputs": [
117 | {
118 | "name": "stdout",
119 | "output_type": "stream",
120 | "text": [
121 | "There are 216 unique domains\n"
122 | ]
123 | }
124 | ],
125 | "source": [
126 | "import urllib.parse\n",
127 | "\n",
128 | "domains = [urllib.parse.urlparse(l).netloc for l in all_links]\n",
129 | "print(f\"There are {len(set(domains))} unique domains\")"
130 | ]
131 | },
132 | {
133 | "cell_type": "markdown",
134 | "metadata": {},
135 | "source": [
136 | "How many times does each domain appear?"
137 | ]
138 | },
139 | {
140 | "cell_type": "code",
141 | "execution_count": 6,
142 | "metadata": {},
143 | "outputs": [
144 | {
145 | "data": {
146 | "text/plain": [
147 | "[('github.com', 98),\n",
148 | " ('twitter.com', 77),\n",
149 | " ('www.youtube.com', 29),\n",
150 | " ('pythonbytes.fm', 20),\n",
151 | " ('pypi.org', 15),\n",
152 | " ('testandcode.com', 13),\n",
153 | " ('training.talkpython.fm', 12),\n",
154 | " ('en.wikipedia.org', 10),\n",
155 | " ('www.python.org', 10),\n",
156 | " ('www.patreon.com', 9),\n",
157 | " ('talkpython.fm', 7),\n",
158 | " ('htmx.org', 6),\n",
159 | " ('bandit.readthedocs.io', 5),\n",
160 | " ('youtu.be', 5),\n",
161 | " ('gist.github.com', 4),\n",
162 | " ('us.pycon.org', 4),\n",
163 | " ('pydantic-docs.helpmanual.io', 4),\n",
164 | " ('towardsdatascience.com', 4),\n",
165 | " ('rich.readthedocs.io', 4),\n",
166 | " ('jcristharif.com', 4),\n",
167 | " ('9to5mac.com', 4),\n",
168 | " ('www.visidata.org', 4),\n",
169 | " ('arstechnica.com', 3),\n",
170 | " ('www.theregister.com', 3),\n",
171 | " ('blog.jetbrains.com', 3)]"
172 | ]
173 | },
174 | "execution_count": 6,
175 | "metadata": {},
176 | "output_type": "execute_result"
177 | }
178 | ],
179 | "source": [
180 | "import collections\n",
181 | "\n",
182 | "counter = collections.Counter(domains)\n",
183 | "most_common = counter.most_common()\n",
184 | "top_25 = most_common[0:25]\n",
185 | "top_25"
186 | ]
187 | },
188 | {
189 | "cell_type": "code",
190 | "execution_count": 7,
191 | "metadata": {},
192 | "outputs": [],
193 | "source": [
194 | "import matplotlib.pyplot as plt\n",
195 | "import numpy as np\n",
196 | "%matplotlib inline"
197 | ]
198 | },
199 | {
200 | "cell_type": "code",
201 | "execution_count": 8,
202 | "metadata": {},
203 | "outputs": [
204 | {
205 | "data": {
206 | "image/png": "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NWW66JdmeZzZfAnYStKWwB7Ap8Z+NtPzNZvLKH/nkY0oU1RnG0FcIRc/BL4HPHrsR6OE9BnA521fM7rLDA/zC+CR0/62a9j+le2/2z7A9hbAAyjPw2wjqBERi1KSuoiIlZSke0p6uaQN6+27AHtS1h/N5LeUNVMjHwZeIGlHFbeW9GhJa0vaXNJukm4JXAP8Bbh+pgedwanAUpXiJmtKWlXSlqpbLcxgue2YYzyADwKvknRvAEnrSBpNTfw6cG9JT6xT9l4C3HGWx/otsImkVQBs/wI4GTiwFubYirKubbZtDx6lst3ELYA3AqfUx8H2L4HTKKNMR06bUjpnNRH6PKUQyal1SuX477DZjHec2aeBl0natCahbwE+W6ey/kPqaNwuwPljhz8JPIGS2H187PhvgduOirRUHwTerGXFZm4v6XH1+10l3UelsuaVlOmYcz1PIyIWjSR1ERErr6WU4iI/UKk6eQrwQ+Dly/n/+wOH1WlsT7F9OqU8/vuByymFMp5V/+8tgbcCf6BMu7sDZZ3VCtW1U3tQ1mtdXB/jI8A6y/n/s7VjTmx/kTKS+BlJV1Keh9F0vz9Q1p69lVJY5u6UkaPlOaL++0dJZ9bv96QUDLkM+CKwn+1vz/IYhwP7UaZdbseyaZIjh1HWHs5lyuRslvc476WsO7tc0vvm8Dgfq49xAuVvdg3w4n+gXf9Zq1deBRwNHEopcALckCifSRmZO3Hs+AWUBPOiep5uUH+XrwBHS1pKOc93rHe5IyWxvZIyLfN4/vHnNCJiwVFZehARERHzRdKDKKNVG/sf+KCVtBFwAXDHSSsQIuljwGW2Xzt0WyIiFrqFvqFrREREV7WQx77AR/7BhG4V4N+Bz0xgQrcJ8ETKdhYREdFYpl9GRETME0n3Aq6g7DP33//A49yaMuVwd8o0z4kh6Y2U6bHvsH3x0O2JiFgMMv0yIiIiIiJigmWkLiIiIiIiYoJNRFIn6aih2xARERERETGU2XKiiSiUsmTJkodvv/32mScaERERERGL1XKLZk1EUnf3u9+d008/fehmREREREREDELST5b3s4mYfhkREREREREzS1IXERERERExwZLURURERERETLAkdRERERERERMsSV1ERERERMQES1IXERERERExwZLURURERERETLAkdRERERERERMsSV1ERERERMQES1IXERERERExwVYbugGTbJNXfr3p41/y1kc3ffyIiIiIiJh8GamLiIiIiIiYYEnqIiIiIiIiJliSuoiIiIiIiAmWpC4iIiIiImKCJamLiIiIiIiYYEnqIiIiIiIiJliSuoiIiIiIiAmWpC4iIiIiImKCJamLiIiIiIiYYEnqIiIiIiIiJliSuoiIiIiIiAmWpC4iIiIiImKCJamLiIiIiIiYYEnqIiIiIiIiJliSuoiIiIiIiAmWpC4iIiIiImKCJamLiIiIiIiYYEnqIiIiIiIiJliSuoiIiIiIiAmWpC4iIiIiImKCJamLiIiIiIiYYEnqIiIiIiIiJliSuoiIiIiIiAmWpC4iIiIiImKCJamLiIiIiIiYYEnqIiIiIiIiJliSuoiIiIiIiAmWpC4iIiIiImKCJamLiIiIiIiYYEnqIiIiIiIiJliSuoiIiIiIiAmWpC4iIiIiImKCJamLiIiIiIiYYEnqIiIiIiIiJliSuoiIiIiIiAmWpC4iIiIiImKCJamLiIiIiIiYYEnqIiIiIiIiJliSuoiIiIiIiAmWpC4iIiIiImKCJamLiIiIiIiYYEnqIiIiIiIiJliSuoiIiIiIiAmWpC4iIiIiImKCJamLiIiIiIiYYEnqIiIiIiIiJliSuoiIiIiIiAmWpC4iIiIiImKCJamLiIiIiIiYYEnqIiIiIiIiJliSuoiIiIiIiAmWpC4iIiIiImKCJamLiIiIiIiYYEnqIiIiIiIiJliSuoiIiIiIiAm22tANiJtnk1d+venjX/LWRzd9/IiIiIiImB8ZqYuIiIiIiJhgSeoiIiIiIiImWJK6iIiIiIiICZakLiIiIiIiYoIlqYuIiIiIiJhgSeoiIiIiIiImWJK6iIiIiIiICZakLiIiIiIiYoIlqYuIiIiIiJhgSeoiIiIiIiImWJK6iIiIiIiICZakLiIiIiIiYoIlqYuIiIiIiJhgSeoiIiIiIiImWJK6iIiIiIiICZakLiIiIiIiYoIlqYuIiIiIiJhgSeoiIiIiIiImWJK6iIiIiIiICbbCpE7SXSXdsn7/EEkvkbRu85ZFRERERETECs1lpO5I4DpJdwMOAe4CHN60VRERERERETEnc0nqrrd9LfAE4CDbrwDu1LZZERERERERMRdzSer+LmlP4JnA1+qx1ds1KSIiIiIiIuZqLknd3sD9gTfbvljSpsAn2jYrIiIiIiIi5mK1Ff0H2z8CXjJ2+2LgbS0bFREREREREXOz3KRO0nmAl/dz21s1aVFERERERETM2WwjdXt0a0VERERERETcLMtN6mxf2rMhERERERERcdPNZfPxnSSdJunPkv4m6TpJV/ZoXERERERERMxuLtUv3w/sCfwEWBN4LvA/LRsVERERERERczOXpA7bPwVWtX2d7UOBR7RtVkRERERERMzFCrc0AK6WdAvgbElvB37NHJPBiIiIiIiIaGsuydkz6v/7f8BVwF2Af27ZqIiIiIiIiJibWUfqJK0KvMX2XsA1wAFdWhURERERERFzMutIne3rgI3r9MuIiIiIiIhYycxlTd1FwPckfYUy/RIA2+9u1qqIiIiIiIiYk7kkdT+rX6sAa7dtTkRERERERNwUc1lTd4+6pi4iIiIiIiJWMllTFxERERERMcGypi4iIiIiImKCZU1dRERERETEBFthUmf7AABJt7J9dfsmRURERERExFzNuqYOQNL9Jf0IuKDe3lrSB5q3LCIiIiIiIlZohUkd8N/Aw4E/Atg+B3hQwzZFRERERETEHM0lqcP2L6Yduq5BWyIiIiIiIuImmkuhlF9IegBgSasD+wI/btusiIiIiIiImIu5jNS9AHgRcGfgV8A29XZEREREREQMbLkjdZLeZvu/gF1t79WxTRERERERETFHs43UPUqSgFf1akxERERERETcNLOtqTsKuBxYS9KVgACP/rW9pEP7IiIiIiIiYhbLHamz/Qrb6wJft73E9trj//ZrYkRERERERCzPCgul2H6cpI0lPQxA0pqS1m7ftIiIiIiIiFiRFSZ1kp4HfB74UD20IfClhm2KiIiIiIiIOZrLlgYvAnYGrgSw/RPgDi0bFREREREREXMzl6Tur7b/NrohaTVKwZSIiIiIiIgY2FySuuMlvRpYU9LuwBHAV9s2KyIiIiIiIuZiLkndfwG/B84D9gG+Aby2ZaMiIiIiIiJibmbbpw5JqwLn274n8OE+TYqIiIiIiIi5mnWkzvZ1wIWSNurUnoiIiIiIiLgJZh2pq9YDzpd0KnDV6KDtxzZrVURERERERMzJXJK61zVvRURERERERNwsK0zqbB/foyERERERERFx082l+mVERERERESspJLURURERERETLDlJnWSjq3/vq1fcyIiIiIiIuKmmG1N3Z0kPQB4rKTPABr/oe0zm7YsIiIiIiIiVmi2pO71lMqXGwLvnvYzA7u1alRERERERETMzXKTOtufBz4v6XW233hzHlzSJcBS4DrgWtvbS7oN8FlgE+AS4Cm2L785jx8REREREbHYrbBQiu03SnqspHfWrz1uYoxdbW9je/t6+5XAsbbvDhxbb0dERERERMTNsMKkTtKBwL7Aj+rXvpLe8g/EfBxwWP3+MODx/8BjRURERERELGor3HwceDSwje3rASQdBpwFvHoO9zVwtCQDH7J9CLC+7V/Xn/8GWH+mO0p6PvB8gI022mgOoSIiIiIiIhafuSR1AOsC/1e/X+cmPP4utn8l6Q7AMZIuGP+hbdeE70ZqAngIwPbbbz/j/4mIiIiIiFjs5pLUHQicJek4yrYGD2KO6+Bs/6r++ztJXwTuB/xW0p1s/1rSnYDf3bymR0RERERExFwKpXwa2An4AnAkcH/bn13R/STdWtLao++BfwJ+CHwFeGb9b88Evnzzmh4RERERERFzmn5Z18B95SY+9vrAFyWN4hxu+yhJpwGfk/Qc4FLgKTfxcSMiIiIiIqKa65q6m8z2RcDWMxz/I/DQVnEjIiIiIiIWkxVOv4yIiIiIiIiV16xJnaRVp1esjIiIiIiIiJXHrEmd7euACyVlo7iIiIiIiIiV0FzW1K0HnC/pVOCq0UHbj23WqoiIiIiIiJiTuSR1r2veioiIiIiIiLhZVpjU2T5e0sbA3W1/W9KtgFXbNy0iIiIiIiJWZIXVLyU9D/g88KF66M7Alxq2KSIiIiIiIuZoLlsavAjYGbgSwPZPgDu0bFRERERERETMzVySur/a/tvohqTVALdrUkRERERERMzVXJK64yW9GlhT0u7AEcBX2zYrIiIiIiIi5mIuSd0rgd8D5wH7AN8AXtuyURERERERETE3c6l+eb2kw4AfUKZdXmg70y8jIiIiIiJWAitM6iQ9Gvgg8DNAwKaS9rH9zdaNi4iIiIiIiNnNZfPxdwG72v4pgKS7Al8HktRFREREREQMbC5r6paOErrqImBpo/ZERERERETETbDckTpJT6zfni7pG8DnKGvqngyc1qFtERERERERsQKzTb98zNj3vwUeXL//PbBmsxZFRERERETEnC03qbO9d8+GRERERERExE03l+qXmwIvBjYZ//+2H9uuWRERERERETEXc6l++SXgo8BXgeubtiYiIiIiIiJukrkkddfYfl/zlkRERERERMRNNpek7r2S9gOOBv46Omj7zGatioiIiIiIiDmZS1J3H+AZwG4sm37pejsiIiIiIiIGNJek7snAZrb/1roxERERERERcdOsMof/80Ng3cbtiIiIiIiIiJthLiN16wIXSDqNqWvqsqVBRERERETEwOaS1O3XvBURERERERFxs6wwqbN9fI+GRERERERExE23wqRO0lJKtUuAWwCrA1fZXtKyYREREREREbFicxmpW3v0vSQBjwN2atmoiIiIiIiImJu5VL+8gYsvAQ9v05yIiIiIiIi4KeYy/fKJYzdXAbYHrmnWooiIiIiIiJizuVS/fMzY99cCl1CmYEZERERERMTA5rKmbu8eDYmIiIiIiIibbrlJnaTXz3I/235jg/ZERERERETETTDbSN1VMxy7NfAc4LZAkrqIiIiIiIiBLTeps/2u0feS1gb2BfYGPgO8a3n3i4iIiIiIiH5mXVMn6TbAvwN7AYcB29q+vEfDIiIiIiIiYsVmW1P3DuCJwCHAfWz/uVurIiIiIiIiYk5m23z85cAGwGuByyRdWb+WSrqyT/MiIiIiIiJiNrOtqZst4YuIiIiIiIiVQBK3iIiIiIiICZakLiIiIiIiYoIlqYuIiIiIiJhgSeoiIiIiIiImWJK6iIiIiIiICZakLiIiIiIiYoIlqYuIiIiIiJhgSeoiIiIiIiImWJK6iIiIiIiICbba0A2IybLJK7/ePMYlb3108xgREREREQtFRuoiIiIiIiImWJK6iIiIiIiICZakLiIiIiIiYoIlqYuIiIiIiJhgSeoiIiIiIiImWJK6iIiIiIiICZakLiIiIiIiYoIlqYuIiIiIiJhgSeoiIiIiIiImWJK6iIiIiIiICZakLiIiIiIiYoIlqYuIiIiIiJhgSeoiIiIiIiImWJK6iIiIiIiICZakLiIiIiIiYoIlqYuIiIiIiJhgSeoiIiIiIiImWJK6iIiIiIiICZakLiIiIiIiYoIlqYuIiIiIiJhgSeoiIiIiIiImWJK6iIiIiIiICbba0A2ImKtNXvn1po9/yVsf3fTxIyIiIiJayEhdRERERETEBEtSFxERERERMcGS1EVEREREREywJHURERERERETLEldRERERETEBEtSFxERERERMcGS1EVEREREREywJHURERERERETLEldRERERETEBEtSFxERERERMcGS1EVEREREREywJHURERERERETLEldRERERETEBFtt6AZETIJNXvn1po9/yVsf3fTxIyIiImLhykhdRERERETEBEtSFxERERERMcGS1EVEREREREywJHURERERERETLIVSIlZirQu0QIq0REREREy6jNRFRERERERMsCR1EREREREREyzTLyNiRpn6GRERETEZMlIXERERERExwZLURURERERETLAkdRERERERERMsSV1ERERERMQES6GUiFjptC7SsrwCLSkOExEREZMoI3URERERERETLEldRERERETEBMv0y4iIlUCmfkZERMTNlZG6iIiIiIiICZakLiIiIiIiYoIlqYuIiIiIiJhgSeoiIiIiIiImWAqlREQsckPtCxgRERHzIyN1EREREREREywjdRERMYhs4xARETE/MlIXERERERExwZLURURERERETLBMv4yIiEVnyKmfKUwTERHzLSN1EREREREREyxJXURERERExATL9MuIiIhFYCFPOR0y9mL8nYeMPdv04sX4t44YyUhdRERERETEBMtIXURERETEBMrIaN/YK7OM1EVEREREREywJHURERERERETLEldRERERETEBEtSFxERERERMcEGSeokPULShZJ+KumVQ7QhIiIiIiJiIeie1ElaFfgf4JHAFsCekrbo3Y6IiIiIiIiFYIiRuvsBP7V9ke2/AZ8BHjdAOyIiIiIiIiaebPcNKD0JeITt59bbzwB2tP3/pv2/5wPPrzc3By7s2tA2bgf8IbEXfNzFGnsx/s5Dxl6Mv/OQsRfj7zxk7MX4Ow8ZezH+zkPGXoy/82KOPZ82tn37mX6w0m4+bvsQ4JCh2zGfJJ1ue/vEXthxF2vsxfg7Dxl7Mf7OQ8ZejL/zkLEX4+88ZOzF+DsPGXsx/s6LOXYvQ0y//BVwl7HbG9ZjERERERERcRMNkdSdBtxd0qaSbgH8C/CVAdoREREREREx8bpPv7R9raT/B3wLWBX4mO3ze7djIENOJ12MsRfj7zxk7MX4Ow8ZezH+zkPGXoy/85CxF+PvPGTsxfg7Dxl7Mf7Oizl2F90LpURERERERMT8GWTz8YiIiIiIiJgfSeoiIiIiIiImWJK6iIiIiIiICbbS7lMXEREREQuLpFWBRwObMHYdavvdQ7UpYiFIUteYpE2B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\n",
207 | "text/plain": [
208 | ""
209 | ]
210 | },
211 | "metadata": {
212 | "needs_background": "light"
213 | },
214 | "output_type": "display_data"
215 | }
216 | ],
217 | "source": [
218 | "plt.rcParams[\"figure.figsize\"] = (15,5)\n",
219 | "\n",
220 | "values = [t[1] for t in top_25]\n",
221 | "value_bins = [t[0] for t in top_25 ]\n",
222 | "\n",
223 | "ind = list(range(1, len(values)+1)) # the x locations for the groups\n",
224 | "width = 0.40 # the width of the bars: can also be len(x) sequence\n",
225 | "\n",
226 | "# p1 = plt.bar(ind, menMeans, width)\n",
227 | "p1 = plt.bar(ind, values, width*2)\n",
228 | "\n",
229 | "plt.ylabel('Number of referrals')\n",
230 | "plt.title('Sites referred to by Python Bytes')\n",
231 | "plt.xticks(ind, value_bins, rotation='vertical')\n",
232 | "plt.yticks(np.arange(0, max(values), 50))\n",
233 | "plt.width = 500"
234 | ]
235 | }
236 | ],
237 | "metadata": {
238 | "kernelspec": {
239 | "display_name": "Python 3",
240 | "language": "python",
241 | "name": "python3"
242 | },
243 | "language_info": {
244 | "codemirror_mode": {
245 | "name": "ipython",
246 | "version": 3
247 | },
248 | "file_extension": ".py",
249 | "mimetype": "text/x-python",
250 | "name": "python",
251 | "nbconvert_exporter": "python",
252 | "pygments_lexer": "ipython3",
253 | "version": "3.9.2"
254 | }
255 | },
256 | "nbformat": 4,
257 | "nbformat_minor": 4
258 | }
--------------------------------------------------------------------------------
/code/webapp/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /workspace.xml
--------------------------------------------------------------------------------
/code/webapp/.idea/dictionaries/screencaster.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | navbar
5 |
6 |
7 |
--------------------------------------------------------------------------------
/code/webapp/.idea/inspectionProfiles/profiles_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/code/webapp/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/code/webapp/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/code/webapp/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/code/webapp/.idea/webapp.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/code/webapp/guitary/app.py:
--------------------------------------------------------------------------------
1 | import flask
2 |
3 | from guitary.services import catalog_service
4 |
5 | app = flask.Flask(__name__)
6 |
7 |
8 | @app.route('/')
9 | def index():
10 | return flask.render_template('index.html')
11 |
12 |
13 | @app.route('/guitars/