semvec/pypi-packages huggingface dataset:
python-einsum 0.0.1
Simple, readable Einstein Summation in Python.
Requires Python: >=3.8
Keywords: ai, einsum, numpy, einstein, summation, shape, tensor, matrix, sum, notation

# Einsum

Simple, readable [Einstein Summation](https://en.wikipedia.org/wiki/Einstein_notation) in Python.

```bash
# Install
pip install python-einsum
```

## Simple Example

```python
from einsum import Einsum
import numpy as np

tensorAb = np.ones((2, 3))  # ab
tensorBd = np.ones((3, 4))  # bd
tensorDc = np.ones((4, 5))  # dc
einsumOp = Einsum("(ab,(bd,dc->bc)->ac)", tensorAb, tensorBd, tensorDc)
```

## Features

- Easy to Read and Understand
- Supports a variety of Notations

## Development

```bash
# Clone and install
git clone https://github.com/guilt/einsum
cd einsum
pip install -e ".[dev]"

# Run tests
python -m unittest discover tests/ -v
```

## License

MIT License. See [License](LICENSE.md) for details.

## Feedback

Made with ❤️ by [Vibe coding](https://en.wikipedia.org/wiki/Vibe_coding).

* Authors: [Grok 3.0](https://grok.com/), [Claude Sonnet 4](https://anthropic.com/) and [Karthik Kumar Viswanathan](https://github.com/guilt)
* Web   : http://karthikkumar.org
* Email : me@karthikkumar.org
pywaykit 1.2.1
Whatsapp Automation package
Requires Python: >=3.6

# pywaykit

**Wayland-compatible WhatsApp Web automation inspired by pywhatkit**  
`pywaykit` enables programmatic WhatsApp messaging via browser automation and system-level input simulation using `Playwright` and `ydotool`.  
Designed for Linux systems — especially Wayland — where traditional GUI automation tools do not work.

---

## Features

- Send WhatsApp messages from Python
- Schedule messages for a specific time
- Silent message delivery using browser events
- Extract chat messages from loaded WhatsApp page
- Persistent login via Firefox profile

---

## Installation

Install with pip:

```bash
pip install pywaykit
```

Install Playwright's browser binaries:

```bash
playwright install firefox
```

---

## ydotool Setup (Required)

`ydotool` is used for input simulation under Wayland.  
You must perform the following setup steps:

### 1. Add your user to the input group:

```bash
sudo usermod -aG input $USER
```

### 2. Create a udev rule (script provided in the repo):

```bash
bash initial.sh
```

**initial.sh**
```bash
#!/bin/bash

sudo touch /etc/udev/rules.d/99-uinput.rules
echo "Created udev rule at /etc/udev/rules.d/99-uinput.rules"

sudo bash -c 'echo KERNEL=="uinput", GROUP="input", MODE="0660" > /etc/udev/rules.d/99-uinput.rules'

echo "Reloading Udev rules."
sudo udevadm control --reload-rules
sudo udevadm trigger

echo "Execution Completed."
```

---

## Usage

### Send a WhatsApp Message

```python
from pywaykit import send_msg

send_msg(
    phone_no="91xxxxxxxxxx",
    message="Hello from pywaykit",
    silent=False,
    scheduled="14:45:00",  # Optional (HH:MM:SS)
    instant=5,             # Optional delay after send
    log=True
)
```

### Extract Messages from Chat

```python
from pywaykit import read_wmsg

stored_text, a_msgs, b_msgs = read_wmsg()
```

### Load WhatsApp Chat (No Message Sent)

```python
from pywaykit import get_message_data

get_message_data(phone_no="+91xxxxxxxxxx", message=" ") # here the message arg does almost nothing so keep it as an empty string.
```

---

## Notes

- Works only on Linux with Firefox.
- First run requires QR login (saved for future runs).
- Feel free to contribute.
---

## If you like this project, give this repo a ⭐ !
canigeta 0.0.1
Helpful decorators for the requests library. Allows you to return typed REST responses.
Requires Python: >=3.11

# Can I Get A (canigeta)

`canigeta` makes getting typed REST responses via the requests library easy.

## Example

```
# Simple example of a typed return from a REST endpoint 
# This endpoint returns {'message': 'Hello, World!'} JSON.
from dataclasses import dataclass
import requests
from canigeta import response

@dataclass
class HelloData:
    message: str

@response.as_type(HelloData)
def get_hello() :
    return requests.get(url = "http://127.0.0.1:5000")

# HelloData(message='Hello, World!')
```