semvec/pypi-packages huggingface dataset:
aemuctrl 0.1.0
A lightweight Android Emulator Control library using ADB and PyAutoGUI
License: MIT
Requires Python: >=3.6

aemuctrl - README.md

# aemuctrl (v0.0.1)

A lightweight Python utility for controlling Android emulators and devices via ADB and PyAutoGUI. "aemuctrl" focuses on simplifying automation, screen management, and emulator-specific interactions.

## 📥 ADB Installation Guides

To use this library, you must have ADB (Android Debug Bridge) installed on your system. Please follow the tutorials below based on your operating system:

* **Windows Setup:** [Watch Installation Guide](https://youtu.be/JQrMvecOAeE?si=M1VjuHDDC2-NLDZ9)
* **macOS Setup:** [Watch Installation Guide](https://youtu.be/k58GSn3pRTY?si=1WiDM0bW9VJ-Sg_L)

---

## 🎮 Emulator Zoom Configuration (CRITICAL)

The zoom functions in **aemuctrl** work by interacting with the emulator's software shortcuts. To prevent system-level conflicts and ensure scripts run correctly, you **must** manually assign the following hotkeys in your emulator settings (BlueStacks, Nox, MeMu, etc.):

* **Zoom IN:** Assign the letter **"B"**
* **Zoom OUT:** Assign the letter **"S"**

> **Note:** These specific assignments are required for `zoom_in()`, `zoom_out()`, `human_zoom_in()`, and `human_zoom_out()` to function.

---

## 🚀 Key Features

* **Smart Connectivity:** Automatically scans and connects to common emulator ports (5554-5565, 62001, 21503, etc.).
* **Fast Screen Capture:** Uses `exec-out` for high-speed screenshot transfer without writing to the device's internal storage first.
* **Safe Text Entry:** Automatically replaces spaces with `%s` to ensure ADB inputs are delivered correctly.
* **Human-like Motion:** Includes zoom functions with varied delays to mimic human behavior and avoid detection.

---

## 📖 Basic Usage

### 1. Connecting
```python
import aemuctrl

# Scans ports and connects to the first available emulator
device = aemuctrl.smart_connect_fallback()

2. Navigation & Touch
Python

aemuctrl.home()
aemuctrl.back()
aemuctrl.tap(x=500, y=500)
aemuctrl.swipe(100, 100, 500, 500, duration=300)

3. Screen & Apps
Python

# Launch an app by package name
aemuctrl.open_app("com.android.settings")

# Take a high-speed screenshot
aemuctrl.screenshot("view.png")

4. Zoom Control (Requires B/S Mapping)
Python

# Standard Zoom
aemuctrl.zoom_in() 

# Human-like natural zoom out (Uses 'S' key)
aemuctrl.human_zoom_out()

⚙️ Configuration

If your ADB executable is not in the system environment variables (PATH), update the ADB_PATH at the top of the file: ADB_PATH = "C:/path/to/adb.exe"
🛡️ License

Open-source utility for personal automation and development.
py-multicodec 1.0.0
Multicodec implementation in Python
License: MIT
Requires Python: <4.0,>=3.10
Keywords: multicodec, multiformats, CID, IPFS, IPLD

py-multicodec
-------------

.. image:: https://img.shields.io/pypi/v/py-multicodec.svg
        :target: https://pypi.python.org/pypi/py-multicodec

.. image:: https://github.com/multiformats/py-multicodec/actions/workflows/tox.yml/badge.svg?branch=master
        :target: https://github.com/multiformats/py-multicodec/actions/workflows/tox.yml

.. image:: https://readthedocs.org/projects/py-multicodec/badge/?version=stable
        :target: https://py-multicodec.readthedocs.io/en/stable/?badge=stable
        :alt: Documentation Status


`Multicodec <https://github.com/multiformats/multicodec>`_ implementation in Python

``multicodec`` *is a self-describing multiformat*, it wraps other formats with a tiny bit of self-description.

A multicodec identifier is both a varint and the code identifying the following data, this means that the most
significant bit of every multicodec code is reserved to signal the continuation.

You can check `the table here <https://github.com/multiformats/multicodec/blob/909e183da65818ecd1e672904980e53711da8780/table.csv>`_ for the list of supported codecs by ``py-multicodec``.

* Free software: MIT license
* Documentation: https://py-multicodec.readthedocs.io.
* Python versions: 3.10, 3.11, 3.12, 3.13, 3.14


Installation
============

.. code-block:: shell

    $ pip install py-multicodec


Sample Usage
============

.. code-block:: python

    >>> from multicodec import add_prefix, remove_prefix, get_codec
    >>> # adding a prefix to existing data
    >>> add_prefix('sha2-256', b'EiC5TSe5k00')
    b'\x12EiC5TSe5k00'
    >>> # removing prefix from prefixed data
    >>> remove_prefix(b'\x12EiC5TSe5k00')
    EiC5TSe5k00
    >>> # get codec used to prefix the prefixed data
    >>> get_codec(b'\x12EiC5TSe5k00')
    'sha2-256'

Code Management
===============

In addition to the basic prefix operations, py-multicodec provides type-safe codec
management functionality:

.. code-block:: python

    >>> from multicodec import Code, known_codes
    >>> from multicodec.code_table import SHA2_256, DAG_CBOR

    >>> # Use named constants for type-safe codec handling
    >>> code = SHA2_256
    >>> str(code)
    'sha2-256'
    >>> int(code)
    18

    >>> # Create Code from string (name or hex)
    >>> code = Code.from_string("sha2-256")
    >>> code = Code.from_string("0x12")  # hex also works

    >>> # List all known codecs
    >>> all_codes = known_codes()
    >>> len(all_codes)
    460

Updating the lookup table
==========================

Updating the lookup table is done with a script. The source of truth is the
`multicodec default table <https://github.com/multiformats/multicodec/blob/master/table.csv>`_.
Update the table with running:

.. code-block:: shell

    $ curl -X GET https://raw.githubusercontent.com/multiformats/multicodec/master/table.csv | ./tools/update-table.py