Skip to main content

feu :fire:

CI Nightly Tests Nightly Package Tests Codecov
Documentation Documentation
Code style: black Doc style: google Ruff Doc style: google
PYPI version Python BSD-3-Clause
Downloads Monthly downloads

Overview

feu (French word for "fire" 🔥) is a lightweight Python library designed to help manage Python packages and their versions across different Python environments.

Key Features

  • Check package availability: Verify if packages and modules are installed
  • 🔄 Version-aware installation: Install packages with automatic version compatibility checks
  • 🎯 Smart version resolution: Find the closest valid package version for your target environment (Python version, free-threadedness, OS, and CPU architecture)
  • 📋 Package registry: Built-in compatibility information for popular packages (numpy, pandas, polars, torch, etc.)
  • 🔍 PyPI-backed discovery: Automatically discover version compatibility from PyPI for packages that aren't in the built-in registry
  • 🐙 GitHub utilities: Fetch and sort repository metadata from the GitHub API
  • 🖥️ CLI tools: Command-line interface for package management tasks
  • 🪶 Lightweight: Minimal dependencies (only packaging required for core functionality)

Quick Example

from feu.imports import is_package_available
from feu.compat import Target, find_closest_version
from feu.version import get_package_version

# Check if a package is available
if is_package_available("numpy"):
    version = get_package_version("numpy")
    print(f"NumPy {version} is installed!")

# Find the closest valid version for your Python version
version = find_closest_version(
    pkg_name="numpy", pkg_version="2.0.2", target=Target(python_version="3.10")
)
print(f"Closest valid version: {version}")

Why feu?

Managing Python package versions across different Python versions can be challenging. Different Python versions support different package versions, and manually tracking compatibility can be error-prone. feu solves this by:

  1. Automating version selection: Automatically finds compatible package versions for your Python environment
  2. Preventing installation failures: Validates versions before installation to avoid runtime errors
  3. Simplifying multi-version support: Makes it easy to support multiple Python versions in your projects
  4. Providing graceful fallbacks: Check package availability and provide alternatives when packages aren't installed

Documentation

Quick Links

Installation

We highly recommend installing a virtual environment. feu can be installed from pip using the following command:

pip install feu

To make the package as slim as possible, only the minimal packages required to use feu are installed. To include all the dependencies, you can use the following command:

pip install feu[all]

Please check the get started page to see how to install only some specific dependencies or other alternatives to install the library. The following is the corresponding feu versions and supported dependencies.

feu packaging python click* gitpython* requests* rich*
main >=21.0,<27.0 >=3.10 >=8.1,<9.0 >=3.1.41,<4.0 >=2.30,<3.0 >=14.0.0,<16.0
0.8.2 >=21.0,<27.0 >=3.10 >=8.1,<9.0 >=3.1.41,<4.0 >=2.30,<3.0 >=14.0.0,<16.0
0.8.1 >=21.0,<27.0 >=3.10 >=8.1,<9.0 >=3.1.41,<4.0 >=2.30,<3.0 >=14.0.0,<16.0
0.8.0 >=21.0,<27.0 >=3.10 >=8.1,<9.0 >=3.1.41,<4.0 >=2.30,<3.0 >=14.0.0,<16.0
0.7.3 >=21.0,<27.0 >=3.10 >=8.1,<9.0 >=3.1.41,<4.0 >=2.30,<3.0
0.7.2 >=21.0,<27.0 >=3.10 >=8.1,<9.0 >=3.1.41,<4.0 >=2.30,<3.0
0.7.1 >=21.0,<27.0 >=3.10 >=8.1,<9.0 >=3.1.41,<4.0 >=2.30,<3.0
0.7.0 >=21.0,<27.0 >=3.10 >=8.1,<9.0 >=3.1.41,<4.0 >=2.30,<3.0
0.6.2 >=21.0,<27.0 >=3.10 >=8.1,<9.0 >=3.1.41,<4.0 >=2.30,<3.0
0.6.1 >=21.0,<26.0 >=3.10 >=8.1,<9.0 >=3.1.41,<4.0 >=2.30,<3.0
0.6.0 >=21.0,<26.0 >=3.10 >=8.1,<9.0 >=3.1.41,<4.0 >=2.30,<3.0
0.5.0 >=21.0,<26.0 >=3.10,<3.15 >=8.1,<9.0 >=3.1.41,<4.0 >=2.30,<3.0

* indicates an optional dependency

older versions
feu packaging python click* gitpython* fire* requests*
0.4.2 >=21.0,<26.0 >=3.10,<3.15 >=8.1,<9.0 >=3.1.41,<4.0 >=2.30,<3.0
0.4.1 >=21.0,<26.0 >=3.10,<3.15 >=8.1,<9.0 >=3.1.41,<4.0 >=2.30,<3.0
0.4.0 >=21.0,<26.0 >=3.9,<3.14 >=8.1,<9.0 >=3.1.41,<4.0 >=2.30,<3.0
0.3.5 >=21.0,<26.0 >=3.9,<3.14 >=8.1,<9.0 >=3.1.41,<4.0
0.3.4 >=21.0,<26.0 >=3.9,<3.14 >=8.1,<9.0 >=3.1.41,<4.0
0.3.3 >=21.0,<26.0 >=3.9,<3.14 >=8.1,<9.0 >=3.1.41,<4.0
0.3.2 >=21.0,<25.0 >=3.9,<3.14 >=8.1,<9.0
0.3.1 >=21.0,<25.0 >=3.9,<3.14 >=8.1,<9.0
0.3.0 >=21.0,<25.0 >=3.9,<3.14 >=8.1,<9.0
0.2.4 >=21.0,<25.0 >=3.9,<3.13 >=8.1,<9.0
0.2.3 >=21.0,<25.0 >=3.9,<3.13 >=8.1,<9.0
0.2.2 >=21.0,<25.0 >=3.9,<3.13 >=8.1,<9.0
0.2.1 >=21.0,<25.0 >=3.9,<3.13 >=8.1,<9.0
0.2.0 >=21.0,<25.0 >=3.9,<3.13 >=8.1,<9.0
0.1.1 >=21.0,<25.0 >=3.9,<3.13 >=0.6.0,<1.0
0.1.0 >=21.0,<25.0 >=3.9,<3.13 >=0.6.0,<1.0
0.0.7 >=21.0,<25.0 >=3.9,<3.13
0.0.6 >=21.0,<25.0 >=3.9,<3.13
0.0.5 >=21.0,<25.0 >=3.9,<3.13
0.0.4 >=21.0,<25.0 >=3.9,<3.13
0.0.3 >=21.0,<25.0 >=3.9,<3.13
0.0.2 >=22.0,<24.0 >=3.9,<3.13
0.0.1 >=22.0,<23.3 >=3.9,<3.13

Contributing

Please check the instructions in CONTRIBUTING.md.

Suggestions and Communication

Everyone is welcome to contribute to the community. If you have any questions or suggestions, you can submit Github Issues. We will reply to you as soon as possible. Thank you very much.

API stability

:warning: While feu is in development stage, no API is guaranteed to be stable from one release to the next. In fact, it is very likely that the API will change multiple times before a stable 1.0.0 release. In practice, this means that upgrading feu to a new version will possibly break any code that was using the old version of feu.

License

feu is licensed under BSD 3-Clause "New" or "Revised" license available in LICENSE file.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

feu-0.8.2.tar.gz (56.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

feu-0.8.2-py3-none-any.whl (91.2 kB view details)

Uploaded Python 3

File details

Details for the file feu-0.8.2.tar.gz.

File metadata

  • Download URL: feu-0.8.2.tar.gz
  • Upload date:
  • Size: 56.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for feu-0.8.2.tar.gz
Algorithm Hash digest
SHA256 f91240f1b6823d9452dd00573a61c4494f895aad4693c554ad3af8ba3aa27e2e
MD5 50236a3066394e62cd64c200aa3cfb5a
BLAKE2b-256 5dcfd566c338bec4bd077f2576eaf96c30d44b0078a13dd39c72c9b3c30d44e9

See more details on using hashes here.

File details

Details for the file feu-0.8.2-py3-none-any.whl.

File metadata

  • Download URL: feu-0.8.2-py3-none-any.whl
  • Upload date:
  • Size: 91.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for feu-0.8.2-py3-none-any.whl
Algorithm Hash digest
SHA256 657158de43688c57f2971a8920d73fa291685db0b2e3c621eaa63a7b1ff99a77
MD5 2f03d3d8149353664b1faeb65366ddab
BLAKE2b-256 aef7d2996a1dc80c4dd324858a2ccedb0bf82af135620e1dfa89361f228d6192

See more details on using hashes here.

Release history Release notifications | RSS feed

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page