Errata

Head First Python

Errata for Head First Python, Third Edition

Submit your own errata for this product.

The errata list is a list of errors and their corrections that were found after the product was released. If the error was corrected in a later version or reprint the date of the correction will be displayed in the column titled "Date Corrected".

The following errata were submitted by our customers and approved as valid errors by the author or editor.

Color key: Serious technical mistake Minor technical mistake Language or formatting error Typo Question Note Update

Version Location Description Submitted By Date submitted Date corrected
Page Ch. 4 'F-strings have proven to be hugely popular'
Code snippet at Test Drive

The code snippet already shows the final f-string version of the original 'round' method (for average) without explanation of the particular formatting option. The error (for Lizzie) described and solved later in the chapter won't occur when adapting the code according to the snippet.

Note from the Author or Editor:
Fixed during Tech Review.

Anonymous  May 30, 2023 
Page Ch. 5 'Your code’s beginning to take shape, but…'
coach cartoon

Currently reads:
"... did your actually mention a planet"

Should read:
"... did you actually mention a planet"

Note from the Author or Editor:
Confirmed for Early Release material. Taken out of the printed book after Tech Review.

Anonymous  May 30, 2023 
Page Chapter 12 "List Comprehensions: Database Integrations"
The section titled "One query down, three to go"

The bug is planted earlier in the chapter, but it first manifests in the "with" construct at the end of the section titled "One query down, three to go". The problem occurs if the reader reads chapters 11 and 12 on the same day, in which case the date of the two datasets is the same, and therefore the various queries in "queries.py" can't distinguish between the two datasets.

Note from the Author or Editor:
This is an issue with the Early Release material online, which has been addressed in the final printed book.

Itai Berli  Aug 12, 2023 
Page Chapter 13 "Deployment Revisited: The Finishing Touches"
The first line of code in the section "Reusing your tables, 1 of 2"

I am unable to run "sqlite3" from the Windows terminal. The command is not recognized. I performed an exhaustive search of "sqlite.exe" and "sqlite3.exe" throughout drive C to no avail: no files by that name were found.

Note from the Author or Editor:
I am told Windows users need to install "sqlite-tools-win32-x86" for the sqlite3 commands to work. This has been fixed/noted in the printed book.

Itai Berli  Aug 13, 2023 
Page ch 00, page 3
8th para (4th 'response")

I’m taking about…
should be: I'm talking about…

Note from the Author or Editor:
Change "taking" to "talking" near start paragraph eight, left-hand column of this page.

Jørgen W. Lang  Sep 20, 2023 
Page xxxix
Paragraph which starts "At work..."

Last sentence of this paragraph should start with "It is always a pleasure... " (the "is" is missing from the current sentence).

Paul Barry  Sep 27, 2023 
Page xxxi
Second last para, second sentence

Extra "t" at start of sentence. Please remove.

Note from the Author or Editor:
(Typo by me on left - sigh, sorry). Should read LAST para, second sentence: Extra "t" at start of sentence. Please remove.

Paul Barry (from Lairo on Github)  Oct 23, 2023 
Page Chapter 5. Formatted String Literals: Make Charts From Data
The code snippet after the paragraph that starts with "With just a few minor tweaks"

The following line of code is missing in order to make this statement true: "can be combined into a single code cell"

Add the following just after the import lines:

`fn = "Darius-13-100m-Fly.txt"`

Note from the Author or Editor:
Page 206 - in order for the code at the top of this page to be completely self-contained, this line needs to be inserted after the two "insert" statements:

fn = "Darius-13-100m-Fly.txt"

Note: this line of code last appeared near the top of page 199.

Mark Gerrior  Apr 16, 2024 
Page Chapter 8
"Go ahead and confirm that your cloud-hosted webapp is running"

FYI: The forums are no longer at the URL list here: python.itcarlow.ie

When I attempt `showbarchart` on pythonanywhere I get "Internal Server Error". Is there a reason `app.run(debug=True)` doesn't work in this context? Also, I did revert my code (per the last errata I submitted) but it doesn't have an effect.

Note from the Author or Editor:
The support forums were killed off by O'Reilly many moons ago. The book's GitHUB pages (search for "headfirstpython" on GitHUB) have a discussion feature which I interact with as needed... this can be a great way to "chat" outside of this errata mechanism.

app.run(debug=True) has no effect on PythonAnywhere as they control when app.py is executed, not you. On PythonAnywhere's Web Tab you'll see links to log files which provide information on what went wrong (especially the error.log file). Read from the bottom-up to see the most recent activity.

If you've adjusted your paths in your local code to include the "webapp" prefix, the code will not run on PythonAnywhere until the prefix is removed. See my response to an earlier errata submission.

Mark Gerrior  Apr 24, 2024 
Page Chapter 6
p 307 (save_to)

I encountered the same problem as Mark Gerrior.

I found that I needed to add 'webapp/' to the lines of code where the swimmer's file was opened, swimclub.py line 15, and also where the save_to path was constructed, line 67. Otherwise, the file open/create attempts were to the "Learning" folder, not the "webapp" folder.

Line 15: with open("webapp/" + FOLDER + filename) as file:
Line 67: save_to = f"webapp/{location}{fn.removesuffix('.txt')}.html"

This may break other places this is used, but was necessary to get the code to run on page 311. There is likely a better way to fix this.

Note from the Author or Editor:
The errors reported here are due to the fact that the reader is trying to run their app.py from a folder other than "webapp". Near the top of page 261, the 4th paragraph states: "Within VS Code, use File, then Open Folder… to select the just-created webapp folder as your current working directory... ". If this step is skipped, VS Code will likely use the "Learning" folder as it's default which will result in the "file not found" errors being reported due to the fact that the code assumes file and folder locations are relative to the current working directory, which needs to be "webapp".

The code in the book works without issue when app.py is executed from within the "webapp" folder.

Gary Stebbins  Apr 30, 2024 
Page Chapter 7. Building a Webapp: Web Development
Install Flask from PyPI

Where is the `pip install flask` command being run? In the Jupyter notebook or in the terminal? Does it matter? Where is flask being installed? The directory? The project? My current version of Python? The default version of Python?

Note from the Author or Editor:
Suggesting this conversation is moved to the discussions forum on GitHUB.

Mark Gerrior  May 01, 2024 
Page p173
bottom of left column

"expect" should say "except"

Note from the Author or Editor:
Change "expect" to "except" on last bullet point, left-hand-side.

Tim Boyle  Sep 06, 2024 
Page Chapter 5 Cubicle Conversation
Third line in conversation

Current text says:
Mara: I like that idea, as all the tools we’re using a free. What’s not to like?

Correct text should say:
Mara: I like that idea, as all the tools we’re using are free. What’s not to like?

Note from the Author or Editor:
Not an issue in the published book as this CC has been removed.

Jonathon Fryman  May 24, 2023 
Page 4th Chapter, Section: You have numbers now, but are they usable?
4th paragprah, link to the sentence: https://learning.oreilly.com/library/view/head-first-python/9781492051282/ch04.html#:-:text=You%E2%80%99ll%20find%20the,book%E2%80%99s%20download%20material.

It is written:
"You’ll find the module and notebook included with this book’s download material."

However, there is no place to download the book's material. So not able to do the exercises that mentioned in the chapter 4.

Note from the Author or Editor:
The published book (due end August 2023) has been updated with all download materials available via GitHUB. Please search GitHUB for the "headfirstpython" account, then access the "third" repository.

https://github.com/headfirstpython/third

Latif  Jul 21, 2023 
Page 6. Building A Webapp: Web Development
The Flask MVP

Hello,
I saw this book on oreilly.com.
[False]
if __name__ == "_main_":
app.run()
[True]
if __name__ == "__main__":
app.run()
I use PC to programming, if use "_main_", the code "app.run()" will not run.
>>> print(__name__)
__main__

Note from the Author or Editor:
Fixed during Tech Review.

HAORAN WANG  May 18, 2023 
Page 6. Building A Webapp: Web Development
Figure 6-48.

Hello,
I read this book on oreilly.com.
Figure 6-48.
[false]
<title>Welcome to the Swinclub system</title>
[true]
<title>Welcome to the Swimclub system</title>

swin-->swim club

Note from the Author or Editor:
Fixed during Tech Review.

HAORAN WANG  May 18, 2023 
Page 6. Building A Webapp: Web Development
The text below Figure 6-23.

Hello,
I read this book on oreilly.com.
Go ahead and add your new function to your app.py file (above the dunder name if statement). Your new code should match what’s shown here:

[false]
@app. get ("/ swimmers")
[true]
@app.get ("/swimmers")

"/ swimmers" --> "/swimmers" It's different as a path.

Note from the Author or Editor:
Not an issue in the final (printed) book. A conversion error during Early Release.

HAORAN WANG  May 18, 2023 
Page 8. Working With HTML: Web Scraping
Grab the raw HTML page from Wikipedia

Hello,
I read this book on oreilly.com.
Figure 6-48.
[false]
URL = "h://en.wikiped.o
[true]
URL = "h://en.wikipedia.o
wikiped-->wikipedia

Note from the Author or Editor:
Caused by a conversion error when producing the Early Release material. Fixed in the printed book.

HAORAN WANG  May 19, 2023 
Page 8. Working With HTML: Web Scraping
That nested loop did the trick!

Hello,
I read this book on oreilly.com.
The code above "That nested loop did the trick!"
The wiki website is changed.
[False]
RECORDS = (0, 1, 3, 4)
[True]
RECORDS = (0, 2, 4, 5)

Note from the Author or Editor:
Fixed during Tech Review.

HAORAN WANG  May 19, 2023 
Page 15
Last sentence

In the “Why python” chapter, the section “That’s python’s default variable” the last sentence “…but it’s value…” “it’s” should be “its”. The former is a contraction of “it is” and the correct form is the possessive. Print version page 15.

Note from the Author or Editor:
Change "it's" to "its" in second line from the bottom of the page.

Lorin Rivers  Sep 14, 2024 
Page 16
next to last paragraph on page

In second line of this paragraph, "funciton" should be "function".

Note from the Author or Editor:
Change "funciton" to "function" near bottom of page.

Gary Stebbins  Apr 30, 2024 
Page 31 + 32
module list, 8th entry, description column

Original: popular structured text format, sometimes call a “document”
Change to: popular structured text format, sometimes called a “document”

Note from the Author or Editor:
Change "call" to "called" near middle of both pages.

Jørgen W. Lang  Sep 25, 2023 
Page 52
last paragraph

Original: the print dir combo manbo…
Suggested fix: the print dir combo mambo…

Note from the Author or Editor:
Change "manbo" to "mambo" on this page.

Jørgen Lang  Sep 26, 2023 
Page 52
last para, last sentence

Original: It’s often useful to hink of the following one-liner as asking…
Suggested fix: It’s often useful to *t*hink of the following one-liner as asking…

Note from the Author or Editor:
Chance "hink" to "think".

Jørgen Lang  Sep 26, 2023 
Page 58
1st annotation

Original: We’re removed the dunders…
Fix: We’ve removed the dunders

Note from the Author or Editor:
"We're" should be "We've"

Jørgen Lang  Sep 28, 2023 
Page 60
2nd last annotation on right side

Original: The default seperator is replaced…
Suggested fix: The default separator is replaced…

Jørgen Lang  Oct 01, 2023 
Page 79
very bottom

Issue: Arrow text reads: "Answers om page 80"
Suggested fix: "Answers on page 80"

Note from the Author or Editor:
Change "om" to "on" (near bottom right of page).

Jørgen W. Lang  Oct 04, 2023 
Page 95
top box, annotation

Original: …the “print dir” combo manbo…
Fix: …the “print dir” combo mambo…

Note from the Author or Editor:
Change annotation to read "mambo".

Jørgen W. Lang  Oct 06, 2023 
Page 97
list of subtasks

Issue: List of subtasks lacks trailing periods
Suggested fix: Add period for consistency with previous subtask lists (e.g. p82 and p92)

Jørgen W. Lang  Oct 06, 2023 
Page 97 + 107
numbered/lettered lists of subtasks

Issue: Missing periods after subtasks
Suggested fix: Add periods at end of each subtask for consistency.

Jørgen W. Lang  Oct 09, 2023 
Page 101
last para

Original: You first saw for in the opening chatper…
Fix: You first saw for in the opening chapter…

Note from the Author or Editor:
Last paragraph: change "chatper" to "chapter".

Jørgen W. Lang  Oct 07, 2023 
Page 105
1st numbered annotation

Original: 1. You need to initialize a counter, which we’ve called “i” is this code.
Fix: Change "is" to "in": 1. You need to initialize a counter, which we’ve called “i” in this code.

Note from the Author or Editor:
Annotation #1: change "is this" to "in this".

Jørgen W. Lang  Oct 07, 2023 
Page 112
first annotation

Original: We created a new, empty list called “converts” by assigning an empty list to it.
Issue: Creating a list by assigning a list to it.
Suggested Fix: We created a variable called “converts” and assigned a new empty list to it.

Note from the Author or Editor:
Let's apply the suggested fix, which is a better/clearer description of what's going on here.

Jørgen W. Lang  Oct 07, 2023 
Page 113
Bottom right (the annotation)

The arrow from the annotation is missing. It should point to the list of numbers from the word "Here's" in the annotation.

Paul Barry  Sep 27, 2023 
Page 124
bullet points, left column, 6th entry

*really minuscule* ;)
Issue: Leading whitespace before entry: ' The rest of the file object methods' […]
Fix: Change to 'The rest of the file object methods' […]

Note from the Author or Editor:
Remove extra whitespace as described. Sixth bullet point from the bottom on the LHS of page 124.

Jørgen W. Lang  Oct 09, 2023 
Page 128
11th last line of dialog (Alex)

Original:
Alex: So we have a ways to go yet…

Suggested fix: remove plural 's' on 'a ways' so text reads:
Alex: So we have a way to go yet…

Note from the Author or Editor:
I'm suggesting we leave this as is, as using "ways" in this way is perfectly OK this side of the Atlantic (which, I'll admit, might be an Irish thing). But... feel free to adjust if deemed necessary.

Jørgen W. Lang  Oct 23, 2023 
Page 148
2nd para, last sentence

Original: As you can
imagine, the PSL has you covered when it
comes to doing this sort of thing..

Fix: Remove one period at end of line.

Note from the Author or Editor:
Remove extra period from end of middle paragraph.

Jørgen W. Lang  Oct 24, 2023 
Page 170
1st para 2nd sentence

Original: The easiest way to do this is to clear all of your notebook’s cells […]
Issue: This sounds like the contents of the cells needs to be cleared out instead of the outputs.
Suggested fix: The easiest way to do this is to clear all outputs of your notebook’s cells […]

Note from the Author or Editor:
Adjust start of the second sentence to read "The easiest way to do this is to clear all of the outputs from your notebook’s cells... "

Jørgen W. Lang  Oct 27, 2023 
Page 181
8th last para, 2nd sentence

Original: When you combine it with SVG, you can create visuals is text, too.
Suggested fix: When you combine it with SVG, you can create visuals [as|in|from] text, too.

Note from the Author or Editor:
Replace "visuals is text, too" with "visuals from text, too".

Jørgen Lang  Oct 31, 2023 
Page 233
First code-block

The code-block shows a check to ensure that the right data has been added. The text above states: "The len BIF confirms the swimmers list-of-tuples contains 60 tuples:"
However the code uses the wrong variable. It is:
len(swim_files)
and it should be
len(swimmers)

Both contain 60 elements, so result is the same. However, swim_files contains filenames, while swimmers contains tuples of (name, filename)

Note from the Author or Editor:
The code snippet at the top of the page should read "len(swimmers)". Editor: contact me for updated screen-grab when fixing this errata entry.

Tom Quast  Sep 15, 2024 
Page 252
1st heading

Original: This is really stating to come together
Suggested fix: This is really starting to come together

Note from the Author or Editor:
Change "stating" to "starting" in page heading.

Jørgen Lang  Nov 08, 2023 
Page 254
6th left bullet

Original: List sets, dictionaries surround data with curly braces.
Question: Did you mean "Sets and dictionaries" since lists use square brackets?

Note from the Author or Editor:
Change the word "Lists" to be "Like" at start of 6th bullet item.

Jørgen Lang  Nov 08, 2023 
Page 254
6th bullet, 2nd sentence

Original: "Unlike sets (which contain a collection of unque values) […]"
Fix: "Unlike sets (which contain a collection of unique values) […]"

Note from the Author or Editor:
Change "unque" to "unique" in 6th bullet item.

Jørgen Lang  Nov 08, 2023 
Page 259
3rd last sentence

Original: Along the way, you’ll learn […] get and set HTTP methods […].
Question 1: Shouldn't this be GET and POST (uppercase debatable)?
Question 2: Are you referring to the actual HTTP request methods or Python methods to make HTTP requests?

Note from the Author or Editor:
Question 1: Yes, replace the word "set" with "post".

Question 2: I might be convinced to drop "HTTP" from that description, but am not too worried about it, so am inclined to leave it as is.

Jørgen Lang  Nov 23, 2023 
Page 277
Test Drive

Asking for "a friend", here (I actually know):

Why do we have to activate the Debugging mode in Flask and then select "Run without Debugging" from the menu? This seems to contradict itself.

(Just to bring this possible question to your attention…)

Note from the Author or Editor:
This is a good question. The debugging mode built into Flask is independent of the tool (or IDE) you use to run your Python program, and it provides "nicer" error messages when things go wrong with your webapp's code. The debugger built into VSCode can be used to debug *any* Python program, not just webapps, and running the VSCode debugger in addition to Flask's debug mode is likely overkill.

Jørgen Lang  Nov 10, 2023 
Page 292
1st code annotation, right side

Original: When Jinja2 see this markup […]
Fix: When Jinja2 sees this markup […]

Note from the Author or Editor:
Change "see" to "sees" in top-right annotation.

Jørgen Lang  Nov 10, 2023 
Page 303,304,552,553,554
function name

On pages 303,304 a function "list_swimmer_files" is defined.
On pages 552,553,554 the function is called "list_swimmer_files" (plural 's' in 'swimmers'). Which one is correct? Should the names be harmonised?

Note from the Author or Editor:
The correct name for the function on all of these referred to pages should be "display_swimmers_files". The book's code, available for download from the GitHUB page uses the correct name (which, I'll admit, doesn't help those readers working through the actual book). This edit needs to be applied across all of the book's digital (and paper) formats.

Jørgen Lang  Apr 10, 2024 
Page 340
bottom code cell, line 16

Isssue: After following the instructions to edit line 16 of the WSGI configuration a little warning triangle is shown left of the line number. If I hover over it, a message is shown, saying, "'app.app as application' imported but unused.".

The deployed app seems to run fine, though. I don't think it's a big problem but some readers might be irritated.

Note from the Author or Editor:
Add a small annotation to instruct the reader not to worry about the warning triangle (which is a PythonAnywhere thing, but nothing to get too excited about).

Jørgen Lang  Nov 28, 2023 
Page 348
clue for 3 down

Original: "In Jinja templates, the Python code […]"
Fix: Add "2".

Note from the Author or Editor:
Page 347 and 348, crossword clue "3 down", replace Jinja with Jinja2.

Jørgen Lang  Nov 29, 2023 
Page 351
5th paragraph

next to last line of Mara's paragraph, "an idea of how that are progressing"
"that" probably should be "they"

Note from the Author or Editor:
Change "that" to "they" Mara's second paragraph from top of page.

Gary Stebbins  May 14, 2024 
Page 354
there are no dumb questions - question 3

Question 3: The answer states "Rarely. The code used with the Coach's webapp happily runs on Python 3.6 and above (due to its use of f-stings) - f-stings should be f-strings.

Note from the Author or Editor:
This errata refers to page 345... and yes, it should read "f-string". (Second line of answer to question at top-right of page).

Laura Phillips  Sep 04, 2024 
Page 359
3rd code cell from top

Some readers on macOS (I used 14.2 Sonoma) might encounter an "SSLCertVerificationError".

To prevent this, open the /Applications/Python [your.version]/ folder.
There you will find "Install Certificates.command".
Double click it and a command line will open to automatically install the certificates.

After that, retry in your notebook to fetch the page.

Note from the Author or Editor:
I cannot replicate this issue on my Mac (running Sonoma 14.1.2). I suspect this is a (very) platform specific issue. On my Mac, which runs Homebrew, this is not an issue. It's also not an issue (as far as I can tell) on Windows nor Linux. It also didn't present on macOS Monterey nor Ventura (which were used during the writing of the book). Of course, that's not to say this isn't an issue this reader has experienced...

Jørgen Lang  Dec 02, 2023 
Page 389
Intro, 1st sentence (2nd thought!)

Original: »Perhaps you have a isn’t arranged in the way it needs to be.list of lists, but you really need a dictionary of dictionaries.«

It actually looks very much as if part of the intro heading accidentally got copied into this sentence. If you remove "isn’t arranged in the way it needs to be." it all makes sense again and the 1st sentence becomes:

»Perhaps you have a list of lists, but you really need a dictionary of dictionaries.«

Note from the Author or Editor:
The text on this page should mirror that from the Table of Contents, page xvii.

Adjust the opening text to match page xvii.

Jørgen Lang  Dec 06, 2023 
Page 409
1st para, 2nd sentence

Original: "To get started, add to your list of imports …"
Issue: Possibly missing info about what is being added - but also works as is since it is clarified in the annotations below.
Suggested change: "To get started, add »json« to your list of imports …"

Note from the Author or Editor:
Add the word "json" as per suggested change.

Jørgen Lang  Dec 08, 2023 
Page 413
last paragraph (Illustration text)

"This is an near perfect match..."
"an" should be "a"

Note from the Author or Editor:
Change "an" to "a" in annotation text at start of bottom-left of this page.

Gary Stebbins  May 15, 2024 
Page 419
last para

Text: "Just be aware that your utility won’t run on your computer as the folder referenced by WHERE likely doesn’t exist (so if running locally, adjust the value of where as needed)."

Q: Wouldn't this be a good use case for the "__name__ == __main__" idiom?

Note from the Author or Editor:
That's an interesting suggestion (which would work). However, in later material (especially page 587, chapter 12) I present a solution to this problem when discussing the use of different database credentials on different platforms... which could also be used to solve the issue you are referring to (although - to be honest - it becomes a "non-issue" once the reader starts using a "real" database).

Jørgen Lang  Dec 09, 2023 
Page 430
Headline

From the table contents 9.1/2 Tabular Data, page xviii.

"Don’t use "pandas", use "pd" instead"

Doesn't exist it is instead, page 430.

"Start by conforming to convention"

Note from the Author or Editor:
The TOC on page xviii needs to be regenerated to pick up the correct page title from page 430.

Johan Göransson  Jul 29, 2024 
Page 431
top right code annotation, last sentence

Original: "When “head” is used, it shows the first five rows from the dataframe."
Suggestion: Add info that 5 is the default value, but other numbers can be given, e.g. table.head(3).

Note from the Author or Editor:
Change the last line of the "head" annotation to read:

When "head" is used, it defaults to showing the first five rows from the dataframe, but other amounts can be specified, for example: ".head(10)" or ".head(3)".

Jørgen Lang  Dec 11, 2023 
Page 437
lower annotation text

2/3 down the paragraph
"is associated with a inner,"

"a" should be "an"

Gary Stebbins  May 16, 2024 
Page 448
2nd column, 1st bullet point

Original: "The head function, lets you view the first five rows of
data in any dataframe."

Suggestion: Add a little annotation regarding default behaviour of head().

Note from the Author or Editor:
Change this bullet point to read: "The head function lets you view any number of rows of data from the start of your dataframe (and defaults to the first five)."

Jørgen Lang  Dec 12, 2023 
Page 448
Bullet Points, left column, 4th bullet

4th line, "assumming" should be "assuming"

Gary Stebbins  May 16, 2024 
Page 485
test drive, 1st para below code cell

Text: "When we Ctrl+Click on the code cell, which reruns and displays all the data, we see this:"

Question: Did you maybe mean "When we Ctrl+Enter…"?

Note from the Author or Editor:
Change "Ctrl-Click" to read "Ctrl-Enter" (in the Test Drive text area).

Jørgen Lang  Dec 18, 2023 
Printed, PDF, ePub, Mobi, O'Reilly learning platform
Page 485
In the Test Drive, second sentence

In the Test Drive, the second line of text (just before the output) should read:

"When we press Ctrl+Enter to rerun the code cell shown at the bottom of page 481 - displaying all the data - we see this:"

(Thanks for Bill on GitHUB for alerting me to this issue).

Paul Barry
Paul Barry
 
Jan 22, 2024 
Page 514
last paragraph, description, last indented line

Original: "[tab] filtering condition holds.."
Issue: double period
Fix: remove on and reuse

Note from the Author or Editor:
Remove extra period at the end of the indented text at bottom of page.

Jørgen Lang  Jan 02, 2024 
Page 562
bottom

Original: "This is the only new line of code […]"

Issue: This seems to contradict the statement in the middle annotation ("two new functions") by stating that it is "the only new line of code".

It's a little unclear what is meant here. There might be an annotation missing that introduces the second "new" function or the bottom annotation might need an addition to read like, "This is the only new line of code in the second function."

Note from the Author or Editor:
Add "in this second function" before the comma on the first line of the last annotation on this page.

Jørgen Lang  Jan 06, 2024 
Page 564
2nd paragraph, last sentence

Original: "Here is our code. How does your compare?"
Fix: Change to: "Here is our code. How does yours compare?"

Note from the Author or Editor:
Change "your" to "yours" at the end of paragraph 2, middle of page.

Jørgen Lang  Jan 06, 2024 
Page 569, 570
xword, 4 down

Original: "The fetchall database method (when is returns data) always returns a list of these."
Fix: "The fetchall database method (when it returns data) always returns a list of these."

Note from the Author or Editor:
Change "is" to "it" for 4 down clue.

Jørgen Lang  Jan 06, 2024 
Page 569, 570
xword, 6 down

Problem: The term "generator" was not introduced up to this point in the book. First (and only) mention is on page 609 in connection with decorators and context managers (sic!).

Note from the Author or Editor:
On page 568, change the first bullet point at the top of the list on the right hand side to read: "There's no such thing as a tuple comprehension. If you try to create one, you'll end up with a Python generator (but don't even go there)."

Jørgen Lang  Jan 06, 2024 
Page 573
4th paragraph (Mara)

Issue: Multi-user capabilities of SQLite.
Problem: back on page 453 (last three paragraphs), multi-user capabilities were the selling point for SQLite:

Sam: Yes. Databases are designed to manage your
application’s data, as well as share it efficiently and safely
among multiple users.

Mara: Is it easy to use a database with Python?

Sam: Yes. And, believe it or not, Python comes with the
world’s most popular SQL-based database technology already
built in. It’s called SQLite.

It does not break the overall storytelling but it might cause a little twist in continuity.

Note from the Author or Editor:
Changes to Cubicle Conversation on page 453.

Third from last para (Sam): change "multiple users." to "multiple users (when supported)." at end of sentence.

Last para (Sam): change the word "technology" to "engine".

Jørgen Lang  Jan 08, 2024 
Page 575, 578, 586, 588
various

"swimpasswd"

Issue: On pages 575, 578, 588 "swimmpasswd" is used as password for the MariaDB/MySQL user. On page 586 the top left annotation says, "Use the same password as for your local database, which is “swimpasswd” for us, but should be something different for you."

Instructions to choose another password should probably be on page 575. Otherwise the annotation may be confusing and instructions or pointers on how to change the pw are needed.

Note from the Author or Editor:
Change the first annotation on page 586 to read: "You can, of course, use the same password for your cloud-based database as you used locally on your computer. If you decide to use something other than 'swimpasswd', be sure to adjust the code over the page to reference your chosen cloud password as entered here."

Jørgen Lang  Jan 16, 2024 
Page 578
1st heading

Issue: Here the heading "Reusing your tables, 2 of 2" is formatted as "Heading1", while two pages before "Heading2" is used to format "Reusing your tables, 1 of 2".

Note from the Author or Editor:
Changing the heading on page 576 to "Heading1" is possible, but will impact the TOC (as all Heading1s make an appearance there). Changing the heading on page 578 to a Heading2 goes a little against the Head First page layout standards. I'm going to cop-out here, and leave it up to the O'Reilly editors to decide which of these heading formatting options is changed (if any). ;-)

Jørgen Lang  Jan 08, 2024 
Page 592
Picture

On the final "/swims" page on the webapp its prompting the user to "please select a chosen_date". By substituing "chosen_date" to "date" in the final app.py version you can make this prettier to "please select a date".

Love your book! Thanks a lot :)

Note from the Author or Editor:
Yes, indeed, the messaging on the "Select a swim session" form could be better. Further proof that UI design is not my strong suit. Please adjust the messaging as required.

Jost Jens  Oct 17, 2024 
Page 602
2nd question

Original: "The PSL contains a module called dataclass."
Issue: The module is actually called "dataclasses". The imported method is called "dataclass".

Note from the Author or Editor:
Change the "dataclass" in mono (courier) font to read "dataclasses" under point #2.

Jørgen Lang  Jan 10, 2024 
Printed, PDF, ePub, Mobi, O'Reilly learning platform, Other Digital Version
Page 604
First annotation at top-right of page.

On the third line of this annotation, change "jus-created" to "just-created".

Paul Barry
Paul Barry
 
Oct 02, 2024 
Page 2444
3rd paragraph

Original: "And of course (your old friend) the print dir combo mambo reports the list of methods included with every dictionar"
Issue: Last two characters are missing ("y:").

Note from the Author or Editor:
Add "y:" to the end of the line as indicated above. The actual page number is 244.

Jørgen Lang  Nov 07, 2023