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([])
''