semvec/pypi-packages huggingface dataset:
sng-tk 1.2.3
SNG development Tools Kit

# SNG Tools Kit

SNG开发套件，内部 python 开发通用接口。

## 模块列表

- General
- Log
- Config
- MQTTClient

引入示例：

```python
import sng_tk as stk
```

## 使用方法

首先安装：

```shell
python3 setup.py install
```

如果需要更新也可在代码更新后执行上面这行命令。

### 通用模块(General)

示例：

```python
import sng_tk as stk

# 打印公司Logo
stk.general.print_header()
# 处理路径中特殊的格式（目前可以将~解析为主目录)
print(stk.general.parse_path("~/sng/log"))
```

### 日志模块(Log)

示例：

```python
import sng_tk as stk

log = stk.Log("sng-tools-kit")
log.info("normal log")
log.debug("debug log")
log.warning("warning log")
log.error("error log")
log.critical("critical log")
```

上面的示例需要在`/etc/sng`中存在`sng-tools-kit.yaml`配置文件，其中包含以下配置：

> 或者也可传入一个dict类型的数据作为配置文件，但要求必须与以下文件保持一致。

```yaml
# 日志模块相关配置
Log:

  # 关闭日志输出（不建议设置为true），若该项设置为true，则完全关闭日志输出，下面的所有配置也无法生效。
  Close: false

  # 日志输出等级，有以下选项，从上到下越来越高：
  #    0. DEBUG: 调试日志
  #    1. INFO: 普通日志（默认）
  #    2. WARNING: 警告日志
  #    3. ERROR: 错误日志
  #    4. CRITICAL: 严重错误日志
  # 系统将输出指定等级及其更高等级的日志。
  Level: 1

  # 日志文件统一的输出目录，其中会包含来自各个模块的日志。
  # 需要注意的是，程序必须拥有这里提供的路径的写权限，否则程序将无法正常运行。
  Directory: "~/sng/log"

  # 日志的最大尺寸，单位：MB
  MaxSize: 10
```

### 配置文件模块(Config)

示例：

```python
import sng_tk as stk

config_data = stk.Config("sng-tools-kit").read()
print("Config test:", config_data["config"]["test"])
```

上面的示例需要在`/etc/sng`中存在`sng-tools-kit.yaml`配置文件，其中包含以下配置：

```yaml
config:
  test: "config read success!"
```

### MQTT客户端模块(MQTTClient)

示例：

```python
import time
from sng_tk import Config as SConfig
from sng_tk import Log as SLog
from sng_tk import MQTTClient as SMQTTClient

log = SLog("sng-tools-kit-example")
conf = SConfig("sng-tools-kit-example").read()
mqtt = SMQTTClient(conf["mqtt"], log)


def on_connect(client, userdata, flags, rc):
    print(f"mqtt connect success!{flags}")


def on_subscribe(client, userdata, mid, granted_qos):
    print(f"subscribe qos: {granted_qos[0]}")


def on_message(client, userdata, message):
    print(message.payload.decode("utf-8"))


# 绑定事件
mqtt.set_connect_event(on_connect)
mqtt.set_subscribe_event(on_subscribe)
mqtt.set_message_event(on_message)

# 连接、订阅、执行
mqtt.connect()
mqtt.subscribe("abc")
mqtt.start()

# 防止主线程退出
while True:
    time.sleep(10)
```

配置文件示例可以在`config/sng-tools-kit-example.yaml`中找到。

例如：
```yaml

mqtt:
  # 中转站配置
  broker:
    ip: "127.0.0.1"
    port: 1883
  username: "sng"
  password: "sng"
  client_id: "FASTAPI_SERVER_S2020_SN01"
  tls_enable: false
  TSL:
    ca_certs: '~/SNG-Project/data-access-server/conf/ca/ca.crt'
    cert_file: '~/SNG-Project/data-access-server/conf/ca/client.crt'
    key_file: '~/SNG-Project/data-access-server/conf/ca/client.key'
```