semvec/pypi-packages huggingface dataset:
enthusiast-agent-product-search 1.2.0
Product Search Agent for Enthusiast
Requires Python: <4,>=3.10

# Enthusiast Product Search Agent

The Product Search agent takes unstructured user requests - anything from a rough idea to a precise query - and filters your product catalog to find relevant matches. When the request is ambiguous or too broad, it asks targeted follow-up questions until it narrows the results to the desired number of products.

## Installing the Product Search Agent

Run the following command inside your application directory:
```commandline
poetry add enthusiast-agent-product-search
```

Then, register the agent in your config/settings_override.py.

```python
AVAILABLE_AGENTS = {
    "enthusiast-agent-product-search": {
        "name": "Product Search",
        "agent_directory_path": "enthusiast_agent_product_search"
    },
}
```
biobb-flexdyn 5.2.0
biobb_flexdyn is a BioBB category for studies on the conformational landscape of native proteins.
Requires Python: <3.12,>=3.10
Keywords: 3D-Bioinfo ELIXIR FlexDyn Bioinformatics Workflows BioExcel Compatibility Flexibility Ensembles Protein Structure

biobb_flexdyn allows the generation of protein conformational ensembles from 3D structures and the analysis of its molecular flexibility.
eals-py312 0.9.7
eALS - Element-wise Alternating Least Squares
Requires Python: >=3.12

# eALS - Element-wise Alternating Least Squares

A Python implementation of the element-wise alternating least squares (eALS) for fast online matrix factorization proposed by [arXiv:1708.05024](https://arxiv.org/abs/1708.05024).

## Prerequisites

- Python >= 3.8, < 3.11

## Installation

```sh
pip install eals
```

## Usage

```python
import numpy as np
import scipy.sparse as sps
from eals import ElementwiseAlternatingLeastSquares, load_model

# batch training
user_items = sps.csr_matrix([[1, 2, 0, 0], [0, 3, 1, 0], [0, 4, 0, 4]], dtype=np.float32)
model = ElementwiseAlternatingLeastSquares(factors=2)
model.fit(user_items)

# learned latent vectors
model.user_factors
model.item_factors

# online training for new data (user_id, item_id)
model.update_model(1, 0)

# rating matrix and latent vectors will be expanded for a new user or item
model.update_model(0, 5)

# current rating matrix
model.user_items

# save and load the model
model.save("model.joblib")
model = load_model("model.joblib")
```

See the [examples](examples/) directory for complete examples.

## Development

### Setup development environment

```sh
git clone https://github.com/newspicks/eals.git
cd eals
poetry run pip install -U pip
poetry install
```

### Tests

```sh
poetry run pytest
```

Set `USE_NUMBA=0` for faster testing without numba JIT overhead.

```sh
USE_NUMBA=0 poetry run pytest
```

To run tests against all supported Python versions, use [tox](https://tox.readthedocs.io/).
You may need to add the Python versions in the `tox.ini` file.

```sh
poetry run tox
```
jumpstarter-driver-yepkit 0.7.4
Add your description here
Requires Python: >=3.11

# Yepkit driver

`jumpstarter-driver-yepkit` provides functionality for interacting with Yepkit
products.

## Installation

```{code-block} console
:substitutions:
$ pip3 install --extra-index-url {{index_url}} jumpstarter-driver-yepkit
```

## Configuration

Example configuration:

```yaml
export:
  power:
    type: jumpstarter_driver_yepkit.driver.Ykush
    config:
      serial: "YK25838"
      port: "1"

  power2:
    type: jumpstarter_driver_yepkit.driver.Ykush
    config:
      serial: "YK25838"
      port: "2"
```

### Config parameters

| Parameter | Description                                                       | Type | Required | Default |
| --------- | ----------------------------------------------------------------- | ---- | -------- | ------- |
| serial    | The serial number of the ykush hub, empty means auto-detection    | no   | None     |         |
| port      | The port number to be managed, "0", "1", "2", "a" which means all | str  | yes      | "a"     |

## API Reference

The yepkit ykush driver provides a `PowerClient` with the following API:

```{eval-rst}
.. autoclass:: jumpstarter_driver_power.client.PowerClient()
    :members: on, off, cycle
    :no-index:
```

### Examples

Powering on and off a device
```{testcode}
:skipif: True
client.power.on()
time.sleep(1)
client.power.off()
```

### CLI access

```shell
$ sudo ~/.cargo/bin/uv run jmp shell --exporter-config ./packages/jumpstarter-driver-yepkit/examples/exporter.yaml
WARNING:Ykush:No serial number provided for ykush, using the first one found: YK25838
INFO:Ykush:Power OFF for Ykush YK25838 on port 1
INFO:Ykush:Power OFF for Ykush YK25838 on port 2

$$ j
Usage: j [OPTIONS] COMMAND [ARGS]...

  Generic composite device

Options:
  --help  Show this message and exit.

Commands:
  power   Generic power
  power2  Generic power

$$ j power on
INFO:Ykush:Power ON for Ykush YK25838 on port 1

$$ exit
```
jumpstarter-driver-tftp 0.7.4
Add your description here
Requires Python: >=3.11

# TFTP driver

`jumpstarter-driver-tftp` provides functionality for a read-only TFTP server
that can be used to serve files.

## Installation

```{code-block} console
:substitutions:
$ pip3 install --extra-index-url {{index_url}} jumpstarter-driver-tftp
```

## Configuration

Example configuration:

```yaml
export:
  tftp:
    type: jumpstarter_driver_tftp.driver.Tftp
    config:
      root_dir: /var/lib/tftpboot        # Directory to serve files from
      host: 192.168.1.100                # Host IP to bind to (optional)
      port: 69                           # Port to listen on (optional)
      remove_created_on_close: true      # Clean up temporary boot files (default)
```

### Config parameters

| Parameter               | Description                                                      | Type | Required | Default             |
| ----------------------- | ---------------------------------------------------------------- | ---- | -------- | ------------------- |
| root_dir                | Root directory for the TFTP server                               | str  | no       | "/var/lib/tftpboot" |
| host                    | IP address to bind the server to                                 | str  | no       | auto-detect         |
| port                    | Port number to listen on                                         | int  | no       | 69                  |
| remove_created_on_close | Automatically remove created files/directories when driver closes| bool | no       | true                |

### File Management

The TFTP server driver automatically tracks files and directories created during the session. By default, `remove_created_on_close` is set to `true` to clean up temporary boot files automatically. Set to `false` if you want to preserve boot files and firmware images that are reused across sessions.

## API Reference

```{eval-rst}
.. autoclass:: jumpstarter_driver_tftp.client.TftpServerClient()
   :members:
   :show-inheritance:
```

### Exception Classes

```{eval-rst}
.. autoclass:: jumpstarter_driver_tftp.driver.TftpError
   :members:
   :show-inheritance:

.. autoclass:: jumpstarter_driver_tftp.driver.ServerNotRunning
   :members:
   :show-inheritance:
```

### Examples

```{doctest}
>>> import tempfile
>>> import os
>>> from jumpstarter_driver_tftp.driver import Tftp
>>> from jumpstarter.common.utils import serve
>>> with tempfile.TemporaryDirectory() as tmp_dir:
...     # Create a test file
...     test_file = os.path.join(tmp_dir, "test.txt")
...     with open(test_file, "w") as f:
...         _ = f.write("hello")
...
...     # Start TFTP server
...     with serve(Tftp(root_dir=tmp_dir, host="127.0.0.1", port=6969)) as tftp:
...         tftp.start()
...
...         # List files
...         files = list(tftp.storage.list("/"))
...         assert "test.txt" in files
...
...         tftp.stop()
```
jumpstarter-driver-tasmota 0.7.4
Jumpstarter driver for controlling Tasmota-compatible devices via MQTT
Requires Python: >=3.11

# Tasmota driver

`jumpstarter-driver-tasmota` provides functionality for interacting with tasmota compatible devices.

## Installation

```{code-block} console
:substitutions:
$ pip3 install --extra-index-url {{index_url}} jumpstarter-driver-tasmota
```

## Configuration

Example configuration:

```yaml
export:
  power:
    type: jumpstarter_driver_tasmota.driver.TasmotaPower
```

### Config parameters

| Parameter    | Description                                                     | Default  |
|--------------|-----------------------------------------------------------------|----------|
| `host`       | MQTT broker hostname or IP address                              | Required |
| `port`       | MQTT broker port                                                | 1883     |
| `tls`        | MQTT broker TLS enabled                                         | True     |
| `client_id`  | Client identifier for MQTT connection                           |          |
| `transport`  | Transport protocol, one of "tcp", "websockets", "unix"          | "tcp"    |
| `timeout`    | Timeout in seconds for operations                               |          |
| `username`   | Username for MQTT authentication                                |          |
| `password`   | Password for MQTT authentication                                |          |
| `cmnd_topic` | MQTT topic for sending commands to the Tasmota device           | Required |
| `stat_topic` | MQTT topic for receiving status updates from the Tasmota device | Required |

## API Reference

The tasmota power driver provides a `PowerClient` with the following API:

```{eval-rst}
.. autoclass:: jumpstarter_driver_power.client.PowerClient()
    :no-index:
    :members: on, off
```
jumpstarter-driver-ssh 0.7.4
SSH wrapper driver for Jumpstarter that provides SSH CLI functionality
Requires Python: >=3.11

# SSHWrapper Driver

`jumpstarter-driver-ssh` provides SSH CLI functionality for Jumpstarter, allowing you to run SSH commands with configurable defaults and pass-through arguments.

## Installation

```shell
pip3 install --extra-index-url https://pkg.jumpstarter.dev/simple/ jumpstarter-driver-ssh
```

## Configuration

Example configuration:

```yaml
export:
  ssh:
    type: jumpstarter_driver_ssh.driver.SSHWrapper
    config:
      default_username: "root"
      ssh_command: "ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null"
    children:
      tcp:
        type: jumpstarter_driver_network.driver.TcpNetwork
        config:
          host: "192.168.1.100"
          port: 22
```

## Usage

The SSH driver provides a CLI command that accepts all standard SSH arguments:

```bash
# Basic SSH connection (uses port forwarding by default)
j ssh

# SSH with direct TCP address
j ssh --direct

# SSH with specific user
j ssh -l myuser

# SSH with other flags
j ssh -i ~/.ssh/id_rsa

# Running a remote command
j ssh ls -la

```

## CLI Options

The SSH command supports the following options:

- `--direct`: Use direct TCP address (default is port forwarding)

All other arguments are passed directly to the SSH command. The driver uses the configured SSH command and default username from the driver configuration.

### Username Handling

The driver supports multiple ways to specify the username:

1. **`-l username` flag**: Explicit username specification (takes precedence)
2. **Default username**: Used when no username is specified in arguments

If no `-l` flag or `user@hostname` format is provided, the default username from the driver configuration will be used automatically.

## Dependencies

- `ssh`: Standard SSH client (usually pre-installed)

## API Reference

### Driver Methods

```{eval-rst}
.. autoclass:: jumpstarter_driver_ssh.client.SSHWrapperClient()
    :members: run
```


### Configuration Parameters

| Parameter        | Description                                                                                    | Type | Required | Default                                                                                    |
| ---------------- | ---------------------------------------------------------------------------------------------- | ---- | -------- | ------------------------------------------------------------------------------------------ |
| default_username | Default SSH username to use when no username is specified in the command                      | str  | no       | ""                                                                                         |
| ssh_command      | SSH command to use for connections                                                             | str  | no       | "ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o LogLevel=ERROR"      |

### Required Children

- `tcp`: A TcpNetwork driver instance that provides the connection details (host and port)
jumpstarter-driver-snmp 0.7.4
SNMP driver
Requires Python: >=3.11

# SNMP driver

`jumpstarter-driver-snmp` provides functionality for controlling power via
SNMP-enabled PDUs (Power Distribution Units).

## Installation

```{code-block} console
:substitutions:
$ pip3 install --extra-index-url {{index_url}} jumpstarter-driver-snmp
```

## Configuration

Example configuration:

```yaml
export:
  power:
    type: jumpstarter_driver_snmp.driver.SNMPServer
    config:
      host: "pdu.mgmt.com"
      user: "labuser"
      plug: 32
      port: 161
      oid: "1.3.6.1.4.1.13742.6.4.1.2.1.2.1"
      auth_protocol: "NONE"
      auth_key: null
      priv_protocol: "NONE"
      priv_key: null
      timeout: 5.0
```

### Config parameters

| Parameter     | Description                                         | Type  | Required | Default                           |
| ------------- | --------------------------------------------------- | ----- | -------- | --------------------------------- |
| host          | Hostname or IP address of the SNMP-enabled PDU      | str   | yes      |                                   |
| user          | SNMP v3 username                                    | str   | yes      |                                   |
| plug          | PDU outlet number to control                        | int   | yes      |                                   |
| port          | SNMP port number                                    | int   | no       | 161                               |
| oid           | Base OID for power control                          | str   | no       | "1.3.6.1.4.1.13742.6.4.1.2.1.2.1" |
| auth_protocol | Authentication protocol ("NONE", "MD5", "SHA")      | str   | no       | "NONE"                            |
| auth_key      | Authentication key when auth_protocol is not "NONE" | str   | no       | null                              |
| priv_protocol | Privacy protocol ("NONE", "DES", "AES")             | str   | no       | "NONE"                            |
| priv_key      | Privacy key when priv_protocol is not "NONE"        | str   | no       | null                              |
| timeout       | SNMP timeout in seconds                             | float | no       | 5.0                               |

## API Reference

```{eval-rst}
.. autoclass:: jumpstarter_driver_snmp.client.SNMPServerClient()
   :members:
   :show-inheritance:
```

### Examples

Power cycling a device:
```python
snmp_client.cycle(wait=3)
```

Basic power control:
```python
snmp_client.off()
snmp_client.on()
```

Using the CLI:
```shell
j power on
j power off
j power cycle --wait 3
jumpstarter-driver-probe-rs 0.7.4
rust probe-rs driver for jumpstarter
Requires Python: >=3.11

# probe-rs driver

`jumpstarter-driver-probe-rs` provides functionality for remote debugging and
flashing of embedded devices using the [probe-rs](https://probe.rs) tools.

## Installation

```{code-block} console
:substitutions:
$ pip3 install --extra-index-url {{index_url}} jumpstarter-driver-probe-rs
```

## Configuration

Example configuration:

```yaml
export:
  probe:
    type: jumpstarter_driver_probe_rs.driver.ProbeRs
    config:
      probe: "2e8a:000c:5798DE5E500ACB60"
      probe_rs_path: "/home/majopela/.cargo/bin/probe-rs"
      chip: "RP2350"
      protocol: "swd"
      connect_under_reset: false
```

### Config parameters

| Parameter           | Description                                                    | Type            | Required | Default  |
| ------------------- | -------------------------------------------------------------- | --------------- | -------- | -------- |
| probe               | The probe id, can be in VID:PID format or VID:PID:SERIALNUMBER | str             | no       |          |
| probe_rs_path       | The path to the probe-rs binary                                | str             | no       | probe-rs |
| chip                | The target chip                                                | str             | no       |          |
| protocol            | The target protocol                                            | "swd" or "jtag" | no       |          |
| connect_under_reset | Connect to the target while asserting reset                    | bool            | no       | false    |

## API Reference

```{eval-rst}
.. autoclass:: jumpstarter_driver_probe_rs.client.ProbeRsClient()
    :members:
```

### CLI

The probe driver client comes with a CLI tool that can be used to interact with
the target device.
```
jumpstarter ⚡ local ➤ j probe
Usage: j probe [OPTIONS] COMMAND [ARGS]...

  probe-rs client

Options:
  --help  Show this message and exit.

Commands:
  download  Download a file to the target
  erase     Erase the target, this is a slow operation.
  info      Get target information
  read      read from target memory
  reset     Reset the target
```
jumpstarter-driver-http 0.7.4
Exporter HTTP service driver
Requires Python: >=3.11

# HTTP driver

`jumpstarter-driver-http` provides functionality for HTTP communication.

## Installation

```{code-block} console
:substitutions:
$ pip3 install --extra-index-url {{index_url}} jumpstarter-driver-http
```

## Configuration

Example configuration:

```yaml
export:
  http:
    type: jumpstarter_driver_http.driver.HttpServer
    config:
      root_dir: "/var/www"
      host: "0.0.0.0"
      port: 8080
      timeout: 600
      remove_created_on_close: true  # Clean up temporary files on close
```

### Config parameters

| Parameter               | Description                                                      | Type | Required | Default           |
| ----------------------- | ---------------------------------------------------------------- | ---- | -------- | ----------------- |
| root_dir                | Root directory for serving files                                 | str  | no       | "/var/www"        |
| host                    | IP address to bind the server to                                 | str  | no       | None (auto-detect)|
| port                    | Port number to listen on                                         | int  | no       | 8080              |
| timeout                 | Request timeout in seconds                                       | int  | no       | 600               |
| remove_created_on_close | Automatically remove created files/directories when driver closes| bool | no       | true              |

### File Management

The internal HTTP server driver automatically tracks files and directories created during the session. When `remove_created_on_close` is enabled (default), all tracked resources are cleaned up when the driver closes.

## API Reference

Add API documentation here.