{"id":3894,"library":"awesomeversion","title":"AwesomeVersion","description":"AwesomeVersion is a Python library designed to parse, compare, and manage various version formats, acting as a universal solution for version string manipulation. It allows making anything a version object and comparing it against a wide range of other version formats. The library is actively maintained with frequent releases, often multiple times a month, providing continuous improvements and new features.","status":"active","version":"25.8.0","language":"en","source_language":"en","source_url":"https://github.com/ludeeus/awesomeversion","tags":["versioning","comparison","semver","software-versions"],"install":[{"cmd":"pip install awesomeversion","lang":"bash","label":"Install latest version"}],"dependencies":[{"reason":"Minimum Python version required for the library.","package":"python","version":">=3.9"}],"imports":[{"symbol":"AwesomeVersion","correct":"from awesomeversion import AwesomeVersion"}],"quickstart":{"code":"from awesomeversion import AwesomeVersion\n\n# Basic comparison\ncurrent = AwesomeVersion(\"1.2.2\")\nupstream = AwesomeVersion(\"1.2.3\")\nprint(f\"Is upstream newer than current? {upstream > current}\")\n\n# Version with a pre-release tag\nversion_beta = AwesomeVersion(\"1.2.3b0\")\nprint(f\"Is version_beta a beta release? {version_beta.beta}\")\n\n# Check if a version is within a range\nrange_check = AwesomeVersion(\"1.5.0\").in_range(\"1.0.0\", \"2.0.0\")\nprint(f\"Is 1.5.0 in range 1.0.0-2.0.0? {range_check}\")","lang":"python","description":"Initialize `AwesomeVersion` objects and use them for comparisons, attribute access (like checking for beta status), and range checks. This demonstrates the core functionality of parsing and comparing version strings."},"warnings":[{"fix":"Upgrade your Python environment to version 3.9 or higher.","message":"Support for Python 3.8 was officially removed. Projects using AwesomeVersion 25.5.0 or newer must run on Python 3.9 or later.","severity":"breaking","affected_versions":">=25.5.0"},{"fix":"Always use keyword arguments (e.g., `AwesomeVersion(version='1.2.3', ensure_strategy=True)`) when initializing `AwesomeVersion`.","message":"The use of positional arguments when creating an `AwesomeVersion` object was deprecated in version 22.8.0 and completely removed in version 24.6.0. Attempting to use positional arguments will now raise an error.","severity":"breaking","affected_versions":">=24.6.0"},{"fix":"Instead of directly calling `ensure_strategy`, pass `ensure_strategy=True` or `find_first_match=True` as keyword arguments to the `AwesomeVersion` constructor if you need this functionality.","message":"The `AwesomeVersion.ensure_strategy` method was deprecated and subsequently removed in version 22.6.0. Direct calls to this method will no longer work.","severity":"breaking","affected_versions":">=22.6.0"},{"fix":"Always explicitly provide the `ensure_strategy` argument (e.g., `ensure_strategy='semver'`) when using `find_first_match` to guarantee the desired parsing behavior.","message":"When using `find_first_match` without explicitly setting an `ensure_strategy` in the `AwesomeVersion` constructor, the library attempts to auto-detect the version strategy. This implicit behavior can lead to unexpected parsing if the auto-detected strategy doesn't match your expectation, making it a potential footgun for robust version parsing. Warnings regarding this behavior were added in 22.8.0 and clarified in 24.6.0.","severity":"gotcha","affected_versions":"All versions when using `find_first_match` implicitly"}],"env_vars":null,"last_verified":"2026-04-11T00:00:00.000Z","next_check":"2026-07-10T00:00:00.000Z"}