semvec/pypi-packages huggingface dataset:
kha-cli 1.1.2
kha
Requires Python: >=3.8

# kha

## Dev

```shell
virtualenv --python=python3.8 venv
source venv/bin/activate
pip install --editable .
```

## Publish to PyPI

```shell
python setup.py sdist --formats=zip --owner=root --group=root
python setup.py install

twine upload dist/*
```
fastapi-startup 0.2.1
An opinionated startup extension for FastAPI.
Requires Python: >=3.6.1

# FastAPI Startup

An opinionated startup extension for FastAPI.

## Usage

```python
from fastapi_startup import FastAPIStartup

app = FastAPIStartup(
    site_name="My site",
    swagger_favicon_url="https://example.com/favicon.ico",
)
```

## Opinions

This is an opinionated way to start FastAPI:

- No ReDoc.
- Swagger is hosted at the `root_path`.
- Swagger UI oAuth2 redirect URL is `/oauth2-redirect`.
- Endpoint `/ping` responds with the plain text response "pong".
- Mounts static directory at `/static` (default).
- Title and site name in Swagger
- Assets (expects these files in the directory `./static/assets`):
  - Favicon - `favicon.ico`.
  - Swagger CSS - `swagger-ui.min.css`.
  - Swagger Bundle JS - `swagger-ui-bundle.min.js`.

## Config

Configure FastAPI as usual. Extra arguments (that can be accessed from `app.extra`):

| Name | Default | Description |
| --- | --- | --- |
| `site_name` | Swagger UI | Displayed in the Swagger title, with `app.title`. |
| `static_dir` | static | Where to mount the static directory. Disabled if value is falsy. |
| `swagger_css_url` | /assets/swagger-ui.min.css | URL to Swagger UI CSS file. |
| `swagger_favicon_url` | /assets/favicon.ico | URL to your Favicon. |
| `swagger_js_url` | /assets/swagger-ui-bundle.min.js | URL to Swagger JS bundle file. |

*If the `swagger_` arguments starts with a "/" and static is mounted, they will be loaded from "static", else it will be treated as a URL.*
JCryptor 0.1.70
JCryptor: The Encryptor and Decryptor Module
Keywords: encrypt,decrypt,jcryptor

# JCryptor

* `JCryptor` is used to `Encrypt` and `Decrypt`.
* `JCryptor` latest version [0.1.70](https://github.com/ScripNewbie/JCryptor/tree/main)


# How to Use?

## Encrypting:
### Code
```python
from jcryptor import JCryptor

cryptor = JCryptor()

encrypt = cryptor.encrypt_text(original_text, print_it=True)
```
### Result
```python
>> <[\\o Vo|\@
```

## Decrypting:
### Code
```python
from jcryptor import JCryptor

cryptor = JCryptor()
original_text = "Hello World"
encrypt = cryptor.encrypt_text(original_text)
decrypt = cryptor.decrypt_text(encrypt, print_it=True)
```
### Result
```
>> Hello World
```
 
# How to install?
 
**On Windows:**
```
$ pip install JCryptor
$ pip install jcryptor==0.1.50
```
aqara-msg-push 1.0.2
Aqara Message Push SDK

# aqara_msg_push
SDK for Aqara Message Push

[![CodeFactor](https://www.codefactor.io/repository/github/moff4/aqara_msg_push/badge)](https://www.codefactor.io/repository/github/moff4/aqara_msg_push)

## Package has
 - Pydantic models for Message Push Format
 - function for mapping custom json from message queue to Pydantic model 
 - Simple consumer for RocketMQ with Aqara confiquration

## Install

Library installs with command:

```bash
pip install aqara-msg-push
```

For consuming you will also need: 
- [rocketmq-client-python](https://github.com/apache/rocketmq-client-python) - tiny python lib - python wrapper for cpp lib
- librocketmq - cpp lib (for installation guide check [rocketmq-client-python README.md](https://github.com/apache/rocketmq-client-python))


## Example of Usage:

```python
from aqara_msg_push import MessageConsumer, TopLevelMessage
from rocketmq.client import ReceivedMessage, ConsumeStatus

# Your params from https://developer.aqara.com/console/overview
ADDRESS = 'some-broker1.aqara.com:9876'
TOPIC = '99...99' 
GROUP_ID = '99..ce'
ACCESS_KEY = 'K....'
SECRET_KEY = 'nt..jg'

KEY_ID = ACCESS_KEY


class MyMessageConsumer(MessageConsumer):

    def callback(self, obj: TopLevelMessage, raw_msg: ReceivedMessage) -> ConsumeStatus:
        print(type(obj), obj.data)
        return ConsumeStatus.CONSUME_SUCCESS


MyMessageConsumer(
    group_id=GROUP_ID,
    access_key=ACCESS_KEY,
    secret_key=SECRET_KEY,
    topic=TOPIC,
    address=ADDRESS,
).consume()


"""
Output:

<class 'aqara_msg_push.schema.toplevel.DeviceAttributeMessage'> [DeviceStateMessage(raw_time='1659704748378', subject_id='lumi.9999999', resource_id='4.1.85', value='1', status_code=<TriggerResult.SUCCESS: 0>, trigger_source=TriggerSource(raw_time='1659704748', type=<TriggerType.CLOUD_REMOTE_COMMAND_CONTROL: 4>, id=None), attach=None)]
<class 'aqara_msg_push.schema.toplevel.DeviceAttributeMessage'> [DeviceStateMessage(raw_time='1659704750046', subject_id='lumi.9999999', resource_id='4.1.85', value='0', status_code=<TriggerResult.SUCCESS: 0>, trigger_source=TriggerSource(raw_time='1659704749', type=<TriggerType.CLOUD_REMOTE_COMMAND_CONTROL: 4>, id=None), attach=None)]

"""
```