Sign In Start Free Trial
Account

Add to playlist

Create a Playlist

Modal Close icon
You need to login to use this feature.
  • Book Overview & Buying Hands-On Software Engineering with Python
  • Table Of Contents Toc
Hands-On Software Engineering with Python

Hands-On Software Engineering with Python - Second Edition

By : Brian Allbee
close
close
Hands-On Software Engineering with Python

Hands-On Software Engineering with Python

By: Brian Allbee

Overview of this book

Software engineering is more than coding; it’s the strategic design and continuous improvement of systems that serve real-world needs. This newly updated second edition of Hands-On Software Engineering with Python expands on its foundational approach to help you grow into a senior or staff-level engineering role. Fully revised for today’s Python ecosystem, this edition includes updated tooling, practices, and architectural patterns. You’ll explore key changes across five minor Python versions, examine new features like dataclasses and type hinting, and evaluate modern tools such as Poetry, pytest, and GitHub Actions. A new chapter introduces high-performance computing in Python, and the entire development process is enhanced with cloud-readiness in mind. You’ll follow a complete redesign and refactor of a multi-tier system from the first edition, gaining insight into how software evolves—and what it takes to do that responsibly. From system modeling and SDLC phases to data persistence, testing, and CI/CD automation, each chapter builds your engineering mindset while updating your hands-on skills. By the end of this book, you'll have mastered modern Python software engineering practices and be equipped to revise and future-proof complex systems with confidence.
Table of Contents (22 chapters)
close
close
21
Index

Picking a Python version for a project

When the work on this book started, Python 3.11 was selected as the language version that code would be written in. There were several reasons for that selection, but the primary one was that it had been available for long enough to be in a security maintenance cycle, and with no expectation of significant changes other than for security issues. That was early in 2024, and support for the version is, as the book is being finished, going to continue for another two years, ending in October of 2027. Hand in hand with that was the fact that the bulk of the work I was doing was writing and maintaining AWS Lambda Functions written in Python, and although the 3.12 version was available for those purposes, it was new enough that I didn’t have a lot of hands-on experience with it in that context.

The Python Software Foundation, the maintainers of the language, have historically been very good about publishing comprehensive documentation of the changes to the language as each new minor version is released. Their documentation for any given version can be found online at https://www.python.org/doc/versions/, and is updated as each new version is released, including the patch versions.

Python versioning follows Semantic Versioning (SEMVER)

Semantic versioning defines a version naming standard that identifies major, minor, and patch versions. In formal SEMVER, major version changes, like the change from Python 2.x to 3.x, indicate significant, incompatible changes with the previous major version. Minor version changes, for example, from 3.11 to 3.12, indicate the addition of functionality in a backward-compatible manner, and patch version changes — 3.11.12 to 3.11.13 — indicate bug fixes that are implemented in a backward-compatible manner. Python releases may not strictly follow SEMVER standards, though I cannot point to an example where that has not been the case. Typically, as features and functionality in Python are slated for removal, they are flagged as deprecated — no longer recommended for use, and planned for removal — and will raise warnings as code that uses them is executed.

Python’s release schedule and support processes are well documented online (see https://devguide.python.org/versions/), with a cadence of approximately five years between the initial release of a minor version and its official end of life. In more recent versions, the first two years or so of a given version’s life include a bugfix support phase, and the remaining three years are limited to security support. Online providers will frequently follow the life cycle of any given Python version with respect to their support of that version, though they may allow continued use of a version that has officially reached its end of life. By way of example, Amazon Web Services’ (AWS’) Python version support, as of the end of 2025, included Python 3.9, with an official end of life in October of 2025, was a supported version, with its deprecation planned in December 2025, and limitations on the ability to create or update Lambda Functions using that version starting early in 2026.

So, taking all of these factors into consideration, the determination of what Python version to use for any given project is a decision that needs to be made based on a number of factors:

  • As a general rule, the most recent version available may be preferable, simply because it will provide the most current capabilities that the language provides, and will have the longest lifespan.
  • Restrictions or constraints by a provider may limit those options: Using AWS as an example again, they appear to start supporting a given version of Python about a month after it is released, but that may not always be the case. Other providers may have different limitations, or it may be that the OS where development work is being done imposes its own limitation (not uncommon for Linux systems that use Python for key applications or tools).
  • Even if a just-released new version is supported, there is some risk assessment that should be undertaken: The bugfix phase of the version will last for two years, and there is some risk that bug fixes implemented during that period will be problematic. The same holds true for versions that are in the security phase of their lives, though generally those have fewer issues on a release-by-release basis, likely because most of the bugs have already been dealt with by then.
  • Checking the Changelog for a given version (https://docs.python.org/release/3.11.13/whatsnew/changelog.html, for example, for 3.11), or the release notes (https://docs.python.org/3/whatsnew/3.11.html for 3.11 again) may also be useful if there are specific features that are needed or desired in the project, that may not be available or implemented as expected.

As of the end of 2025, assuming that the preference is to avoid versions in their bugfix phase, the most current version that fits that criteria is 3.12. Version 3.13 would be viable with the same considerations driving version selection by the end of 2026, and 3.14, expected to be released in October 2025, would be viable by the end of 2027.

CONTINUE READING
83
Tech Concepts
36
Programming languages
73
Tech Tools
Icon Unlimited access to the largest independent learning library in tech of over 8,000 expert-authored tech books and videos.
Icon Innovative learning tools, including AI book assistants, code context explainers, and text-to-speech.
Icon 50+ new titles added per month and exclusive early access to books as they are being written.
Hands-On Software Engineering with Python
notes
bookmark Notes and Bookmarks search Search in title playlist Add to playlist download Download options font-size Font size

Change the font size

margin-width Margin width

Change margin width

day-mode Day/Sepia/Night Modes

Change background colour

Close icon Search
Country selected

Close icon Your notes and bookmarks

Confirmation

Modal Close icon
claim successful

Buy this book with your credits?

Modal Close icon
Are you sure you want to buy this book with one of your credits?
Close
YES, BUY

Submit Your Feedback

Modal Close icon
Modal Close icon
Modal Close icon