semvec/pypi-packages huggingface dataset:
akipy 1.3.5
A Python library wrapper for Akinator
Requires Python: <4.0,>=3.12

# akipy

[![PyPI version](https://img.shields.io/pypi/v/akipy?color=blue)](https://pypi.org/project/akipy/)
[![Downloads](https://img.shields.io/pypi/dm/akipy?color=orange)](https://pypi.org/project/akipy/)
[![Python Version](https://img.shields.io/pypi/pyversions/akipy)](https://pypi.org/project/akipy/)
[![License](https://img.shields.io/github/license/advnpzn/akipy)](LICENSE)
[![Repo Size](https://img.shields.io/github/repo-size/advnpzn/akipy?color=yellow)](https://github.com/advnpzn/akipy)

A Python wrapper library for the Akinator game API. Akinator is the popular web-based game that guesses characters you're thinking of by asking a series of questions. This library allows you to integrate Akinator's functionality into your Python applications with both synchronous and asynchronous support.

## Table of Contents

- [Features](#features)
- [Quick Links](#quick-links)
- [Installation](#installation)
- [Usage](#usage)
- [Contributing](#contributing)

## Features

- Both synchronous and asynchronous API support
- Context manager support for automatic resource cleanup
- Type hints for better IDE support
- Comprehensive error handling with custom exceptions
- Multiple language support
- Child mode support

## Quick Links

- [PyPI Package](https://pypi.org/project/akipy/)
- [GitHub Repository](https://github.com/advnpzn/akipy)
- [Issues](https://github.com/advnpzn/akipy/issues)
- [Examples](examples/)

# Installation

`pip install akipy`

# Usage

There is both synchronous and asynchronous variants of `akipy` available.

Synchronous: `from akipy import Akinator`

Asynchronous: `from akipy.async_akinator import Akinator`

I'll provide a sample usage for synchronous usage of `Akinator`.
All the examples are also in the project's examples folder. So please check them out as well.

```python
import akipy

aki = akipy.Akinator()
aki.start_game()

while not aki.win:
    ans = input(str(aki) + "\n\t")
    if ans == "b":
        try:
            aki.back()
        except akipy.CantGoBackAnyFurther:
            pass
    else:
        try:
            aki.answer(ans)
        except akipy.InvalidChoiceError:
            pass

print(aki)
print(aki.name_proposition)
print(aki.description_proposition)
print(aki.pseudo)
print(aki.photo)
```

# Contributing

For contributing to this library, please check [CONTRIBUTING.md](CONTRIBUTING.md)
MetAromatic 1.7.0
MetAromatic algorithm
Requires Python: >=3.11

# Met-aromatic
Code for the following publications:
* Weber, D. S.; Warren, J. J. The Interaction between Methionine and Two Aromatic Amino Acids Is an Abundant
  and Multifunctional Motif in Proteins. _Arch. Biochem. Biophys._ **2019**, _672_, 108053.
* Weber, D. S.; Warren, J. J. A Survey of Methionine-Aromatic Interaction Geometries in the Oxidoreductase
  Class of Enzymes: What Could Met-Aromatic Interactions be Doing Near Metal Sites? _J. Inorg. Biochem._
**2018**, _186_, 34-41.

See [MetAromatic](https://github.com/dsw7/MetAromatic) for more information.
downpyment 0.1.1
Utilities for mortgage analysis and visualization
Requires Python: >=3.10

# Downpyment


Just a tiny lib to help with mortgage analysis and visualization in Python.

# Installation

You can install the package via pip:

```bash
pip install downpyment
```

# Usage
The central class is the mortgage one

```python
from downpyment.mortgage import Mortgage, Interest, YEARLY_INTEREST_SCALE, Investment
from downpyment.reporting import MortgageReport


mortgage = Mortgage(
    property_price=450_000,
    interest=Interest(rate=1.85, scale=YEARLY_INTEREST_SCALE, perc=True),
    n_steps=30,
    downpayment=0,
    tax_perc=8,
)
mortgage.simulate()
```

The main goal is to generate a report as follows: 
```python
ep_params = {
    "amount": 5_000,
    "pay_each": 12,
}
investment = Investment(
    initial_amount=120_000,
    step_contribution=ep_params["amount"] / ep_params["pay_each"],
    interest=Interest(rate=5.0, scale=YEARLY_INTEREST_SCALE, perc=True),
    tax_perc=20,
)


MortgageReport(mortgage).report(ep_params=ep_params, inflation_p=2.0, investment=investment)
```

This will generate a report like this one:

# Mortgage simulation with early payments
![Mortgage simulation](docs/mortgage_simulation.png)
![Mortgage simulation with inflation](docs/mortgage_simulation_inflation.png)

# Mortgage vs investment curves
![Mortgage vs investment](docs/mortgage_vs_investment.png)
![Mortgage vs investment with inflation](docs/mortgage_vs_investment_inflation.png)


Check the `scripts/simulate.py` file for a complete example.
tacit 0.1.0
A library for explicit data pipelines
Requires Python: >=3.13

# Tacit

A library for building explicit Data Pipelines.

Main features:

* Define input and output contracts as schemas
* Run validation over the contracts
* Use the schemas in the pipeline implementation


```python
import polars as pl
import tacit

class Iris(tacit.Schema):
    sepal_length: float  # TODO(alvaro): Specify min / max values
    sepal_width: float
    petal_length: float
    petal_width: float

# FIXME(alvaro): Add schema composition (maybe using inheritance? is there a different way?)
class IrisPrediction(tacit.Schema):
    sepal_length: float
    sepal_width: float
    petal_length: float
    petal_width: float
    custom_feature: float
    species: Literal["setosa", "versicolor", "virginica"]

def process_data(df: Iris) -> IrisPrediction:
    model = load_model()
    df = df.with_columns((pl.col(Iris.sepal_length) ** 2 / pl.col(Iris.petal_width)).alias(IrisPrediction.custom_feature))
    df = df.with_columns(pl.Series(IrisPrediction.custom_feature, model.predict(df))
    return df


def pipeline():
    raw_df = load_iris()
    df, errors = Iris.validate(df, strict=True)
    if errors:
        print(errors.pretty())
        return

    # At this point, `df` is guaranteed to be a Iris instance
    res_df = process_data(df)
    return res_df
```
venvcleaner 0.1.6
A GUI tool for cleaning up Python virtual environments (venv directories).
Requires Python: >=3.10

# Venv Cleaner

A simple GUI tool for cleaning up old or unused Python virtual environments (`venv` directories).

## How to Use

The easiest way to run Venv Cleaner is using [uvx](https://docs.astral.sh/uv/guides/tools/):

```bash
uvx venvcleaner
```

You can also specify a target directory:

```bash
uvx venvcleaner /path/to/target-directory
```

If you are using Linux, you will need to build wxPython via pip. Please see [Building wxPython for Linux via Pip](https://wxpython.org/blog/2017-08-17-builds-for-linux-with-pip/) and [wxWidgets for GTK installation](https://docs.wxwidgets.org/3.2/plat_gtk_install.html).

Alternatively, on [some Linux systems](https://wxpython.org/pages/downloads/index.html), you can use the `-f` (`--find-links`) option to specify [the download URL of wxPython package](https://extras.wxpython.org/wxPython4/extras/linux/):

```bash
# for Ubuntu 24.04
uvx -f https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-24.04 venvcleaner
```

If you want to install to the persistent environment:

```bash
uv tool install venvcleaner@latest

# for Ubuntu 24.04
uv tool install -f https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-24.04 venvcleaner@latest

# run Venv Cleaner
venvcleaner
```

![screenshot](https://raw.githubusercontent.com/yamakox/VenvCleaner/main/screenshot.png)

## Features

- Scans the target directory for virtual environments (`.venv` directories containing a `pyvenv.cfg` file).
- You can change or refresh the target directory with the __Select...__ or __Refresh__ buttons.
- Choose which venvs to clean using the selection list.
  - __Select All__ selects all detected venvs.
  - __Select None__ clears the selection.
- __Copy Paths__ copies the paths of selected venvs to your clipboard.
You can paste them into a terminal to run shell commands manually. For example:

```bash
ls /path/to/project-1/.venv "/path/to/project 2/.venv"
rm -r /path/to/project-1/.venv "/path/to/project 2/.venv"
```

- __Cleanup Venvs__ deletes the selected venv directories.
Before using this button, you must check the agreement box:

> I agree to take responsibility for my actions.

## License

This software is distributed under the terms of the [MIT License](https://raw.githubusercontent.com/yamakox/VenvCleaner/main/LICENSE).
simple-http-fileserver 0.1.1
A simple Python HTTP file server for upload and download, with optional GUI.
Requires Python: >=3.8
Keywords: http, file-server, upload, download, teaching

# Start
- This is learning project tested in Kali
- In Kali or any Linux, use this command to install
    - `pip install simple-http-fileserver`
- `simple-http-fileserver-cli.py` is the no GUI version.
- While `simple-http-fileserver.py` is with GUI.
- Tested in Kali and Windows10/11

# Intro
This Tool will run python based http GET and Post webserver.

Usage:
1. The server will list (GET) the content of the current directory where the app located:
    Browse the IP of the machine with the selected port `http://192.168.8.10:80`
    Or you can use one of the following in linux: \
    `wget http://192.168.8.10:80/` \
    Or:
    `curl http://192.168.8.10:80/`

1. The server will accept transferred files (POST) 
    and save them to current directory where the app located.
    You can use one of the following: \
    - Using curl \
    `curl.exe -X POST -H "X-Filename: nmap.exe" --data-binary "@C:\Users\kaled\Downloads\nmap-7.98-setup.exe" http://192.168.8.10:80/` \
    you will get `nmap.exe` after the upload. \
    Where: 
        - `-X` Use the HTTP POST method (send data in the request body).
        - `-H` "X-Filename: nmap.exe". Add a custom HTTP header named X-Filename with value nmap.exe (your server reads this to pick the filename to save).
        - `--data-binary "@C:\Users\kaled\Downloads\nmap-7.98-setup.exe"` Send the exact bytes of that local file as the HTTP request body. The @ tells curl to read the file contents.
        - `http://192.168.8.10:80/` The destination URL (IP and port 80).

    - Using wget \
    `wget --method=POST --header="X-Filename: test.txt" --header="Content-Type: application/octet-stream" --body-file="C:\Users\kaled\Downloads\somefile.txt" "http://192.168.8.10:80/"` \
    Where: \
        - `--method=POST` sets the method to POST.
        - `--header=...` sends the custom X-Filename header.
        - `test.txt` the file name after transferring, it can be anything like `key.pem`.
        - `--body-file=somefile.txt` sends the file as raw binary.
        - `somefile.txt` the file name before transferring, it should be exact.

Created by Kaled Aljebur for learning purposes in teaching classes.