Skip to content

Utils

feu.utils

Contain the utility functions.

feu.utils.command

Contain utility functions to run commands.

feu.utils.command.run_bash_command

run_bash_command(cmd: str) -> None

Execute a bash command.

Parameters:

Name Type Description Default
cmd str

The command to run.

required

Example usage:

>>> from feu.utils.command import run_bash_command
>>> run_bash_command("ls -l")  # doctest: +SKIP

feu.utils.installer

Contain utility functions to manage installers.

feu.utils.installer.InstallerSpec dataclass

Define a dataclass to represent an installer specification.

Parameters:

Name Type Description Default
name str

The installer name.

required
arguments str

A string containing optional installer arguments.

''

Example usage:

>>> from feu.utils.installer import InstallerSpec
>>> installer1 = InstallerSpec("pip")
>>> installer1
InstallerSpec(name='pip', arguments='')
>>> installer2 = InstallerSpec("pip", arguments="-U")
>>> installer2
InstallerSpec(name='pip', arguments='-U')

feu.utils.package

Contain utility functions to manage packages.

feu.utils.package.PackageDependency dataclass

Define a dataclass to represent a package dependency.

Parameters:

Name Type Description Default
name str

The package name.

required
version_specifiers list[str] | None

Optional package version specifies.

None
extras list[str] | None

Optional package extra dependencies.

None

Example usage:

>>> from feu.utils.package import PackageDependency
>>> pkg1 = PackageDependency("my_package")
>>> pkg1
PackageDependency(name='my_package', version_specifiers=None, extras=None)
>>> pkg2 = PackageDependency("my_package", version_specifiers=["==1.2.3"])
>>> pkg2
PackageDependency(name='my_package', version_specifiers=['==1.2.3'], extras=None)
>>> pkg3 = PackageDependency(
...     "my_package", version_specifiers=["==1.2.3"], extras=["security", "socks"]
... )
>>> pkg3
PackageDependency(name='my_package', version_specifiers=['==1.2.3'], extras=['security', 'socks'])

feu.utils.package.PackageSpec dataclass

Define a dataclass to represent a package specification.

Parameters:

Name Type Description Default
name str

The package name.

required
version str | None

An optional package version.

None
extras list[str] | None

Optional package extra dependencies.

None

Example usage:

>>> from feu.utils.package import PackageSpec
>>> pkg1 = PackageSpec("my_package")
>>> pkg1
PackageSpec(name='my_package', version=None, extras=None)
>>> pkg2 = PackageSpec("my_package", version="1.2.3")
>>> pkg2
PackageSpec(name='my_package', version='1.2.3', extras=None)
>>> pkg3 = PackageSpec("my_package", version="1.2.3", extras=["security", "socks"])
>>> pkg3
PackageSpec(name='my_package', version='1.2.3', extras=['security', 'socks'])

feu.utils.package.PackageSpec.to_package_dependency

to_package_dependency() -> PackageDependency

Convert to a PackageDependency.

Returns:

Type Description
PackageDependency

The current package as a package dependency.

Example usage:

>>> from feu.utils.package import PackageSpec
>>> pkg = PackageSpec("my_package")
>>> dep = pkg.to_package_dependency()
>>> dep
PackageDependency(name='my_package', version_specifiers=None, extras=None)

feu.utils.package.PackageSpec.with_version

with_version(version: str | None) -> PackageSpec

Create a new PackageSpec instance with the given version.

Parameters:

Name Type Description Default
version str | None

The new version to apply.

required

Returns:

Type Description
PackageSpec

A new instance of PackageSpec with the updated version.

Example usage:

>>> from feu.utils.package import PackageSpec
>>> pkg = PackageSpec("my_package", version="1.2.0")
>>> pkg
PackageSpec(name='my_package', version='1.2.0', extras=None)
>>> pkg2 = pkg.with_version("1.2.3")
>>> pkg2
PackageSpec(name='my_package', version='1.2.3', extras=None)

feu.utils.package.extract_package_extras

extract_package_extras(requirement: str) -> list[str]

Extract the optional extras from a requirement string.

The requirement string may include extras in square brackets, e.g., 'package[extra1,extra2]'. This function returns the list of extras.

Parameters:

Name Type Description Default
requirement str

The requirement string containing the package name and optionally extra dependencies.

required

Returns:

Type Description
list[str]

A list of extra requirements, or an empty list if none exist.

Example usage:

>>> from feu.utils.package import extract_package_extras
>>> extract_package_extras("numpy")
[]
>>> extract_package_extras("pandas[performance]")
['performance']
>>> extract_package_extras("requests[security,socks]")
['security', 'socks']

feu.utils.package.extract_package_name

extract_package_name(requirement: str) -> str

Extract the base package name from a requirement string.

The requirement string may include optional dependencies in square brackets, such as 'package[extra1,extra2]'. This function returns only the base package name without the extras.

Parameters:

Name Type Description Default
requirement str

The requirement string containing the package name and optionally extra dependencies.

required

Returns:

Type Description
str

The base package name without extras.

Example usage:

>>> from feu.utils.package import extract_package_name
>>> extract_package_name("numpy")
'numpy'
>>> extract_package_name("pandas[performance]")
'pandas'
>>> extract_package_name("requests[security,socks]")
'requests'

feu.utils.package.generate_extras_string

generate_extras_string(extras: Sequence[str]) -> str

Generate a string with the package extras i.e. optional dependencies.

Parameters:

Name Type Description Default
extras Sequence[str]

The package optional dependencies.

required

Returns:

Type Description
str

A string with the package extras.

Example usage:

>>> from feu.utils.package import generate_extras_string
>>> generate_extras_string(["security"])
'[security]'
>>> generate_extras_string(["security", "socks"])
'[security,socks]'
>>> generate_extras_string([])
''