semvec/pypi-packages huggingface dataset:
captcha-operation 0.0.2
数字运算验证码
Requires Python: >=3.12
Keywords: number operation captcha

# captcha_operation
数字运算验证码

# Install

```
pip install captcha-operation
```

# Test

```python
from captcha_operation.operation import operation
```

## bytes

```python
filepath = os.path.join(os.path.dirname(__file__), 'captcha.png')
result = operation(filepath)
```

## Image

```python
filepath = os.path.join(os.path.dirname(__file__), 'captcha.png')
result = operation(Image.open(filepath))
```

## base64 str

```python
result = operation('iVBORw0KGgoAAAANSUhEUgAAAIcAAAAoCAIAAxxx')
```
vkmax 1.0.2
Python client for MAX messenger
Requires Python: >=3.9
Keywords: vk, vkapi, max-messenger, vkmax, oneme

# vkmax
Python user client for VK MAX messenger (OneMe)

## What is VK MAX?
MAX (internal code name OneMe) is another project by the Russian government in an attempt to create a unified domestic messaging platform with features such as login via the government services account (Gosuslugi/ESIA).  
It is developed by VK Group.  

## What is `vkmax`?
This is a client library for MAX, allowing to create userbots and custom clients.  
An example of a simple userbot that retrieves weather can be found at [examples/weather-userbot](examples/weather-userbot).

## Installation
The package is [available on PyPI](https://pypi.org/project/vkmax/)  
`pip install vkmax`

## Usage
More in [examples](examples/)
```python
import asyncio
import logging

import requests
import sys

from vkmax.client import MaxClient
from vkmax.functions.messages import edit_message

from pathlib import Path


async def get_weather(city: str) -> str:
    response = requests.get(f"https://ru.wttr.in/{city}?Q&T&format=3")
    return response.text


async def packet_callback(client: MaxClient, packet: dict):
    if packet['opcode'] == 128:
        message_text: str = packet['payload']['message']['text']
        if message_text not in ['.info', '.weather']:
            return

        if message_text == ".info":
            text = "Userbot connected"

        elif ".weather" in message_text:
            city = message_text.split()[1]
            text = await get_weather(city)

        await edit_message(
            client,
            packet["payload"]["chatId"],
            packet["payload"]["message"]["id"],
            text
        )


async def main():
    client = MaxClient()

    await client.connect()

    login_token_file = Path('login_token.txt')

    if login_token_file.exists():
        login_token_from_file = login_token_file.read_text(encoding='utf-8').strip()
        try:
            await client.login_by_token(login_token_from_file)
        except:
            print("Couldn't login by token. Falling back to SMS login")

    else:
        phone_number = input('Enter your phone number: ')
        sms_login_token = await client.send_code(phone_number)
        sms_code = int(input('Enter SMS code: '))
        account_data = await client.sign_in(sms_login_token, sms_code)

        login_token = account_data['payload']['tokenAttrs']['LOGIN']['token']
        login_token_file.write_text(login_token, encoding='utf-8')

    await client.set_callback(packet_callback)

    await asyncio.Future()  # run forever


if __name__ == "__main__":
    asyncio.run(main())
```

- [Protocol description](docs/protocol.md)
- [Known opcodes](docs/opcodes.md)
pysectprop 0.2.1
Python Package for Section Properties
Requires Python: >=3.10

# pysectprop

Python Section Property Calculator

Section properties can be calculated used and displayed from standard section geometry inputs.

Example - Omega Section - test_omegasection.py:

``` python
#%%
# Import Dependencies
from IPython.display import display
from pysectprop.extruded import OmegaSection

#%%
# Create Section
omsect = OmegaSection(20.0, 1.6, 20.0, 1.6, 10.0, 1.6, rf=0.0, rl=0.0)

#%%
# Display Section Properties
display(omsect)

#%%
# Plot Section
ax = omsect.plot()
```

Output:

### Omega-Section

| h<sub>w</sub> (mm) | t<sub>w</sub> (mm) | w<sub>f</sub> (mm) | t<sub>f</sub> (mm) | w<sub>l</sub> (mm) | t<sub>l</sub> (mm) | r<sub>f</sub> (mm) | r<sub>l</sub> (mm) |
| :----------------: | :----------------: | :----------------: | :----------------: | :----------------: | :----------------: | :----------------: | :----------------: |
|               20.0 |                1.6 |               20.0 |                1.6 |               10.0 |                1.6 |                0.0 |                0.0 |

| A (mm<sup>2</sup>) | Ay (mm<sup>3</sup>) | Az (mm<sup>3</sup>) | c<sub>y</sub> (mm) | c<sub>z</sub> (mm) | Ayy (mm<sup>4</sup>) | Azz (mm<sup>4</sup>) | Ayz (mm<sup>4</sup>) |
| :----------------: | :-----------------: | :-----------------: | :----------------: | :----------------: | :------------------: | :------------------: | :------------------: |
|              117.8 |                   0 |                1178 |                0.0 |               10.0 |                11641 |                18471 |                    0 |

| I<sub>yy</sub> (mm<sup>4</sup>) | I<sub>zz</sub> (mm<sup>4</sup>) | I<sub>yz</sub> (mm<sup>4</sup>) | &theta;<sub>p</sub> (&deg;) | I<sub>yp</sub> (mm<sup>4</sup>) | I<sub>zp</sub> (mm<sup>4</sup>) |
| :-----------------------------: | :-----------------------------: | :-----------------------------: | :-------------------------: | :-----------------------------: | :-----------------------------: |
|                            6695 |                           11641 |                               0 |                         0.0 |                            6695 |                           11641 |

![](omegasection.svg)